ZX-SP-ROMs/ZX_EXP/EXP_DCP2.ASM
Anatoliy Belyanskiy 51b40b7af5 Setup
2023-06-17 04:36:58 +10:00

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
;
;
;
;
;