; 仮想EMM ; 00H OUT A0-A7 ; 01H OUT A8-A15 ; 02H OUT A16-A23 ; 03H IN READ DATA (アドレスはオートインクリメント) BLNK EQU 0DA6h ; ?BLNK ORG 01200H ; START DI ; F3 ; SELECT IPL AND VRAM OUT (0E2h),A ; D3 E2 OUT (0E3H),A ; D3 E3 ; FILL VRAM LD HL,0D000H ; 21 00 D0 LD DE,0D001H ; 11 01 D0 LD BC,03E7H ; 01 E7 03 LD (HL),07BH ; 36 7B 5A? LDIR ; ED B0 LD HL,0D800H ; 21 00 D8 LD DE,0D801H ; 11 01 D8 LD BC,03E7H ; 01 E7 03 LD (HL),00H ; 36 00 LDIR ; ED B0 ; RESET EMM ADDRESS LD A,0H ; 3E 00 OUT (00H),A ; D3 00 OUT (01H),A ; D3 01 OUT (02H),A ; D3 02 ; RESET TIMER LD A,010H ; 3E 10 (7) LD (0E007H),A ; 32 07 E0 (13) LD A,01H ; 3E 01 (7) LD (0E008H),A ; 32 08 E0 (13) ; SET JMP ADDRESS LD IX,01280H ; DD 21 80 12 (14) ; SET SP POINTER TO V=204 LD IY,01599H ; FD 21 99 15 (14) ; WAIT VBLANK CALL BLNK ; CD A6 0D ; INIT C=3 LD C,03H ; 0E 03 (7) EXX ; D9 (4) LD C,03H ; 0E 03 (7) ; SKIP 4 LINES LD A,(0D000H) ; 3A 00 D0 (13) HBLANK #1 ADD HL,HL ; 29 (11) 66 CLOCKS > 63 ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) LD A,(0D000H) ; 3A 00 D0 (13) HBLANK #2 ADD HL,HL ; 29 (11) 66 CLOCKS > 63 ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) LD A,(0D000H) ; 3A 00 D0 (13) HBLANK #3 ADD HL,HL ; 29 (11) 66 CLOCKS > 63 ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) LD A,(0D000H) ; 3A 00 D0 (13) HBLANK #4 JP (IX) ; DD E9 (8) ; 1ライン辺りのクロック数 ; 165 + 63 = 228 ; ; #1 91+136 余り1 ; #2 83+144 余り1 ; #3 83+144 余り1 ; #4 83+144 余り1 ORG 01280H ; HDISP #1 (26+10+100=136) ; OUT ABCD ; EMM CDAB,PCM LD SP,IY ; FD F9 (10) SP <- [IY] POP HL ; E1 (10) LD SP,HL ; F9 (6) LD HL,0H ; 21 00 00 (10) DUMMY IN H,(C) ; ED 60 (12) READ ATTRIB IN L,(C) ; ED 68 (12) IN D,(C) ; ED 50 (12) IN E,(C) ; ED 58 (12) EXX ; D9 (4) IN H,(C) ; ED 60 (12) IN L,(C) ; ED 68 (12) IN D,(C) ; ED 50 (12) IN E,(C) ; ED 58 (12) ; HBLANK #1 (83) PUSH HL ; E5 (11) WRITE ATTRIB PUSH DE ; D5 (11) ADD HL,HL ; 29 (11) EXX ; D9 (4) PUSH HL ; E5 (11) PUSH DE ; D5 (11) IN A,(03H) ; DB 03 (11) GET PCM LD (0E004H),A ; 32 04 E0 (13) OUTPUT PCM ; HDISP #2 (9+11+124=144) ; OUT ABCDE ; EMM DEABC INC IYL ; FD 2C (9) IY = IY + 1 ADD HL,HL ; 29 (11) DUMMY IN H,(C) ; ED 60 (12) READ ATTR IN L,(C) ; ED 68 (12) IN D,(C) ; ED 50 (12) IN E,(C) ; ED 58 (12) EXX ; D9 (4) IN H,(C) ; ED 60 (12) IN L,(C) ; ED 68 (12) IN D,(C) ; ED 50 (12) IN E,(C) ; ED 58 (12) IN B,(C) ; ED 40 (12) IN C,(C) ; ED 48 (12) ; HBLANK #2 (83) PUSH HL ; E5 (11) WRITE ATTRIB PUSH DE ; D5 (11) PUSH BC ; C5 (11) EXX ; D9 (4) PUSH HL ; E5 (11) PUSH DE ; D5 (11) IN A,(03H) ; DB 03 (11) GET PCM LD (0E004H),A ; 32 04 E0 (13) OUTPUT PCM ; HDISP #3 (9+4+131=144) ; OUT ABCDE ; EMM DEABC INC IYL ; FD 2C (9) IY = IY + 1 NOP ; 00 (4) DUMMY IN H,(C) ; ED 60 (12) READ ATTRIB IN L,(C) ; ED 68 (12) IN D,(C) ; ED 50 (12) IN E,(C) ; ED 58 (12) EXX ; D9 (4) LD C,03H ; 0E 03 (7) IN H,(C) ; ED 60 (12) IN L,(C) ; ED 68 (12) IN D,(C) ; ED 50 (12) IN E,(C) ; ED 58 (12) IN B,(C) ; ED 40 (12) IN C,(C) ; ED 48 (12) ; HBLANK #3 (83) PUSH HL ; E5 (11) WRITE ATTRIB PUSH DE ; D5 (11) PUSH BC ; C5 (11) EXX ; D9 (4) PUSH HL ; E5 (11) PUSH DE ; D5 (11) IN A,(03H) ; DB 03 (11) GET PCM LD (0E004H),A ; 32 04 E0 (13) OUTPUT PCM ; HDISP #4 (37+107=144) ; OUT ABCD ; EMM CDAB LD D,(IY+0) ; FD 56 00 (19) GET NEXT ADDR LD IXH,D ; DD 62 (9) INC IYL ; FD 2C (9) IY = IY + 1 IN H,(C) ; ED 60 (12) READ ATTRIB IN L,(C) ; ED 68 (12) IN D,(C) ; ED 50 (12) IN E,(C) ; ED 58 (12) EXX ; D9 (4) LD C,03H ; 0E 03 (7) IN H,(C) ; ED 60 (12) IN L,(C) ; ED 68 (12) IN D,(C) ; ED 50 (12) IN E,(C) ; ED 58 (12) ; HBLANK #4 (83+8=91) PUSH HL ; E5 (11) WRITE ATTRIB PUSH DE ; D5 (11) ADD HL,HL ; 29 (11) EXX ; D9 (4) PUSH HL ; E5 (11) PUSH DE ; D5 (11) IN A,(03H) ; DB 03 (11) GET PCM LD (0E004H),A ; 32 04 E0 (13) OUTPUT PCM JP (IX) ; DD E9 (8) ORG 01380H ; V=252 48+88=136 LD SP,0D3E8H ; 31 E8 D3 (10) DUMMY HDISP LD IX,01280H ; DD 21 80 12 (14) LD IY,01500H ; FD 21 00 15 (14) LD HL,0H ; 21 00 00 (10) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) PUSH HL ; E5 (11) DUMMY HBLANK PUSH HL ; E5 (11) PUSH HL ; E5 (11) NOP ; 00 (4) PUSH HL ; E5 (11) PUSH HL ; E5 (11) IN A,(03H) ; DB 03 (11) GET PCM LD (0E004H),A ; 32 04 E0 (13) OUTPUT PCM ; V=253 144 ADD HL,HL ; 29 (11) DUMMY HDISP ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) NOP ; 00 (4) NOP ; 00 (4) NOP ; 00 (4) PUSH HL ; E5 (11) DUMMY HBLANK PUSH HL ; E5 (11) PUSH HL ; E5 (11) NOP ; 00 (4) PUSH HL ; E5 (11) PUSH HL ; E5 (11) IN A,(03H) ; DB 03 (11) GET PCM LD (0E004H),A ; 32 04 E0 (13) OUTPUT PCM ; V=254 ADD HL,HL ; 29 (11) DUMMY HDISP ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) NOP ; 00 (4) NOP ; 00 (4) NOP ; 00 (4) PUSH HL ; E5 (11) DUMMY HBLANK PUSH HL ; E5 (11) PUSH HL ; E5 (11) NOP ; 00 (4) PUSH HL ; E5 (11) PUSH HL ; E5 (11) IN A,(03H) ; DB 03 (11) GET PCM LD (0E004H),A ; 32 04 E0 (13) OUTPUT PCM ; V=255 ADD HL,HL ; 29 (11) DUMMY HDISP ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) NOP ; 00 (4) NOP ; 00 (4) NOP ; 00 (4) PUSH HL ; E5 (11) DUMMY HBLANK PUSH HL ; E5 (11) PUSH HL ; E5 (11) NOP ; 00 (4) PUSH HL ; E5 (11) PUSH HL ; E5 (11) IN A,(03H) ; DB 03 (11) GET PCM LD (0E004H),A ; 32 04 E0 (13) OUTPUT PCM ; V=256 ADD HL,HL ; 29 (11) DUMMY HDISP ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) NOP ; 00 (4) NOP ; 00 (4) NOP ; 00 (4) PUSH HL ; E5 (11) DUMMY HBLANK PUSH HL ; E5 (11) PUSH HL ; E5 (11) NOP ; 00 (4) PUSH HL ; E5 (11) PUSH HL ; E5 (11) IN A,(03H) ; DB 03 (11) GET PCM LD (0E004H),A ; 32 04 E0 (13) OUTPUT PCM ; V=257 ADD HL,HL ; 29 (11) DUMMY HDISP ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) NOP ; 00 (4) NOP ; 00 (4) NOP ; 00 (4) PUSH HL ; E5 (11) DUMMY HBLANK PUSH HL ; E5 (11) PUSH HL ; E5 (11) NOP ; 00 (4) PUSH HL ; E5 (11) PUSH HL ; E5 (11) IN A,(03H) ; DB 03 (11) GET PCM LD (0E004H),A ; 32 04 E0 (13) OUTPUT PCM ; V=258 ADD HL,HL ; 29 (11) DUMMY HDISP ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) NOP ; 00 (4) NOP ; 00 (4) NOP ; 00 (4) PUSH HL ; E5 (11) DUMMY HBLANK PUSH HL ; E5 (11) PUSH HL ; E5 (11) NOP ; 00 (4) PUSH HL ; E5 (11) PUSH HL ; E5 (11) IN A,(03H) ; DB 03 (11) GET PCM LD (0E004H),A ; 32 04 E0 (13) OUTPUT PCM ; V=259 ADD HL,HL ; 29 (11) DUMMY HDISP ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) NOP ; 00 (4) NOP ; 00 (4) NOP ; 00 (4) PUSH HL ; E5 (11) DUMMY HBLANK PUSH HL ; E5 (11) PUSH HL ; E5 (11) NOP ; 00 (4) PUSH HL ; E5 (11) PUSH HL ; E5 (11) IN A,(03H) ; DB 03 (11) GET PCM LD (0E004H),A ; 32 04 E0 (13) OUTPUT PCM ; V=260 ADD HL,HL ; 29 (11) DUMMY HDISP ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) NOP ; 00 (4) NOP ; 00 (4) NOP ; 00 (4) PUSH HL ; E5 (11) DUMMY HBLANK PUSH HL ; E5 (11) PUSH HL ; E5 (11) NOP ; 00 (4) PUSH HL ; E5 (11) PUSH HL ; E5 (11) IN A,(03H) ; DB 03 (11) GET PCM LD (0E004H),A ; 32 04 E0 (13) OUTPUT PCM ; V=261 ADD HL,HL ; 29 (11) DUMMY HDISP ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) ADD HL,HL ; 29 (11) NOP ; 00 (4) NOP ; 00 (4) NOP ; 00 (4) PUSH HL ; E5 (11) DUMMY HBLANK PUSH HL ; E5 (11) PUSH HL ; E5 (11) NOP ; 00 (4) PUSH HL ; E5 (11) PUSH HL ; E5 (11) IN A,(03H) ; DB 03 (11) GET PCM LD (0E004H),A ; 32 04 E0 (13) OUTPUT PCM JP (IX) ; DD E9 (8) ORG 01500H ; ATTRIBUTE ADDRESS TABLE DW 0D828H ; 28 D8 DB 012H ; 12 DW 0D828H ; 28 D8 DB 012H ; 12 DW 0D850H ; 50 D8 DB 012H ; 12 DW 0D850H ; 50 D8 DB 012H ; 12 DW 0D878H ; 78 D8 DB 012H ; 12 DW 0D878H ; 78 D8 DB 012H ; 12 DW 0D8A0H ; A0 D8 DB 012H ; 12 DW 0D8A0H ; A0 D8 DB 012H ; 12 DW 0D8C8H ; C8 D8 DB 012H ; 12 DW 0D8C8H ; C8 D8 DB 012H ; 12 DW 0D8F0H ; F0 D8 DB 012H ; 12 DW 0D8F0H ; F0 D8 DB 012H ; 12 DW 0D918H ; 18 D9 DB 012H ; 12 DW 0D918H ; 18 D9 DB 012H ; 12 DW 0D940H ; 40 D9 DB 012H ; 12 DW 0D940H ; 40 D9 DB 012H ; 12 DW 0D968H ; 68 D9 DB 012H ; 12 DW 0D968H ; 18 D9 DB 012H ; 12 DW 0D990H ; 90 D9 DB 012H ; 12 DW 0D990H ; 90 D9 DB 012H ; 12 DW 0D9B8H ; B8 D9 DB 012H ; 12 DW 0D9B8H ; B8 D9 DB 012H ; 12 DW 0D9E0H ; E0 D9 DB 012H ; 12 DW 0D9E0H ; E0 D9 DB 012H ; 12 DW 0DA08H ; 08 DA DB 012H ; 12 DW 0DA08H ; 08 DA DB 012H ; 12 DW 0DA30H ; 30 DA DB 012H ; 12 DW 0DA30H ; 30 DA DB 012H ; 12 DW 0DA58H ; 58 DA DB 012H ; 12 DW 0DA58H ; 58 DA DB 012H ; 12 DW 0DA80H ; 80 DA DB 012H ; 12 DW 0DA80H ; 80 DA DB 012H ; 12 DW 0DAA8H ; A8 DA DB 012H ; 12 DW 0DAA8H ; A8 DA DB 012H ; 12 DW 0DAD0H ; D0 DA DB 012H ; 12 DW 0DAD0H ; D0 DA DB 012H ; 12 DW 0DAF8H ; F8 DA DB 012H ; 12 DW 0DAF8H ; F8 DA DB 012H ; 12 DW 0DB20H ; 20 DB DB 012H ; 12 DW 0DB20H ; 20 DB DB 012H ; 12 DW 0DB48H ; 48 DB DB 012H ; 12 DW 0DB48H ; 48 DB DB 012H ; 12 DW 0D828H ; 28 D8 V=168 DB 012H ; 12 DW 0D850H ; 50 D8 DB 012H ; 12 DW 0D878H ; 78 D8 DB 012H ; 12 DW 0D8A0H ; A0 D8 DB 012H ; 12 DW 0D8C8H ; C8 D8 DB 012H ; 12 DW 0D8F0H ; F0 D8 DB 012H ; 12 DW 0D918H ; 18 D9 DB 012H ; 12 DW 0D940H ; 40 D9 DB 012H ; 12 DW 0D968H ; 68 D9 DB 012H ; 12 DW 0D990H ; 90 D9 V=204 DB 012H ; 12 DW 0D9B8H ; B8 D9 DB 012H ; 12 DW 0D9E0H ; E0 D9 DB 012H ; 12 DW 0DA08H ; 08 DA DB 012H ; 12 DW 0DA30H ; 30 DA DB 012H ; 12 DW 0DA58H ; 58 DA DB 012H ; 12 DW 0DA80H ; 80 DA DB 012H ; 12 DW 0DAA8H ; A8 DA DB 012H ; 12 DW 0DAD0H ; D0 DA DB 012H ; 12 DW 0DAF8H ; F8 DA DB 012H ; 12 DW 0DB20H ; 20 DB DB 012H ; 12 DW 0DB48H ; 48 DB DB 013H ; 13