Gremlin 2
Basil the Great Mouse Detective
version 2.5: Mask
Some of the values are only approximate.
version 2:
PILOT standard 1024x[P 2670]
SYNC 10x[DP 630]
SPEED DETECTION 128x[DP 1260, DP 630]
DATA
bit 0 = DP 630
bit 1 = DP 1260
FLAG BYTE present
first two bytes - length of the block
PARITY WORD 16 bit ADD
dummy DP 1260
version 2.5:
PILOT standard 1024x[P 2670]
SYNC 10x[DP 690]
SPEED DETECTION 128x[DP 1380, DP 690]
DATA
bit 0 = DP 690
bit 1 = DP 1380
FLAG BYTE present
first two bytes - length of the block
MID SYNC - 4 bits 0001
at the 16B boundary of the remaining bytes and before the parity word
PARITY WORD 16 bit ADD
dummy DP 1380
Warning - due to the wrong concept of the loading routine (it detects the falling edge), all the double pulses must start with the EAR=0 pulse followed by the EAR=1 pulse!
The loading routine:DA20 DD2100B0 LD IX,+B000 DA24 11001B LD DE,+1B00 DA27 3E32 LD A,+32 DA29 CD56DA CALL DA56 DA2C 20F2 JR NZ,DA20 DA2E 2100B0 LD HL,+B000 DA31 110040 LD DE,+4000 DA34 01001B LD BC,+1B00 DA37 EDB0 LDIR DA39 DD21006A LD IX,+6A00 DA3D 11006C LD DE,+6C00 DA40 3E33 LD A,+33 DA42 CD56DA CALL DA56 DA45 20F2 JR NZ,DA39 DA47 DD2100E4 LD IX,+E400 DA4B 11001C LD DE,+1C00 DA4E 3E34 LD A,+34 DA50 CD56DA CALL DA56 DA53 20F2 JR NZ,DA47 DA55 C9 RET DA56 08 EX AF,AF' DA57 3E0C LD A,+0C DA59 D3FE OUT (+FE),A DA5B 2640 LD H,+40 DA5D 0632 LD B,+32 DA5F CDC5DA CALL DAC5 DA62 FE6E CP +6E DA64 38F7 JR C,DA5D DA66 10F7 DJNZ DA5F DA68 060A LD B,+0A DA6A CDC5DA CALL DAC5 DA6D FE6E CP +6E DA6F 30F7 JR NC,DA68 DA71 10F7 DJNZ DA6A DA73 97 SUB A DA74 D9 EXX DA75 67 LD H,A DA76 6F LD L,A DA77 57 LD D,A DA78 D9 EXX DA79 CDC5DA CALL DAC5 DA7C D9 EXX DA7D 5F LD E,A DA7E 19 ADD HL,DE DA7F 7C LD A,H DA80 D9 EXX DA81 10F6 DJNZ DA79 DA83 C604 ADD A,+04 DA85 32BCDA LD (DABC),A DA88 CDB6DA CALL DAB6 DA8B 08 EX AF,AF' DA8C B9 CP C DA8D C0 RET NZ DA8E CDB6DA CALL DAB6 DA91 5F LD E,A DA92 CDB6DA CALL DAB6 DA95 57 LD D,A DA96 FD210000 LD IY,+0000 DA9A CDB6DA CALL DAB6 DA9D DD7700 LD (IX+00),A DAA0 DD23 INC IX DAA2 FD09 ADD IY,BC DAA4 1B DEC DE DAA5 7A LD A,D DAA6 B3 OR E DAA7 C29ADA JP NZ,DA9A DAAA CDB6DA CALL DAB6 DAAD FDBD CP L DAAF C0 RET NZ DAB0 CDB6DA CALL DAB6 DAB3 FDBC CP H DAB5 C9 RET DAB6 0E01 LD C,+01 DAB8 CDC5DA CALL DAC5 DABB FE00 CP +00 DABD 3F CCF DABE CB11 RL C DAC0 D2B8DA JP NC,DAB8 DAC3 79 LD A,C DAC4 C9 RET DAC5 7B LD A,E DAC6 E601 AND +01 DAC8 C60C ADD A,+0C DACA D3FE OUT (+FE),A DACC 2E00 LD L,+00 DACE 2C INC L DACF DBFE IN A,(+FE) DAD1 A4 AND H DAD2 CACEDA JP Z,DACE DAD5 3E08 LD A,+08 DAD7 D3FE OUT (+FE),A DAD9 2C INC L DADA DBFE IN A,(+FE) DADC A4 AND H DADD C2D9DA JP NZ,DAD9 DAE0 7D LD A,L DAE1 C9 RET
A9C2 E0 DW #57E0 A9C4 00 DW #5B00 A9C6 00 DW #7000 A9C8 70 DW #7370 A9CA 00 DW #D000 A9CC 00 DW #DB00 A9CE 00 DW #5B00 A9D0 00 DW #5C00 A9D2 C0 DW #62C0 A9D4 A0 DW #69A0 A9D6 00 DW #6A00 A9D8 70 DW #6B70 A9DA EA6E DW #6EEA A9DC 0A6F DW #6F0A A9DE 00 DW #EB00 A9E0 C0 DW #F1C0 A9E2 80 DW #F380 A9E4 00F4 DW #F400 A9E6 0080 DW #8000 A9E8 B0 DW #A9B0 A9EA 00 DW #5C00 A9EC 00 DW #5E00 A9EE 18FC DW #FC18 A9F0 08 DW #0008 A9F2 F3 DI ;start A9F3 3118FC LD SP,+FC18 ;test 128/48 ;cls AA36 21D2AB LD HL,+ABD2 AA39 22CEAB LD (ABCE),HL AA3C 3E20 LD A,+20 AA3E CD13AB CALL AB13 AA41 C20000 JP NZ,0000,START AA44 21C6A9 LD HL,+A9C6 AA47 11C2A9 LD DE,+A9C2 AA4A 010800 LD BC,+0008 AA4D EDB0 LDIR AA4F 3E20 LD A,+20 AA51 CD13AB CALL AB13 AA54 C20000 JP NZ,0000,START ... AA76 21CEA9 LD HL,+A9CE AA79 11C2A9 LD DE,+A9C2 AA7C 012400 LD BC,+0024 AA7F EDB0 LDIR AA81 3E20 LD A,+20 AA83 CD13AB CALL AB13 AA86 C20000 JP NZ,0000,START ... AAB6 210040 LD HL,+4000 AAB9 22C2A9 LD (A9C2),HL AABC 21005B LD HL,+5B00 AABF 22C4A9 LD (A9C4),HL AAC2 3E20 LD A,+20 AAC4 CD13AB CALL AB13 AAC7 C20000 JP NZ,0000,START ... AB13 08 EX AF,AF' ;LD_BYTES AB14 3E0C LD A,+0C AB16 D3FE OUT (+FE),A AB18 2640 LD H,+40 AB1A 0632 LD B,+32 AB1C CDA2AB CALL ABA2 AB1F FE6E CP +6E AB21 38F7 JR C,AB1A AB23 10F7 DJNZ AB1C AB25 060A LD B,+0A AB27 CDA2AB CALL ABA2 AB2A FE6E CP +6E AB2C 30F7 JR NC,AB25 AB2E 10F7 DJNZ AB27 AB30 97 SUB A AB31 D9 EXX AB32 67 LD H,A AB33 6F LD L,A AB34 57 LD D,A AB35 D9 EXX AB36 CDA2AB CALL ABA2 AB39 D9 EXX AB3A 5F LD E,A AB3B 19 ADD HL,DE AB3C 7C LD A,H AB3D D9 EXX AB3E 10F6 DJNZ AB36 AB40 C604 ADD A,+04 AB42 3299AB LD (AB99),A AB45 3264AB LD (AB64),A AB48 3284AB LD (AB84),A AB4B CD93AB CALL AB93 AB4E 08 EX AF,AF' AB4F B9 CP C AB50 C0 RET NZ AB51 CD93AB CALL AB93 AB54 5F LD E,A AB55 CD93AB CALL AB93 AB58 57 LD D,A AB59 CDBFAB CALL ABBF AB5C FD210000 LD IY,+0000 AB60 CDA2AB CALL ABA2 AB63 FE00 CP +00 AB65 38F9 JR C,AB60 AB67 CD93AB CALL AB93 AB6A DD7700 LD (IX+00),A AB6D DD23 INC IX AB6F FD09 ADD IY,BC AB71 1B DEC DE AB72 7B LD A,E AB73 E60F AND +0F AB75 C267AB JP NZ,AB67 AB78 CDCCAB CALL ABCC AB7B 7A LD A,D AB7C B3 OR E AB7D C260AB JP NZ,AB60 AB80 CDA2AB CALL ABA2 AB83 FE00 CP +00 AB85 38F9 JR C,AB80 AB87 CD93AB CALL AB93 AB8A FDBD CP LY AB8C C0 RET NZ AB8D CD93AB CALL AB93 AB90 FDBC CP HY AB92 C9 RET AB93 0E01 LD C,+01 AB95 CDA2AB CALL ABA2 AB98 FE00 CP +00 AB9A 3F CCF AB9B CB11 RL C AB9D D295AB JP NC,AB95 ABA0 79 LD A,C ABA1 C9 RET ABA2 7B LD A,E ABA3 E601 AND +01 ABA5 C60C ADD A,+0C ABA7 D3FE OUT (+FE),A ABA9 2E00 LD L,+00 ABAB 2C INC L ABAC DBFE IN A,(+FE) ABAE A4 AND H ABAF CAABAB JP Z,ABAB ABB2 3E08 LD A,+08 ABB4 D3FE OUT (+FE),A ABB6 2C INC L ABB7 DBFE IN A,(+FE) ABB9 A4 AND H ABBA C2B6AB JP NZ,ABB6 ABBD 7D LD A,L ABBE C9 RET ABBF D9 EXX ABC0 21C4A9 LD HL,+A9C4 ABC3 22C0A9 LD (A9C0),HL ABC6 DD2AC2A9 LD IX,(A9C2) ABCA D9 EXX ABCB C9 RET ABCC D9 EXX ABCD CDD2AB CALL ABD2 ABD0 D9 EXX ABD1 C9 RET ABD2 DD7D LD A,LX ABD4 CB67 BIT 4,A ABD6 C0 RET NZ ABD7 DDE5 PUSH IX ABD9 E1 POP HL ABDA 11E0FF LD DE,+FFE0 ABDD 19 ADD HL,DE ABDE 25 DEC H ABDF 7C LD A,H ABE0 2F CPL ABE1 E607 AND +07 ABE3 200A JR NZ,ABEF ABE5 7D LD A,L ABE6 D620 SUB +20 ABE8 6F LD L,A ABE9 3804 JR C,ABEF ABEB 7C LD A,H ABEC C608 ADD A,+08 ABEE 67 LD H,A ABEF E5 PUSH HL ABF0 DDE1 POP IX ABF2 CB74 BIT 6,H ABF4 C0 RET NZ ABF5 DD210058 LD IX,+5800 ABF9 2100AC LD HL,+AC00 ABFC 22CEAB LD (ABCE),HL ABFF C9 RET AC00 2AC0A9 LD HL,(A9C0) AC03 DD7D LD A,LX AC05 BE CP (HL) AC06 C0 RET NZ AC07 23 INC HL AC08 DD7C LD A,HX AC0A BE CP (HL) AC0B C0 RET NZ AC0C 23 INC HL AC0D 5E LD E,(HL) AC0E 23 INC HL AC0F 56 LD D,(HL) AC10 23 INC HL AC11 22C0A9 LD (A9C0),HL AC14 D5 PUSH DE AC15 DDE1 POP IX AC17 C9 RET