12345678910111213141516171819202122232425262728293031323334353637383940 |
- //this is the IPLROM for the S-SMP coprocessor.
- //the S-SMP does not allow writing to the IPLROM.
- //all writes are instead mapped to the extended
- //RAM region, accessible when $f1.d7 is clear.
- const uint8_t SMP::iplrom[64] = {
- /*ffc0*/ 0xcd, 0xef, //mov x,#$ef
- /*ffc2*/ 0xbd, //mov sp,x
- /*ffc3*/ 0xe8, 0x00, //mov a,#$00
- /*ffc5*/ 0xc6, //mov (x),a
- /*ffc6*/ 0x1d, //dec x
- /*ffc7*/ 0xd0, 0xfc, //bne $ffc5
- /*ffc9*/ 0x8f, 0xaa, 0xf4, //mov $f4,#$aa
- /*ffcc*/ 0x8f, 0xbb, 0xf5, //mov $f5,#$bb
- /*ffcf*/ 0x78, 0xcc, 0xf4, //cmp $f4,#$cc
- /*ffd2*/ 0xd0, 0xfb, //bne $ffcf
- /*ffd4*/ 0x2f, 0x19, //bra $ffef
- /*ffd6*/ 0xeb, 0xf4, //mov y,$f4
- /*ffd8*/ 0xd0, 0xfc, //bne $ffd6
- /*ffda*/ 0x7e, 0xf4, //cmp y,$f4
- /*ffdc*/ 0xd0, 0x0b, //bne $ffe9
- /*ffde*/ 0xe4, 0xf5, //mov a,$f5
- /*ffe0*/ 0xcb, 0xf4, //mov $f4,y
- /*ffe2*/ 0xd7, 0x00, //mov ($00)+y,a
- /*ffe4*/ 0xfc, //inc y
- /*ffe5*/ 0xd0, 0xf3, //bne $ffda
- /*ffe7*/ 0xab, 0x01, //inc $01
- /*ffe9*/ 0x10, 0xef, //bpl $ffda
- /*ffeb*/ 0x7e, 0xf4, //cmp y,$f4
- /*ffed*/ 0x10, 0xeb, //bpl $ffda
- /*ffef*/ 0xba, 0xf6, //movw ya,$f6
- /*fff1*/ 0xda, 0x00, //movw $00,ya
- /*fff3*/ 0xba, 0xf4, //movw ya,$f4
- /*fff5*/ 0xc4, 0xf4, //mov $f4,a
- /*fff7*/ 0xdd, //mov a,y
- /*fff8*/ 0x5d, //mov x,a
- /*fff9*/ 0xd0, 0xdb, //bne $ffd6
- /*fffb*/ 0x1f, 0x00, 0x00, //jmp ($0000+x)
- /*fffe*/ 0xc0, 0xff //reset vector location ($ffc0)
- };
|