@@ -25,7 +25,9 @@ DEFINE_DEVICE_TYPE(SAMSUNG_K9F5608U0DJ, samsung_k9f5608u0dj_device, "samsung_k9f
25
25
DEFINE_DEVICE_TYPE(SAMSUNG_K9F5608U0B, samsung_k9f5608u0b_device, " samsung_k9f5608u0b" , " Samsung K9F5608U0B" )
26
26
DEFINE_DEVICE_TYPE(SAMSUNG_K9F2808U0B, samsung_k9f2808u0b_device, " samsung_k9f2808u0b" , " Samsung K9F2808U0B" )
27
27
DEFINE_DEVICE_TYPE(SAMSUNG_K9F1G08U0B, samsung_k9f1g08u0b_device, " samsung_k9f1g08u0b" , " Samsung K9F1G08U0B" )
28
+ DEFINE_DEVICE_TYPE(SAMSUNG_K9F1G08U0M, samsung_k9f1g08u0m_device, " samsung_k9f1g08u0m" , " Samsung K9F1G08U0M" )
28
29
DEFINE_DEVICE_TYPE(SAMSUNG_K9LAG08U0M, samsung_k9lag08u0m_device, " samsung_k9lag08u0m" , " Samsung K9LAG08U0M" )
30
+ DEFINE_DEVICE_TYPE(SAMSUNG_K9F2G08U0M, samsung_k9f2g08u0m_device, " samsung_k9f2g08u0m" , " Samsung K9F2G08U0M" )
29
31
30
32
nand_device::nand_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
31
33
: nand_device(mconfig, NAND, tag, owner, clock)
@@ -128,6 +130,23 @@ samsung_k9f1g08u0b_device::samsung_k9f1g08u0b_device(const machine_config &mconf
128
130
m_sequential_row_read = 0 ;
129
131
}
130
132
133
+ samsung_k9f1g08u0m_device::samsung_k9f1g08u0m_device (const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
134
+ : nand_device(mconfig, SAMSUNG_K9F1G08U0M, tag, owner, clock)
135
+ {
136
+ m_id_len = 4 ;
137
+ m_id[0 ] = 0xec ;
138
+ m_id[1 ] = 0xf1 ;
139
+ m_id[2 ] = 0x00 ;
140
+ m_id[3 ] = 0x15 ;
141
+ m_page_data_size = 2048 ;
142
+ m_page_total_size = 2048 + 64 ;
143
+ m_log2_pages_per_block = compute_log2 (64 );
144
+ m_num_pages = 64 * 1024 ;
145
+ m_col_address_cycles = 2 ;
146
+ m_row_address_cycles = 2 ;
147
+ m_sequential_row_read = 0 ;
148
+ }
149
+
131
150
samsung_k9lag08u0m_device::samsung_k9lag08u0m_device (const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
132
151
: nand_device(mconfig, SAMSUNG_K9LAG08U0M, tag, owner, clock)
133
152
{
@@ -146,6 +165,23 @@ samsung_k9lag08u0m_device::samsung_k9lag08u0m_device(const machine_config &mconf
146
165
m_sequential_row_read = 0 ;
147
166
}
148
167
168
+ samsung_k9f2g08u0m_device::samsung_k9f2g08u0m_device (const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
169
+ : nand_device(mconfig, SAMSUNG_K9F2G08U0M, tag, owner, clock)
170
+ {
171
+ m_id_len = 4 ;
172
+ m_id[0 ] = 0xec ;
173
+ m_id[1 ] = 0xda ;
174
+ m_id[2 ] = 0x00 ;
175
+ m_id[3 ] = 0x15 ;
176
+ m_page_data_size = 2048 ;
177
+ m_page_total_size = 2048 + 64 ;
178
+ m_log2_pages_per_block = compute_log2 (64 );
179
+ m_num_pages = 128 * 1024 ;
180
+ m_col_address_cycles = 2 ;
181
+ m_row_address_cycles = 3 ;
182
+ m_sequential_row_read = 0 ;
183
+ }
184
+
149
185
void nand_device::device_start ()
150
186
{
151
187
m_data_uid_ptr = nullptr ; // smartmed cruft
@@ -242,7 +278,6 @@ void nand_device::command_w(uint8_t data)
242
278
case 0x00 : // Read (1st cycle)
243
279
m_mode = SM_M_READ;
244
280
m_pointer_mode = SM_PM_A;
245
- m_page_addr = 0 ;
246
281
m_addr_load_ptr = 0 ;
247
282
break ;
248
283
case 0x01 :
@@ -255,7 +290,6 @@ void nand_device::command_w(uint8_t data)
255
290
{
256
291
m_mode = SM_M_READ;
257
292
m_pointer_mode = SM_PM_B;
258
- m_page_addr = 0 ;
259
293
m_addr_load_ptr = 0 ;
260
294
}
261
295
break ;
@@ -269,13 +303,11 @@ void nand_device::command_w(uint8_t data)
269
303
{
270
304
m_mode = SM_M_READ;
271
305
m_pointer_mode = SM_PM_C;
272
- m_page_addr = 0 ;
273
306
m_addr_load_ptr = 0 ;
274
307
}
275
308
break ;
276
309
case 0x80 : // Page Program (1st cycle)
277
310
m_mode = SM_M_PROGRAM;
278
- m_page_addr = 0 ;
279
311
m_addr_load_ptr = 0 ;
280
312
m_program_byte_count = 0 ;
281
313
memset (m_pagereg.get (), 0xff , m_page_total_size);
@@ -432,6 +464,10 @@ void nand_device::address_w(uint8_t data)
432
464
break ;
433
465
case SM_M_READ:
434
466
case SM_M_PROGRAM:
467
+ if (m_addr_load_ptr == 0 )
468
+ {
469
+ m_page_addr = 0 ;
470
+ }
435
471
if ((m_addr_load_ptr == 0 ) && (m_col_address_cycles == 1 ))
436
472
{
437
473
switch (m_pointer_mode)
0 commit comments