mirror of
https://github.com/Tolik-Trek/ZX-SP-ROMs.git
synced 2026-06-15 17:31:45 +03:00
453 lines
8.2 KiB
NASM
453 lines
8.2 KiB
NASM
DCP_INIT:
|
|
EXX
|
|
LD HL,ALTERA
|
|
LD DE,0C000H
|
|
DCP_L0:
|
|
LD B,8
|
|
LD C,(HL)
|
|
INC HL
|
|
DCP_L1:
|
|
RLC C
|
|
JR C,DCP_L2
|
|
LD A,0
|
|
LD (DE),A
|
|
INC DE
|
|
DJNZ DCP_L1
|
|
JR DCP_L3
|
|
DCP_L2:
|
|
LD A,(HL)
|
|
INC HL
|
|
LD (DE),A
|
|
INC DE
|
|
DJNZ DCP_L1
|
|
DCP_L3:
|
|
inc d
|
|
dec d
|
|
JR NZ,DCP_L0
|
|
IN A,(PAGE3)
|
|
EXX
|
|
JP (HL)
|
|
; RET
|
|
|
|
;***********************************
|
|
|
|
;DCP_INIT_new:
|
|
; DB 0DDH
|
|
; LD C,L
|
|
;; LD C,A
|
|
; DB 0DDH
|
|
; LD B,H
|
|
;; LD B,A
|
|
; DB 0FDH
|
|
; LD E,L
|
|
;; LD E,A
|
|
; DB 0FDH
|
|
; LD D,H
|
|
;; LD D,A
|
|
; EXX
|
|
;
|
|
; LD HL,0C000h
|
|
; LD DE,0C001h
|
|
; LD BC,3FFFH
|
|
; LD (HL),L
|
|
; LDIR
|
|
;
|
|
; LD IY,DCP_DATA_NEW
|
|
; LD IX,DCP_INN_RET
|
|
;
|
|
;DCP_INN_LOOP:
|
|
; LD L,(IY)
|
|
; LD H,(IY+1)
|
|
; LD E,(IY+2)
|
|
; LD D,(IY+3)
|
|
; LD B,(IY+4)
|
|
; JR DCP_FN0M
|
|
;
|
|
;DCP_INN_RET:
|
|
; LD BC,5
|
|
; ADD IY,BC
|
|
; LD A,(IY+2)
|
|
; OR (IY+3)
|
|
; JR NZ,DCP_INN_LOOP
|
|
;
|
|
; EXX
|
|
;; LD A,C
|
|
; DB 0DDH
|
|
; LD L,C
|
|
;; LD B,A
|
|
; DB 0DDH
|
|
; LD H,B
|
|
;; LD A,E
|
|
; DB 0FDH
|
|
; LD L,E
|
|
;; LD A,D
|
|
; DB 0FDH
|
|
; LD H,D
|
|
; JP (HL)
|
|
;; RET
|
|
;
|
|
;
|
|
|
|
; ”ãªæ¨ï ¤¥è¨äà â®à ¯®à⮢.
|
|
; HL - ¤à¥á
|
|
; DE - ¬ ᪠- 0 ¨§¬¥ï¥¬ë¥ ¡¨âë, 1 ¥¨§¬¥ï¥¬ë¥
|
|
; B - ¯®àâ
|
|
|
|
DCP_FN0M:
|
|
|
|
LD A,L
|
|
AND E
|
|
LD L,A
|
|
|
|
LD A,H
|
|
AND D
|
|
; AND 3FH
|
|
OR 0C0H
|
|
LD H,A
|
|
|
|
LD A,D
|
|
OR 0C0H
|
|
LD D,A
|
|
|
|
DCP_FN0_L1:
|
|
LD (HL),B
|
|
|
|
LD A,L ; § ¬ ᪨஢ âì ¥¨§¬¥ï¥¬ë¥ ¡¨âë 1-¬¨
|
|
OR E ; ¤«ï ¯à®å®¦¤¥¨ï ¯¥à¥®á
|
|
INC A ; 㢥«¨ç¨âì ¤à¥á
|
|
JR Z,DCP_FN0_L2 ; ¢®§¨ª ¯¥à¥®á
|
|
|
|
OR E
|
|
XOR E ; ®¡ã«¨âì ¥¨§¬¥ï¥¬ë¥ ¡¨âë
|
|
LD C,A ; ¨§¬¥ï¥¬ ï ç áâì
|
|
|
|
LD A,L
|
|
AND E ; ¢ë¤¥«¨âì ¥¨§¬¥ï¥¬ãî
|
|
OR C
|
|
LD L,A ; ¤®¡ ¢¨âì ¨§¬¥ï¥¬ãî ç áâì
|
|
|
|
JR DCP_FN0_L1 ; 横«
|
|
|
|
DCP_FN0_L2: ; A = 0
|
|
; OR E
|
|
; XOR E
|
|
; LD C,A
|
|
LD A,L ; § ¡¨âì ¨§¬¥ï¥¬ë¥ ¡¨âë ã«ï¬¨
|
|
AND E
|
|
; OR C
|
|
LD L,A
|
|
|
|
LD A,H ; § ¬ ᪨஢ âì ¥¨§¬¥ï¥¬ë¥ ¡¨âë 1-¬¨
|
|
OR D ; ¤«ï ¯à®å®¦¤¥¨ï ¯¥à¥®á
|
|
INC A ; 㢥«¨ç¨âì ¤à¥á
|
|
JR Z,DCP_FN0_L3
|
|
|
|
OR D
|
|
XOR D
|
|
LD C,A ; ¨§¬¥ï¥¬ ï ç áâì
|
|
|
|
LD A,H
|
|
AND D ; ¢ë¤¥«¨âì ¥¨§¬¥ï¥¬ãî
|
|
OR C
|
|
LD H,A ; ¤®¡ ¢¨âì ¨§¬¥ï¥¬ãî ç áâì
|
|
JR DCP_FN0_L1
|
|
|
|
DCP_FN0_L3:
|
|
JP (IX)
|
|
|
|
|
|
;DCP_DATA_NEW:
|
|
;; DATA FOR DCP
|
|
;; CCED/AAAAAAAAA DATA
|
|
;; NN1OW116517210
|
|
;; FF2SR54 3
|
|
;; 108
|
|
;;
|
|
;; Border ....0..11.1110 0C2H
|
|
; DW 00000001101110B
|
|
; DW 00001001101111B
|
|
; DB 0C2H
|
|
;; Keyboard ....1..11.1110 040H
|
|
; DW 00001001101110B
|
|
; DW 00001001101111B
|
|
; DB 040H
|
|
;; Kempston ...11..00.0111 015H
|
|
; DW 00011000000111B
|
|
; DW 00011001101111B
|
|
; DB 015H
|
|
;;
|
|
;; DRQ/INTRQ ...01..11.1111 015H
|
|
; DW 00001001101111B
|
|
; DW 00011001101111B
|
|
; DB 015H
|
|
;; WR_PDOS ...00..11.1111 014H
|
|
; DW 00000001101111B
|
|
; DW 00011001101111B
|
|
; DB 014H
|
|
;; CS_WG93_1F ...0...00.0111 010H
|
|
; DW 00000000000111B
|
|
; DW 00010001101111B
|
|
; DB 010H
|
|
;; CS_WG93_3F ...0...01.0111 011H
|
|
; DW 00000000100111B
|
|
; DW 00010001101111B
|
|
; DB 011H
|
|
;; CS_WG93_5F ...0...10.0111 012H
|
|
; DW 00000001000111B
|
|
; DW 00010001101111B
|
|
; DB 012H
|
|
;; CS_WG93_7F ...0...11.0111 013H
|
|
; DW 00000001100111B
|
|
; DW 00010001101111B
|
|
; DB 013H
|
|
;;
|
|
;; CNF_PORT ........1.0100 0C6H
|
|
; DW 00000000100100B
|
|
; DW 00000000101111B
|
|
; DB 0C6H
|
|
;;
|
|
;; SOUND_BFFD_WR ....0101111101 091H
|
|
; DW 00000101111101B
|
|
; DW 00001111111111B
|
|
; DB 091H
|
|
;; SOUND_FFFD_WR ....0111111101 090H
|
|
; DW 00000111111101B
|
|
; DW 00001111111111B
|
|
; DB 090H
|
|
;; SOUND_FFFD_RD ....11.1111101 000H
|
|
; DW 00001101111101B
|
|
; DW 00001101111111B
|
|
; DB 0
|
|
;;
|
|
;; COVOX_4F ...10.....0111 088H
|
|
; DW 00010000000111B
|
|
; DW 00011000001111B
|
|
; DB 088H
|
|
;; COVOX_FB ...10..11.1011 088H
|
|
; DW 00010001101011B
|
|
; DW 00011001101111B
|
|
; DB 088H
|
|
;; CASH__FB ...11..11..011 088H
|
|
; DW 00011001100011B
|
|
; DW 00011001100111B
|
|
; DB 088H
|
|
;; CASH__80 ...11..00.1000 088H
|
|
; DW 00011000001000B
|
|
; DW 00011001101111B
|
|
; DW 088H
|
|
;;
|
|
;; P_XTR ...1...01.1.11 032H
|
|
; DW 00010000101011B
|
|
; DW 00010001101011B
|
|
; DB 032H
|
|
;;
|
|
;; SC_256_1FFDH 0....001101101 0C0H
|
|
; DW 00000001101101B
|
|
; DW 10000111111111B
|
|
; DB 0C0H
|
|
;; ZX_128_7FFDH 0.0..0111.1101 0C1H
|
|
; DW 00000011101101B
|
|
; DW 10100111101111B
|
|
; DB 0C1H
|
|
;; ZX_128_7FFDH 0..0.0111.1101 0C1H
|
|
; DW 00000011101101B
|
|
; DW 10010111101111B
|
|
; DB 0C1H
|
|
;
|
|
;; ZX_128_7FFDH 100..0.11.1101 0C1H
|
|
; DW 10000001101101B
|
|
; DW 11100101101111B
|
|
; DB 0C1H
|
|
;; ZX_128_7FFDH 10.0.0.11.1101 0C1H
|
|
; DW 10000001101101B
|
|
; DW 11010101101111B
|
|
; DB 0C1H
|
|
;
|
|
;; SC_256_1FFDH 11...001101101 0C0H
|
|
; DW 11000001101101B
|
|
; DW 11000111111111B
|
|
; DB 0C0H
|
|
;; ZX_128_7FFDH 110..0111.1101 0C1H
|
|
; DW 11000011101101B
|
|
; DW 11100111101111B
|
|
; DB 0C1H
|
|
;; ZX_128_7FFDH 11.0.0111.1101 0C1H
|
|
; DW 11000011101101B
|
|
; DW 11010111101111B
|
|
; DB 0C1H
|
|
;;
|
|
;; HDD_DATA ...0...10.0000 020H
|
|
; DW 00000001000000B
|
|
; DW 00010001101111B
|
|
; DB 020H
|
|
;; HDD_1F1 ...0.0010.0001 021H
|
|
; DW 00000001000001B
|
|
; DW 00010111101111B
|
|
; DB 021H
|
|
;; HDD_1F2 ...0.0010.0010 022H
|
|
; DW 00000001000010B
|
|
; DW 00010111101111B
|
|
; DB 022H
|
|
;; HDD_1F3 ...0.0010.0011 023H
|
|
; DW 00000001000011B
|
|
; DW 00010111101111B
|
|
; DB 023H
|
|
;; HDD_1F4 ...0.0010.0100 024H
|
|
; DW 00000001000100B
|
|
; DW 00010111101111B
|
|
; DB 024H
|
|
;; HDD_1F5 ...0.0010.0101 025H
|
|
; DW 00000001000101B
|
|
; DW 00010111101111B
|
|
; DB 025H
|
|
;; HDD_1F6 ...0.0110.0010 026H
|
|
; DW 00000011000010B
|
|
; DW 00010111101111B
|
|
; DB 026H
|
|
;; HDD_1F7 ...0.0110.0011 027H
|
|
; DW 00000011000011B
|
|
; DW 00010111101111B
|
|
; DB 027H
|
|
;; HDD_3F6 ...0.0110.0100 028H
|
|
; DW 00000011000100B
|
|
; DW 00010111101111B
|
|
; DB 028H
|
|
;; HDD_3F7 ...0.0110.0101 029H
|
|
; DW 00000011000101B
|
|
; DW 00010111101111B
|
|
; DB 029H
|
|
;;
|
|
;; HDD_DATA 00.....10.0000 020H
|
|
; DW 00000001000000B
|
|
; DW 11000001101111B
|
|
; DB 020H
|
|
;; HDD_1F1 00...0010.0001 021H
|
|
; DW 00000001000001B
|
|
; DW 11000111101111B
|
|
; DB 021H
|
|
;; HDD_1F2 00...0010.0010 022H
|
|
; DW 00000001000010B
|
|
; DW 11000111101111B
|
|
; DB 022H
|
|
;; HDD_1F3 00...0010.0011 023H
|
|
; DW 00000001000011B
|
|
; DW 11000111101111B
|
|
; DB 023H
|
|
;; HDD_1F4 00...0010.0100 024H
|
|
; DW 00000001000100B
|
|
; DW 11000111101111B
|
|
; DB 024H
|
|
;; HDD_1F5 00...0010.0101 025H
|
|
; DW 00000001000101B
|
|
; DW 11000111101111B
|
|
; DB 025H
|
|
;; HDD_1F6 00...0110.0010 026H
|
|
; DW 00000011000010B
|
|
; DW 11000111101111B
|
|
; DB 026H
|
|
;; HDD_1F7 00...0110.0011 027H
|
|
; DW 00000011000011B
|
|
; DW 11000111101111B
|
|
; DB 027H
|
|
;; HDD_3F6 00...0110.0100 028H
|
|
; DW 00000011000100B
|
|
; DW 11000111101111B
|
|
; DB 028H
|
|
;; HDD_3F7 00...0110.0101 029H
|
|
; DW 00000011000101B
|
|
; DW 11000111101111B
|
|
; DB 029H
|
|
;;
|
|
;; PAGE0 ...0...00.1010 0E8H
|
|
; DW 00000000001010B
|
|
; DW 00010001101111B
|
|
; DB 0E8H
|
|
;; PAGE1 ...0...01.1010 0E9H
|
|
; DW 00000000101010B
|
|
; DW 00010001101111B
|
|
; DB 0E9H
|
|
;; PAGE2 ...0...10.1010 0EAH
|
|
; DW 00000001001010B
|
|
; DW 00010001101111B
|
|
; DB 0EAH
|
|
;; PAGE3 ...0...11.1010 0F0H
|
|
; DW 00000001101010B
|
|
; DW 00010001101111B
|
|
; DB 0F0H
|
|
;;
|
|
;; PAGE0 00.....00.1010 0E8H
|
|
; DW 00000000001010B
|
|
; DW 11000001101111B
|
|
; DB 0E8H
|
|
;; PAGE1 00.....01.1010 0E9H
|
|
; DW 00000000101010B
|
|
; DW 11000001101111B
|
|
; DB 0E9H
|
|
;; PAGE2 00.....10.1010 0EAH
|
|
; DW 00000001001010B
|
|
; DW 11000001101111B
|
|
; DB 0EAH
|
|
;; PAGE3 00.....11.1010 0F0H
|
|
; DW 00000001101010B
|
|
; DW 11000001101111B
|
|
; DB 0F0H
|
|
;;
|
|
;; Y_PORT(RGADR) ...0...00.1001 0C4H
|
|
; DW 00000000001001B
|
|
; DW 00010001101111B
|
|
; DB 0C4H
|
|
;; RGMOD ...0...10.1001 0C5H
|
|
; DW 00000001001001B
|
|
; DW 00010001101111B
|
|
; DB 0C5H
|
|
;;
|
|
;; Y_PORT(RGADR) 00.....00.1001 0C4H
|
|
; DW 00000000001001B
|
|
; DW 11000001101111B
|
|
; DB 0C4H
|
|
;; RGMOD 00.....10.1001 0C5H
|
|
; DW 00000001001001B
|
|
; DW 11000001101111B
|
|
; DB 0C5H
|
|
;;
|
|
;; ISA_REG ...00100101101 01BH
|
|
; DW 00000100101101B
|
|
; DW 00011111111111B
|
|
; DB 01BH
|
|
;; CMOS_DWR ...001.0111101 01EH
|
|
; DW 00000100111101B
|
|
; DW 00011101111111B
|
|
; DB 01EH
|
|
;; CMOS_AWR ...00110101101 01DH
|
|
; DW 00000110101101B
|
|
; DW 00011111111111B
|
|
; DB 01DH
|
|
;; CMOS_DRD ...011.0111101 01CH
|
|
; DW 00001100111101B
|
|
; DW 00011101111111B
|
|
; DB 01CH
|
|
;;
|
|
;; ISA_REG 00..0100101101 01BH
|
|
; DW 00000100101101B
|
|
; DW 11001111111111B
|
|
; DB 01BH
|
|
;; CMOS_DWR 00..01.0111101 01EH
|
|
; DW 00000100111101B
|
|
; DW 11001101111111B
|
|
; DB 01EH
|
|
;; CMOS_AWR 00..0110101101 01DH
|
|
; DW 00000110101101B
|
|
; DW 11001111111111B
|
|
; DB 01DH
|
|
;; CMOS_DRD 00..11.0111101 01CH
|
|
; DW 00001100111101B
|
|
; DW 11001101111111B
|
|
; DB 01CH
|
|
;
|
|
; DW 0,0,0 ; DCP END MARKER
|
|
;
|
|
;
|
|
;
|
|
;
|
|
;
|