mirror of
https://github.com/Tolik-Trek/ZX-SP-ROMs.git
synced 2026-06-15 17:31:45 +03:00
Setup
This commit is contained in:
parent
6e1d57accc
commit
51b40b7af5
4
.gitmodules
vendored
Normal file
4
.gitmodules
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
[submodule "Shared_Includes"]
|
||||||
|
branch = main
|
||||||
|
path = Shared_Includes
|
||||||
|
url = https://github.com/Tolik-Trek/Shared_Includes.git
|
||||||
18709
SP_128.ASM
Normal file
18709
SP_128.ASM
Normal file
File diff suppressed because it is too large
Load Diff
7034
SP_TRDOS.ASM
Normal file
7034
SP_TRDOS.ASM
Normal file
File diff suppressed because it is too large
Load Diff
20413
SP__48.ASM
Normal file
20413
SP__48.ASM
Normal file
File diff suppressed because it is too large
Load Diff
1
Shared_Includes
Submodule
1
Shared_Includes
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 6e27011b6259b0256ce65d91a53ef1185223eafa
|
||||||
609
TRDOS/TR_MSD_2.ASZ
Normal file
609
TRDOS/TR_MSD_2.ASZ
Normal file
@ -0,0 +1,609 @@
|
|||||||
|
;
|
||||||
|
; for INCLUDE
|
||||||
|
; MS-DOS system
|
||||||
|
;
|
||||||
|
;**********************************
|
||||||
|
|
||||||
|
MSDOS_FIND_FILE:
|
||||||
|
PUSH DE ; ˆŒŸ ˆ‘ŠŽŒŽƒŽ ”€‰‹€
|
||||||
|
CALL MSDOS_1ST_FL
|
||||||
|
POP DE
|
||||||
|
RET C
|
||||||
|
FIND_LOOP_ALL:
|
||||||
|
CALL MSDOS_KOMP_FL
|
||||||
|
RET Z ; ‚އ‚<E280A1>€’ - ”€‰‹ <20>€‰„…<E2809E> !!
|
||||||
|
MSDOS_FIND_NEXT:
|
||||||
|
CALL MSDOS_NEXT_FL
|
||||||
|
JR NC,FIND_LOOP_ALL
|
||||||
|
RET
|
||||||
|
|
||||||
|
;***********************************************
|
||||||
|
;
|
||||||
|
;***********************************************
|
||||||
|
MSDOS_1ST_FL:
|
||||||
|
PUSH DE
|
||||||
|
CALL READ_BPB
|
||||||
|
CALL READ_1ST_DIR
|
||||||
|
POP DE
|
||||||
|
MSDOS_TEST_FL:
|
||||||
|
PUSH DE
|
||||||
|
DI
|
||||||
|
IN A,(PAGE3)
|
||||||
|
LD E,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD A,E
|
||||||
|
LD E,(HL)
|
||||||
|
OUT (PAGE3),A
|
||||||
|
EI
|
||||||
|
LD A,E
|
||||||
|
POP DE
|
||||||
|
AND A
|
||||||
|
SCF
|
||||||
|
RET Z ; ŠŽ<C5A0>…– Š€’€‹Žƒ€
|
||||||
|
CP 0E5H
|
||||||
|
SCF
|
||||||
|
CCF
|
||||||
|
; DEC A ; ‘’…<E28099>’›‰ ”€‰‹
|
||||||
|
; AND A
|
||||||
|
RET
|
||||||
|
;**********************************
|
||||||
|
MSDOS_NEXT_FL:
|
||||||
|
PUSH DE
|
||||||
|
LD DE,20H
|
||||||
|
ADD HL,DE
|
||||||
|
DI
|
||||||
|
IN A,(PAGE3)
|
||||||
|
LD D,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD A,(COUNT_FL)
|
||||||
|
DEC A
|
||||||
|
LD (COUNT_FL),A
|
||||||
|
LD E,A
|
||||||
|
LD A,D
|
||||||
|
OUT (PAGE3),A
|
||||||
|
; RET_PAGE3
|
||||||
|
EI
|
||||||
|
LD A,E
|
||||||
|
POP DE
|
||||||
|
AND A ; ‘<><E28098>Ž‘ CF !!
|
||||||
|
JR NZ,MSDOS_TEST_FL
|
||||||
|
PUSH DE
|
||||||
|
DI
|
||||||
|
IN A,(PAGE3)
|
||||||
|
LD D,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD A,(COUNT_SEC)
|
||||||
|
DEC A
|
||||||
|
LD (COUNT_SEC),A
|
||||||
|
LD E,A
|
||||||
|
LD A,D
|
||||||
|
OUT (PAGE3),A
|
||||||
|
; RET_PAGE3
|
||||||
|
EI
|
||||||
|
LD A,E
|
||||||
|
POP DE
|
||||||
|
AND A
|
||||||
|
SCF
|
||||||
|
RET Z
|
||||||
|
PUSH DE
|
||||||
|
CALL READ_NEXT_DIR
|
||||||
|
POP DE
|
||||||
|
LD HL,MS_DIR
|
||||||
|
JR MSDOS_TEST_FL
|
||||||
|
|
||||||
|
;**********************************
|
||||||
|
MSDOS_CAT:
|
||||||
|
PUSH DE
|
||||||
|
CALL AUTO_1D97 ; CLS
|
||||||
|
CALL OPEN_CH2
|
||||||
|
LD A,13
|
||||||
|
RST 10H
|
||||||
|
POP DE ; ‘’<E28098>ŽŠ€ <20>Ž‘‹… CAT
|
||||||
|
|
||||||
|
CAT_SPACES:
|
||||||
|
LD A,(DE)
|
||||||
|
CP 20H
|
||||||
|
JR NZ,CAT_NO_SPACE
|
||||||
|
INC DE
|
||||||
|
JR CAT_SPACES
|
||||||
|
CAT_NO_SPACE:
|
||||||
|
CP 13
|
||||||
|
JR NZ,CAT_ALL
|
||||||
|
LD DE,CAT_FILES
|
||||||
|
CAT_ALL:
|
||||||
|
; CALL MSDOS_FIND_FILE
|
||||||
|
CALL MSDOS_1ST_FL
|
||||||
|
JR C,CAT_END
|
||||||
|
CAT_LOOP:
|
||||||
|
JR Z,CAT_NO_PRINT
|
||||||
|
CALL MSDOS_KOMP_FL
|
||||||
|
JR NZ,CAT_NO_PRINT
|
||||||
|
PUSH HL
|
||||||
|
PUSH DE
|
||||||
|
CALL OPEN_CH2
|
||||||
|
POP DE
|
||||||
|
POP HL
|
||||||
|
; CALL COPY_NAME_MSD
|
||||||
|
CALL PRINT_MSD_NAME
|
||||||
|
CALL PRINT_MSD_DATS
|
||||||
|
; CALL MSDOS_FIND_NEXT
|
||||||
|
CAT_NO_PRINT:
|
||||||
|
CALL MSDOS_NEXT_FL
|
||||||
|
JR NC,CAT_LOOP
|
||||||
|
CAT_END:
|
||||||
|
CALL OPEN_CH0
|
||||||
|
JP AUTO_03E1
|
||||||
|
|
||||||
|
PRINT_MSD_NAME:
|
||||||
|
PUSH HL
|
||||||
|
PUSH DE
|
||||||
|
LD HL,FL_NAME
|
||||||
|
LD A,' '
|
||||||
|
RST 10H
|
||||||
|
LD A,' '
|
||||||
|
RST 10H
|
||||||
|
LD B,8
|
||||||
|
PRINT_MSD_L1:
|
||||||
|
LD A,(HL)
|
||||||
|
RST 10H
|
||||||
|
INC HL
|
||||||
|
DJNZ PRINT_MSD_L1
|
||||||
|
LD A,' '
|
||||||
|
RST 10H
|
||||||
|
LD B,3
|
||||||
|
PRINT_MSD_L2:
|
||||||
|
LD A,(HL)
|
||||||
|
RST 10H
|
||||||
|
INC HL
|
||||||
|
DJNZ PRINT_MSD_L2
|
||||||
|
LD A,6
|
||||||
|
RST 10H
|
||||||
|
|
||||||
|
POP DE
|
||||||
|
POP HL
|
||||||
|
RET
|
||||||
|
|
||||||
|
PRINT_MSD_DATS:
|
||||||
|
PUSH HL
|
||||||
|
PUSH DE
|
||||||
|
LD HL,FL_PLACE+1
|
||||||
|
LD A,(HL)
|
||||||
|
DEC HL
|
||||||
|
CALL PRINT_HEX_A
|
||||||
|
LD A,(HL)
|
||||||
|
DEC HL
|
||||||
|
CALL PRINT_HEX_A
|
||||||
|
LD A,(HL)
|
||||||
|
DEC HL
|
||||||
|
CALL PRINT_HEX_A
|
||||||
|
LD A,' '
|
||||||
|
RST 10H
|
||||||
|
LD A,(HL)
|
||||||
|
DEC HL
|
||||||
|
CALL PRINT_HEX_A
|
||||||
|
LD A,(HL)
|
||||||
|
DEC HL
|
||||||
|
CALL PRINT_HEX_A
|
||||||
|
LD A,13
|
||||||
|
RST 10H
|
||||||
|
POP DE
|
||||||
|
POP HL
|
||||||
|
RET
|
||||||
|
;**********************************************
|
||||||
|
CAT_FILES: DB '*.*',13
|
||||||
|
;**********************************************
|
||||||
|
COPY_NAME_MSD:
|
||||||
|
PUSH HL
|
||||||
|
PUSH DE
|
||||||
|
DI
|
||||||
|
IN A,(PAGE3)
|
||||||
|
LD C,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD A,C
|
||||||
|
LD DE,FL_NAME
|
||||||
|
LD BC,11
|
||||||
|
LDIR
|
||||||
|
|
||||||
|
LD BC,15
|
||||||
|
ADD HL,BC
|
||||||
|
LD BC,5
|
||||||
|
LDIR
|
||||||
|
|
||||||
|
LD L,(HL)
|
||||||
|
OUT (PAGE3),A
|
||||||
|
; RET_PAGE3
|
||||||
|
EI
|
||||||
|
LD A,L
|
||||||
|
POP DE
|
||||||
|
POP HL
|
||||||
|
AND A ; A = 0 „‹Ÿ ”€‰‹€ „‹ˆ<E280B9>މ < 16 Œ¡.
|
||||||
|
RET
|
||||||
|
;*********************************************
|
||||||
|
|
||||||
|
;******************************************************
|
||||||
|
CMD_MSDOS: ; MS-DOS ª®¬ ¤¥à !!
|
||||||
|
;******************************************************
|
||||||
|
CALL SINTAX_RET
|
||||||
|
LD HL,WORDS
|
||||||
|
LOOP_FIND2:
|
||||||
|
LD DE,(ADR_DOS_COM)
|
||||||
|
INC DE ; <20>யãáâ¨âì /
|
||||||
|
|
||||||
|
LD A,(HL)
|
||||||
|
AND A
|
||||||
|
JR Z,END_TAB
|
||||||
|
LD B,A
|
||||||
|
INC HL
|
||||||
|
LOOP_FIND:
|
||||||
|
LD A,(DE)
|
||||||
|
AND 223
|
||||||
|
CP (HL)
|
||||||
|
JR NZ,NEXT_WORD
|
||||||
|
INC DE
|
||||||
|
INC HL
|
||||||
|
DJNZ LOOP_FIND
|
||||||
|
LD A,(DE)
|
||||||
|
CP 13
|
||||||
|
JR Z,CMD_EXE1
|
||||||
|
CP 20H
|
||||||
|
JR Z,CMD_EXE
|
||||||
|
JR NEXT_WORD2
|
||||||
|
CMD_EXE:
|
||||||
|
INC DE
|
||||||
|
CMD_EXE1:
|
||||||
|
LD A,(HL)
|
||||||
|
INC HL
|
||||||
|
LD H,(HL)
|
||||||
|
LD L,A
|
||||||
|
CALL JP_HL
|
||||||
|
JP AUTO_03E1
|
||||||
|
JP_HL:
|
||||||
|
JP (HL)
|
||||||
|
|
||||||
|
NEXT_WORD:
|
||||||
|
INC HL
|
||||||
|
DJNZ NEXT_WORD
|
||||||
|
NEXT_WORD2:
|
||||||
|
INC HL
|
||||||
|
INC HL
|
||||||
|
JR LOOP_FIND2
|
||||||
|
|
||||||
|
END_TAB:
|
||||||
|
INC DE
|
||||||
|
LD A,(DE)
|
||||||
|
CP ':'
|
||||||
|
DEC DE
|
||||||
|
JR NZ,END_TAB3
|
||||||
|
LD A,(DE)
|
||||||
|
AND 223
|
||||||
|
SUB 'A'
|
||||||
|
JR C,END_TAB3
|
||||||
|
CP 4
|
||||||
|
JR NC,END_TAB2
|
||||||
|
LD (OPER_DISK),A
|
||||||
|
LD (CONT_DISK),A
|
||||||
|
LD B,A
|
||||||
|
LD A,(PDOS_COPY)
|
||||||
|
AND 7CH
|
||||||
|
OR B
|
||||||
|
LD (PDOS_COPY),A
|
||||||
|
OUT (P_DOS_FF),A
|
||||||
|
JP AUTO_03E1
|
||||||
|
|
||||||
|
END_TAB2:
|
||||||
|
SUB 4
|
||||||
|
CP RAMD_KEY_NUM
|
||||||
|
JR NC,END_TAB3
|
||||||
|
CALL RAMD_SET1
|
||||||
|
JP AUTO_03E1
|
||||||
|
|
||||||
|
END_TAB3:
|
||||||
|
LD A,0
|
||||||
|
JP LOAD_RMD_XX
|
||||||
|
|
||||||
|
MSD_ERR:
|
||||||
|
LD HL,MSDOS_MSG
|
||||||
|
JP AUTO_03E4
|
||||||
|
|
||||||
|
;************************************
|
||||||
|
|
||||||
|
LOAD_RMD:
|
||||||
|
CALL RAMD_SYM ; ¯®«ãç¨âì ®¬¥à RAM-Disk ¨§ (DE)
|
||||||
|
JP C,MSD_ERR
|
||||||
|
LOAD_RMD_XX:
|
||||||
|
LD (MED_START+1),A ; á®åà ¨âì
|
||||||
|
CALL MSDOS_FIND_FILE
|
||||||
|
JP C,MSD_ERR
|
||||||
|
|
||||||
|
CALL RMD_BLKS_FL ; B - ç¨á«® ¡«®ª®¢ , DE - ¡á®«îâë© á¥ªâ®à
|
||||||
|
LD A,(MED_START+1)
|
||||||
|
PUSH AF
|
||||||
|
CALL CLEAR_RMD_A ; ®á¢®¡®¤¨âì RAM-Disk A
|
||||||
|
POP AF
|
||||||
|
CALL GET_RMD_A ; ãáâ ®¢¨âì RAM-Disk A à §¬¥à®¬ B
|
||||||
|
|
||||||
|
LD HL,0C000H
|
||||||
|
CALL MSDOS_READ_FILE
|
||||||
|
JP AUTO_03E1
|
||||||
|
|
||||||
|
SAVE_RMD:
|
||||||
|
CALL RAMD_SYM ; ¯®«ãç¨âì ®¬¥à RAM-Disk ¨§ (DE)
|
||||||
|
JP C,MSD_ERR
|
||||||
|
LD (MED_START+1),A
|
||||||
|
CALL MSDOS_FIND_FILE
|
||||||
|
JP C,MSD_ERR
|
||||||
|
|
||||||
|
CALL RMD_BLKS_FL
|
||||||
|
|
||||||
|
LD A,(MED_START+1)
|
||||||
|
CALL TEST_RAMD ; ¯à®¢¥à¨âì «¨ç¨¥ RAM-Disk A à §¬¥à®¬ B
|
||||||
|
JP C,MSD_ERR ; A - ®¬¥à ¯¥à¢®£® ¡«®ª
|
||||||
|
JP Z,MSD_ERR
|
||||||
|
|
||||||
|
LD HL,0C000H
|
||||||
|
CALL MSDOS_WRITE_FILE
|
||||||
|
JP AUTO_03E1
|
||||||
|
|
||||||
|
RMD_BLKS_FL:
|
||||||
|
LD A,(FL_SIZE+2)
|
||||||
|
PUSH HL
|
||||||
|
LD HL,(FL_SIZE)
|
||||||
|
LD B,A
|
||||||
|
AND A
|
||||||
|
RL L
|
||||||
|
RL H
|
||||||
|
RL B
|
||||||
|
AND A
|
||||||
|
RL L
|
||||||
|
RL H
|
||||||
|
RL B
|
||||||
|
LD A,H
|
||||||
|
OR L
|
||||||
|
JR Z,RMD_BLKS_L2
|
||||||
|
INC B
|
||||||
|
RMD_BLKS_L2:
|
||||||
|
POP HL
|
||||||
|
RET ; B - —ˆ‘‹Ž <20>‹ŽŠŽ‚ RAM_DISK
|
||||||
|
|
||||||
|
;****************************************
|
||||||
|
MSDOS_KOMP_FL: ; DE - ˆŒŸ ”€‰‹€ ‘Ž *,?
|
||||||
|
; HL - ˆŒŸ ‚ Š€’€‹Žƒ…
|
||||||
|
CALL COPY_NAME_MSD ; <20>…<EFBFBD>…Œ…‘’ˆ’œ ˆŒŸ ‚ Ž<>‹€‘’œ TR-DOS
|
||||||
|
LD A,(FL_NAME)
|
||||||
|
AND A
|
||||||
|
JR NZ,KOMP_CONT1
|
||||||
|
LD A,2 ; ŠŽ<C5A0>…– Š€’€‹Žƒ€
|
||||||
|
AND A ; NZ - ˆŒŸ <20>… ‘Ž‚<C5BD>€„€…’
|
||||||
|
RET
|
||||||
|
|
||||||
|
KOMP_CONT1:
|
||||||
|
CP 0A5h
|
||||||
|
JR NZ,KOMP_CONT2
|
||||||
|
LD A,1 ; ‘’…<E28099>’›‰ ”€‰‹ - ˆŒŸ <20>… ‘Ž‚<C5BD>€„€…’
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
KOMP_CONT2:
|
||||||
|
PUSH DE
|
||||||
|
PUSH HL
|
||||||
|
LD HL,FL_NAME
|
||||||
|
CALL MSDOS_KOMP_ALL
|
||||||
|
POP HL
|
||||||
|
POP DE
|
||||||
|
RET
|
||||||
|
|
||||||
|
MSDOS_KOMP_ALL:
|
||||||
|
LD A,(DE)
|
||||||
|
INC DE
|
||||||
|
CP 20H
|
||||||
|
JR Z,MSDOS_KOMP_ALL
|
||||||
|
CP 13
|
||||||
|
JR Z,KOMP_ERROR_NAME ; <20>…‚…<E2809A><E280A6>Ž… ˆŒŸ
|
||||||
|
DEC DE
|
||||||
|
|
||||||
|
LD B,8
|
||||||
|
CALL KOMP_TX
|
||||||
|
RET NZ
|
||||||
|
|
||||||
|
LD A,(DE)
|
||||||
|
CP '.'
|
||||||
|
JR Z,KOMP_POINT
|
||||||
|
CP 13
|
||||||
|
JR Z,KOMP_SPACING3
|
||||||
|
CP 20H
|
||||||
|
JR Z,KOMP_SPACING3
|
||||||
|
KOMP_ERROR_NAME: ; <20>…‚…<E2809A><E280A6>Ž… ˆŒŸ
|
||||||
|
LD A,1
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
KOMP_POINT:
|
||||||
|
INC DE
|
||||||
|
|
||||||
|
LD B,3
|
||||||
|
CALL KOMP_TX
|
||||||
|
RET NZ
|
||||||
|
LD A,(DE)
|
||||||
|
CP 13
|
||||||
|
RET Z
|
||||||
|
CP 20H
|
||||||
|
RET Z
|
||||||
|
JR KOMP_ERROR_NAME
|
||||||
|
|
||||||
|
;****************************************************
|
||||||
|
KOMP_TX:
|
||||||
|
LD A,(DE)
|
||||||
|
CP 13
|
||||||
|
JR Z,KOMP_SPACING
|
||||||
|
CP 20H
|
||||||
|
JR Z,KOMP_SPACING
|
||||||
|
CP '.'
|
||||||
|
JR Z,KOMP_SPACING
|
||||||
|
CP '?'
|
||||||
|
JR Z,KOMP_EX_OK
|
||||||
|
CP '*'
|
||||||
|
JR Z,KOMP_EX_OK2
|
||||||
|
CP 'a'
|
||||||
|
JR C,KOMP_EXEC
|
||||||
|
CP 'z'+1
|
||||||
|
JR NC,KOMP_EXEC
|
||||||
|
AND 223
|
||||||
|
KOMP_EXEC:
|
||||||
|
CP (HL)
|
||||||
|
RET NZ ; ¥â ᮢ¯ ¤¥¨ï
|
||||||
|
KOMP_EX_OK:
|
||||||
|
INC DE
|
||||||
|
KOMP_EX_OK2:
|
||||||
|
INC HL
|
||||||
|
DJNZ KOMP_TX
|
||||||
|
CP '*'
|
||||||
|
JR NZ,KOMP_NO_STAR1
|
||||||
|
INC DE
|
||||||
|
KOMP_NO_STAR1:
|
||||||
|
XOR A
|
||||||
|
RET
|
||||||
|
|
||||||
|
KOMP_SPACING3:
|
||||||
|
LD B,3
|
||||||
|
KOMP_SPACING:
|
||||||
|
LD A,20H
|
||||||
|
KOMP_L2:
|
||||||
|
CP (HL)
|
||||||
|
INC HL
|
||||||
|
RET NZ
|
||||||
|
DJNZ KOMP_L2
|
||||||
|
RET
|
||||||
|
|
||||||
|
;************************************************
|
||||||
|
|
||||||
|
CALC_CLAST: ; HL - áâ àâ®¢ë© ª« áâ¥à
|
||||||
|
PUSH BC
|
||||||
|
PUSH HL
|
||||||
|
DEC HL
|
||||||
|
DEC HL
|
||||||
|
DI
|
||||||
|
IN A,(PAGE3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD A,(MS_BPB+CLAST_SIZE)
|
||||||
|
|
||||||
|
EX DE,HL
|
||||||
|
LD BC,0
|
||||||
|
|
||||||
|
LD HL,0
|
||||||
|
LD IX,0
|
||||||
|
|
||||||
|
CALC_CL_LP:
|
||||||
|
ADD IX,DE
|
||||||
|
ADC HL,BC
|
||||||
|
|
||||||
|
DEC A
|
||||||
|
JR NZ,CALC_CL_LP
|
||||||
|
|
||||||
|
LD DE,(MSD_DAT_SEC)
|
||||||
|
LD BC,(MSD_DAT_SEC2)
|
||||||
|
|
||||||
|
ADD IX,DE
|
||||||
|
ADC HL,BC ; HL,IX - ‘Œ…™…<E284A2>ˆ… Š‹€‘’…<E28099>€ Ž’ <20>€—€‹€ „€<E2809E><E282AC>›•
|
||||||
|
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE3),A
|
||||||
|
|
||||||
|
PUSH IX
|
||||||
|
EX (SP),HL
|
||||||
|
POP IX
|
||||||
|
EX DE,HL
|
||||||
|
|
||||||
|
EI
|
||||||
|
POP HL
|
||||||
|
POP BC
|
||||||
|
RET
|
||||||
|
|
||||||
|
HD_TX: DB ' ERR_HD',0A0H
|
||||||
|
HD_TX2: DB 'HDD not found',0A0H
|
||||||
|
MSG_3: DB 'ERROR...',0A0H
|
||||||
|
MSDOS_MSG: DB 'File not found...',0A0H
|
||||||
|
NO_MEMORY: DB 'No RAM-Disk MEM',0A0H
|
||||||
|
|
||||||
|
WORDS:
|
||||||
|
DB 5,'CLEAR' ; ®ç¨áâ¨âì RAM-Disk
|
||||||
|
DW CLEAR_RAMD_X
|
||||||
|
DB 3,'CAT' ; ª â «®£ MS-DOS
|
||||||
|
DW MSDOS_CAT
|
||||||
|
DB 3,'DIR' ; ª â «®£ MS-DOS
|
||||||
|
DW MSDOS_CAT
|
||||||
|
DB 3,'HDD' ; ¯®¤ª«îç¨âì HDD
|
||||||
|
DW HDD_SET
|
||||||
|
DB 3,'FDD' ; ¯®¤ª«îç¨âì FDD
|
||||||
|
DW FDD_SET
|
||||||
|
DB 3,'RMD' ; ¯®¤ª«îç¨âì RMD
|
||||||
|
DW RAMD_SET
|
||||||
|
DB 3,'HDT' ; â¥áâ HDD
|
||||||
|
DW HDD_PROG
|
||||||
|
DB 2,'RD' ; â¥áâ RAM-Disk space
|
||||||
|
DW RAMD_FAT_PROG
|
||||||
|
DB 4,'SAVE' ; á®åà ¨âì RAM-Disk
|
||||||
|
DW SAVE_RMD
|
||||||
|
DB 4,'LOAD' ; § £à㧨âì RAM-Disk
|
||||||
|
DW LOAD_RMD
|
||||||
|
DB 4,'TBON' ; ¢ª«îç¨âì âãà¡®
|
||||||
|
DW TB_ONOFF
|
||||||
|
DB 5,'TBOFF' ; ¢ëª«îç¨âì âãà¡®
|
||||||
|
DW TB_ONOFF
|
||||||
|
DB 4,'INIT' ; ¨¨§¨ «¨§ æ¨ï
|
||||||
|
DW INIT_RMD
|
||||||
|
DB 8,"SPRINTER"
|
||||||
|
DW SPR_1
|
||||||
|
DB 2,"AY"
|
||||||
|
DW AY8910
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
;SAVE_AUTOEXEC:
|
||||||
|
; LD C,0FEH
|
||||||
|
; CALL EXP_FNS
|
||||||
|
; RET
|
||||||
|
AY8910:
|
||||||
|
LD A,0EAH
|
||||||
|
LD C,0F3H
|
||||||
|
CALL EXP_FNS
|
||||||
|
EI
|
||||||
|
CALL AUTO_1D97
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
SPR_1:
|
||||||
|
LD A,(DE)
|
||||||
|
INC DE
|
||||||
|
CP 20H
|
||||||
|
JR Z,SPR_1
|
||||||
|
CP "1"
|
||||||
|
LD C,0F0H
|
||||||
|
JR Z,SP_1
|
||||||
|
CP "2"
|
||||||
|
SCF
|
||||||
|
RET NZ
|
||||||
|
LD C,0F1H
|
||||||
|
SP_1: LD A,(DE)
|
||||||
|
CP 21H
|
||||||
|
CCF
|
||||||
|
RET C
|
||||||
|
CALL EXP_FNS
|
||||||
|
EI
|
||||||
|
CALL AUTO_1D97
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
;****************************************************
|
||||||
|
;*****************************************
|
||||||
|
; ERRORS
|
||||||
|
;*****************************************
|
||||||
|
; 0 - ƒ‹€‚<E282AC>€Ÿ <20><>Ž‚…<E2809A>Š€ <20><>Žƒ<C5BD>€ŒŒ›
|
||||||
|
; 1 - <20>…‚…<E2809A><E280A6>›‰ ”Ž<E2809D>Œ€’ ˆŒ…<C592>ˆ
|
||||||
|
; 2 - ŠŽ<C5A0>…– Š€’€‹Žƒ€
|
||||||
|
;
|
||||||
596
TRDOS/TR_MSD_3.ASZ
Normal file
596
TRDOS/TR_MSD_3.ASZ
Normal file
@ -0,0 +1,596 @@
|
|||||||
|
|
||||||
|
INIT_RMD:
|
||||||
|
LD C,9FH
|
||||||
|
CALL EXP_FNS
|
||||||
|
EI
|
||||||
|
RET
|
||||||
|
|
||||||
|
; DI
|
||||||
|
; LD C,PAGE3
|
||||||
|
; IN B,(C)
|
||||||
|
; LD A,SYS_PAGE
|
||||||
|
; OUT (C),A
|
||||||
|
; LD A,(0C000H)
|
||||||
|
; CPL
|
||||||
|
; LD (0C000H),A
|
||||||
|
; OUT (C),B
|
||||||
|
; EI
|
||||||
|
; CALL INIT_SYS_PAGE
|
||||||
|
; JP AUTO_03E1
|
||||||
|
|
||||||
|
;INIT_SYS_PAGE:
|
||||||
|
; LD C,97H
|
||||||
|
; CALL EXP_FNS
|
||||||
|
; EI
|
||||||
|
; RET
|
||||||
|
|
||||||
|
RAMD_FAT_PROG:
|
||||||
|
CALL AUTO_1D97 ; CLS
|
||||||
|
CALL OPEN_CH2
|
||||||
|
LD HL,RAMD_FAT
|
||||||
|
RAMD_F_L1:
|
||||||
|
DI
|
||||||
|
IN A,(PAGE3)
|
||||||
|
LD C,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD A,C
|
||||||
|
LD C,(HL)
|
||||||
|
OUT (PAGE3),A
|
||||||
|
; RET_PAGE3
|
||||||
|
EI
|
||||||
|
PUSH HL
|
||||||
|
LD A,C
|
||||||
|
CALL PRINT_HEX_A
|
||||||
|
POP HL
|
||||||
|
INC L
|
||||||
|
JR NZ,RAMD_F_L1
|
||||||
|
CALL OPEN_CH0
|
||||||
|
JP AUTO_03E1
|
||||||
|
;***************************************************************************
|
||||||
|
TB_ONOFF:
|
||||||
|
DEC DE
|
||||||
|
DEC DE
|
||||||
|
LD A,(DE)
|
||||||
|
CP 'F'
|
||||||
|
JR Z,TB_OFF_EXE
|
||||||
|
CP 'f'
|
||||||
|
JR Z,TB_OFF_EXE
|
||||||
|
TB_ON_EXE:
|
||||||
|
LD C,8Fh
|
||||||
|
LD A,4
|
||||||
|
JP EXP_FNS
|
||||||
|
TB_OFF_EXE:
|
||||||
|
LD C,8Fh
|
||||||
|
LD A,3
|
||||||
|
JP EXP_FNS
|
||||||
|
;
|
||||||
|
;***************************************************************************
|
||||||
|
;
|
||||||
|
; €«£®à¨â¬ ç⥨ï ä ©«
|
||||||
|
;
|
||||||
|
;***************************************************************************
|
||||||
|
; ‚室 - ¤ ë¥ ä ©« ¢ ¯¥à¥¬¥ëå TR-DOS - ¤«¨ ,áâ àâ®¢ë© ª« áâ¥à
|
||||||
|
; ¤à¥á § £à㧪¨, ç «ìë© ¡«®ª § £à㧪¨
|
||||||
|
; ¯à¥¤¢ à¨â¥«ì®¥ § 票¥ max2 - ¤«¨ ¡«®ª , ä« £ ¡«®ª®¢®©
|
||||||
|
; § £à㧪¨
|
||||||
|
;***************************************************************************
|
||||||
|
MSDOS_WRITE_FILE:
|
||||||
|
LD (CONT_BUF_ADR),HL ; ¤à¥á § £à㧪¨
|
||||||
|
LD (MED_START),A ; áâà ¨æ § £à㧪¨
|
||||||
|
LD A,6
|
||||||
|
JR MSDOS_R_W_FILE
|
||||||
|
;
|
||||||
|
MSDOS_READ_FILE:
|
||||||
|
LD (CONT_BUF_ADR),HL ; ¤à¥á § £à㧪¨
|
||||||
|
LD (MED_START),A ; áâà ¨æ § £à㧪¨
|
||||||
|
LD A,5
|
||||||
|
MSDOS_R_W_FILE:
|
||||||
|
LD (MED_LEN),A
|
||||||
|
; beg=start_claster ; <20>®«ãç¨âì ç «ìë© ª« áâ¥à
|
||||||
|
LD IX,(START_CLASTER) ; áâ àâ®¢ë© ª« áâ¥à
|
||||||
|
; next=beg
|
||||||
|
; max=file_len ; ¤«¨ ¢ ª« áâ¥à å
|
||||||
|
CALL GET_FILE_CLASTERS_BC
|
||||||
|
; LD A,B
|
||||||
|
; CALL PRINT_HEX_A
|
||||||
|
; LD A,C
|
||||||
|
; CALL PRINT_HEX_A
|
||||||
|
msd_rf_cont2:
|
||||||
|
; max2=blk_len ; ¤«¨ ¡«®ª ¢ ª« áâ¥à å
|
||||||
|
|
||||||
|
; DI ; GET_BLK_CLASTERS_L
|
||||||
|
; IN A,(PAGE3)
|
||||||
|
; EX AF,AF'
|
||||||
|
; LD A,SYS_PAGE
|
||||||
|
; OUT (PAGE3),A
|
||||||
|
; LD A,(C_P_B)
|
||||||
|
; LD L,A
|
||||||
|
; EX AF,AF'
|
||||||
|
; OUT (PAGE3),A
|
||||||
|
; EI
|
||||||
|
|
||||||
|
LD L,128
|
||||||
|
|
||||||
|
msd_rf_cont1:
|
||||||
|
; num=0
|
||||||
|
PUSH IX
|
||||||
|
POP DE
|
||||||
|
LD A,0
|
||||||
|
;---------------------------------
|
||||||
|
msd_rf_cont:
|
||||||
|
; num=num+1
|
||||||
|
INC A
|
||||||
|
; if num=max then goto msd_rf_last_blk ; <20>஢¥à¨âì ç¨á«® ª« áâ¥à®¢,
|
||||||
|
CP C
|
||||||
|
JR NZ,msd_rf_l1
|
||||||
|
DEC B
|
||||||
|
INC B
|
||||||
|
JR Z,msd_rf_last_blk
|
||||||
|
msd_rf_l1:
|
||||||
|
; if num=max2 then goto msd_rf_blk ; <20>஢¥à¨âì ç¨á«® ª« áâ¥à®¢,
|
||||||
|
CP L
|
||||||
|
PUSH HL
|
||||||
|
PUSH BC
|
||||||
|
PUSH AF
|
||||||
|
|
||||||
|
JR Z,msd_rf_blk
|
||||||
|
; sec=next ; ç¨â ¥¬ëå § ®¤¨ à §
|
||||||
|
; next=FAT(sec) ; ‚ëç¨á«¨âì á«¥¤ãî騩 ª« áâ¥à
|
||||||
|
CALL FAT_DE_to_HL
|
||||||
|
; if next = end then goto msd_rf_last_blk ; ¯à®¢¥à¨âì ª®¥æ
|
||||||
|
JR C,msd_rf_last_blk2
|
||||||
|
EX DE,HL
|
||||||
|
AND A
|
||||||
|
INC HL
|
||||||
|
; if next-sec = 1 then goto msd_rf_cont ; <20>஢¥à¨âì next
|
||||||
|
SBC HL,DE
|
||||||
|
JR NZ,msd_rf_blk2
|
||||||
|
|
||||||
|
POP AF
|
||||||
|
POP BC
|
||||||
|
POP HL
|
||||||
|
JR msd_rf_cont
|
||||||
|
;---------------------------------
|
||||||
|
msd_rf_blk:
|
||||||
|
CALL FAT_DE_to_HL
|
||||||
|
JR C,msd_rf_last_blk2
|
||||||
|
EX DE,HL
|
||||||
|
msd_rf_blk2:
|
||||||
|
; beg=next
|
||||||
|
; EX DE,IX
|
||||||
|
PUSH IX
|
||||||
|
PUSH DE
|
||||||
|
POP IX
|
||||||
|
POP DE
|
||||||
|
|
||||||
|
POP AF
|
||||||
|
PUSH AF
|
||||||
|
call READ_num_clasters_from_beg ; ç¨â âì á ª« áâ¥à DE
|
||||||
|
POP AF
|
||||||
|
POP BC
|
||||||
|
POP HL
|
||||||
|
LD H,A
|
||||||
|
|
||||||
|
; max=max-num
|
||||||
|
LD A,C
|
||||||
|
SUB H
|
||||||
|
LD C,A
|
||||||
|
JR NC,msd_rf_l2
|
||||||
|
DEC B
|
||||||
|
msd_rf_l2:
|
||||||
|
|
||||||
|
; max2=max2-num ; ¡«®ª ®ª®ç¥ ?
|
||||||
|
LD A,L
|
||||||
|
SUB H
|
||||||
|
LD L,A
|
||||||
|
; if not max2=0 then goto msd_rf_cont1 ; ¥á«¨ ¤ ,á«¥¤ãî騩 ¡«®ª
|
||||||
|
JR NZ,msd_rf_cont1
|
||||||
|
; max2=blk_len ; ¤«¨ ¡«®ª ¢ ª« áâ¥à å ¤«ï ç⥨ï
|
||||||
|
JR msd_rf_cont2
|
||||||
|
;-------------------------------
|
||||||
|
msd_rf_last_blk2:
|
||||||
|
POP AF
|
||||||
|
POP BC
|
||||||
|
POP HL
|
||||||
|
msd_rf_last_blk:
|
||||||
|
; EX DE,IX
|
||||||
|
push de
|
||||||
|
push ix
|
||||||
|
pop de
|
||||||
|
pop ix
|
||||||
|
call READ_num_clasters_from_beg
|
||||||
|
RET
|
||||||
|
;=========================================
|
||||||
|
READ_num_clasters_from_beg:
|
||||||
|
PUSH IX
|
||||||
|
PUSH DE
|
||||||
|
|
||||||
|
CALL CLAST_TO_SEC
|
||||||
|
|
||||||
|
PUSH AF
|
||||||
|
LD A,(MED_LEN)
|
||||||
|
LD C,A
|
||||||
|
SUB 5
|
||||||
|
JR Z,CONT_XX1
|
||||||
|
DEC A
|
||||||
|
JR NZ,SKEEP_XX1
|
||||||
|
CONT_XX1:
|
||||||
|
POP AF
|
||||||
|
|
||||||
|
ADD A,A
|
||||||
|
INC A
|
||||||
|
|
||||||
|
LOOP_128:
|
||||||
|
|
||||||
|
PUSH AF
|
||||||
|
PUSH DE
|
||||||
|
PUSH IX
|
||||||
|
PUSH BC
|
||||||
|
|
||||||
|
LD HL,(CONT_BUF_ADR)
|
||||||
|
LD A,(MED_START)
|
||||||
|
|
||||||
|
CALL MSD_R_W_UT
|
||||||
|
|
||||||
|
LD (CONT_BUF_ADR),HL
|
||||||
|
LD (MED_START),A
|
||||||
|
|
||||||
|
POP BC
|
||||||
|
POP IX
|
||||||
|
POP DE
|
||||||
|
POP AF
|
||||||
|
|
||||||
|
LD H,0
|
||||||
|
LD L,B
|
||||||
|
AND A
|
||||||
|
ADC HL,DE
|
||||||
|
JR NC,NO_INC_IX
|
||||||
|
INC IX
|
||||||
|
NO_INC_IX:
|
||||||
|
EX DE,HL
|
||||||
|
|
||||||
|
LD B,128
|
||||||
|
DEC A
|
||||||
|
JR NZ,LOOP_128
|
||||||
|
|
||||||
|
POP DE
|
||||||
|
POP IX
|
||||||
|
RET
|
||||||
|
|
||||||
|
SKEEP_XX1:
|
||||||
|
POP AF
|
||||||
|
|
||||||
|
POP DE
|
||||||
|
POP IX
|
||||||
|
RET
|
||||||
|
;*****************************************
|
||||||
|
MADE_next_blk:
|
||||||
|
PUSH BC
|
||||||
|
LD C,95h
|
||||||
|
CALL EXP_FNS
|
||||||
|
POP BC
|
||||||
|
INC L ; SET ZF, if END BLK !!!
|
||||||
|
LD HL,0C000H
|
||||||
|
RET
|
||||||
|
;*****************************************
|
||||||
|
|
||||||
|
CLAST_TO_SEC:
|
||||||
|
PUSH AF
|
||||||
|
EX DE,HL
|
||||||
|
CALL CALC_CLAST
|
||||||
|
|
||||||
|
DI
|
||||||
|
IN A,(PAGE3)
|
||||||
|
LD B,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD A,(MS_BPB+CLAST_SIZE)
|
||||||
|
LD C,A
|
||||||
|
LD A,B
|
||||||
|
OUT (PAGE3),A
|
||||||
|
EI
|
||||||
|
|
||||||
|
POP AF
|
||||||
|
|
||||||
|
PUSH HL
|
||||||
|
LD L,A
|
||||||
|
LD H,0
|
||||||
|
|
||||||
|
LD A,C
|
||||||
|
CLAST_TO_SEC_L:
|
||||||
|
RRA
|
||||||
|
JR C,CLAST_TO_SEC_L2
|
||||||
|
ADD HL,HL
|
||||||
|
JR CLAST_TO_SEC_L
|
||||||
|
|
||||||
|
CLAST_TO_SEC_L2:
|
||||||
|
LD B,L
|
||||||
|
LD A,H
|
||||||
|
POP HL
|
||||||
|
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
FAT_DE_to_HL:
|
||||||
|
; LD H,D
|
||||||
|
; LD L,E
|
||||||
|
; INC HL
|
||||||
|
; AND A
|
||||||
|
; RET
|
||||||
|
|
||||||
|
PUSH AF
|
||||||
|
PUSH DE
|
||||||
|
PUSH BC
|
||||||
|
PUSH IX
|
||||||
|
DI
|
||||||
|
IN A,(PAGE3)
|
||||||
|
LD C,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD A,C
|
||||||
|
LD HL,(FAT_FLAG)
|
||||||
|
LD BC,(MS_BPB+SEC_SIZE) ; à §¬¥à ᥪâ®à
|
||||||
|
OUT (PAGE3),A
|
||||||
|
EI
|
||||||
|
|
||||||
|
PUSH HL
|
||||||
|
LD A,H
|
||||||
|
AND 80H
|
||||||
|
LD C,A
|
||||||
|
LD H,D
|
||||||
|
LD L,E
|
||||||
|
|
||||||
|
ADD HL,DE
|
||||||
|
ADC A,C
|
||||||
|
JR NC,FAT_12_L1
|
||||||
|
ADD HL,DE
|
||||||
|
ADC A,C
|
||||||
|
FAT_12_L1:
|
||||||
|
ADD HL,DE
|
||||||
|
ADC A,C
|
||||||
|
|
||||||
|
RRA ; A,HL = FATx4..3/2
|
||||||
|
RR H
|
||||||
|
RR L
|
||||||
|
|
||||||
|
POP DE ; ¢®ááâ ®¢¨âì ä« £¨ FAT ¢ DE
|
||||||
|
PUSH AF ; § ¯®¬¨âì ä« £ ᬥ饨ï
|
||||||
|
; HL - ᬥ饨¥ ®â ç « FAT
|
||||||
|
|
||||||
|
; A,HL - ᬥ饨¥ ¢ FAT
|
||||||
|
PUSH HL
|
||||||
|
LD C,0
|
||||||
|
PUSH BC
|
||||||
|
|
||||||
|
FAT_DE_L1:
|
||||||
|
RR B
|
||||||
|
JR C,FAT_DE_L2
|
||||||
|
RRA
|
||||||
|
RR H
|
||||||
|
JR FAT_DE_L1
|
||||||
|
|
||||||
|
FAT_DE_L2:
|
||||||
|
|
||||||
|
LD A,H ; A - ᥪâ®à FAT
|
||||||
|
BIT 0,D
|
||||||
|
JR NZ,CALL_ALL
|
||||||
|
CP E ; ®¬¥à à ¥¥ áç¨â ®£® ᥪâ®à FAT
|
||||||
|
CALL_ALL:
|
||||||
|
CALL NZ,READ_FAT_SEC ; ç¨â âì FAT ᥪâ®à ®¬¥à A
|
||||||
|
POP BC ; ¢á¯®¬¨âì à §¬¥à ᥪâ®à
|
||||||
|
POP HL ; ¢á¯®¬¨âì ¤à¥á ¢ FAT
|
||||||
|
|
||||||
|
DEC BC
|
||||||
|
LD A,H
|
||||||
|
AND B
|
||||||
|
LD H,A
|
||||||
|
|
||||||
|
LD BC,MS_FAT
|
||||||
|
ADD HL,BC
|
||||||
|
DI
|
||||||
|
IN A,(PAGE3)
|
||||||
|
LD C,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD A,C
|
||||||
|
LD (FAT_FLAG),DE
|
||||||
|
LD C,(HL) ; áç¨â âì ª« áâ¥à
|
||||||
|
INC HL
|
||||||
|
LD B,(HL)
|
||||||
|
INC HL
|
||||||
|
OUT (PAGE3),A
|
||||||
|
; RET_PAGE3
|
||||||
|
EI
|
||||||
|
POP AF
|
||||||
|
JR NC,FAT_HALF
|
||||||
|
LD A,4
|
||||||
|
FAT_HALF_L:
|
||||||
|
RR B
|
||||||
|
RR C
|
||||||
|
DEC A
|
||||||
|
JR NZ,FAT_HALF_L
|
||||||
|
FAT_HALF:
|
||||||
|
BIT 7,D
|
||||||
|
LD A,0FFH
|
||||||
|
JR NZ,FAT_16_L2
|
||||||
|
LD A,0FH
|
||||||
|
AND B
|
||||||
|
LD B,A
|
||||||
|
LD A,0FH
|
||||||
|
FAT_16_L2:
|
||||||
|
CP B
|
||||||
|
JR NZ,NO_END_CLAST
|
||||||
|
FAT_ALL:
|
||||||
|
LD A,C
|
||||||
|
CP 0F0H
|
||||||
|
JR C,NO_END_CLAST
|
||||||
|
LD L,C
|
||||||
|
LD H,B
|
||||||
|
POP IX
|
||||||
|
POP BC
|
||||||
|
POP DE
|
||||||
|
POP AF
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
|
||||||
|
BLOCK #09FF-$, #FF
|
||||||
|
BLOCK #0A01-$, #FF
|
||||||
|
|
||||||
|
NO_END_CLAST:
|
||||||
|
; PUSH AF
|
||||||
|
; LD A,B
|
||||||
|
; CALL PRINT_HEX_A
|
||||||
|
; LD A,C
|
||||||
|
; CALL PRINT_HEX_A
|
||||||
|
; POP AF
|
||||||
|
LD H,B
|
||||||
|
LD L,C
|
||||||
|
POP IX
|
||||||
|
POP BC
|
||||||
|
POP DE
|
||||||
|
POP AF
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
ERROR_FAT:
|
||||||
|
LD HL,MSG_3 ; ERROR
|
||||||
|
JP AUTO_03E4
|
||||||
|
|
||||||
|
;**********************************************
|
||||||
|
|
||||||
|
READ_FAT_SEC:
|
||||||
|
PUSH IX
|
||||||
|
PUSH HL
|
||||||
|
PUSH BC
|
||||||
|
LD E,A
|
||||||
|
RES 0,D
|
||||||
|
PUSH DE
|
||||||
|
LD D,0
|
||||||
|
|
||||||
|
DI
|
||||||
|
IN A,(PAGE3)
|
||||||
|
LD L,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD A,L
|
||||||
|
LD IX,(MSD_FAT_SEC)
|
||||||
|
LD HL,(MSD_FAT_SEC2)
|
||||||
|
OUT (PAGE3),A
|
||||||
|
EI
|
||||||
|
|
||||||
|
LD BC,0
|
||||||
|
ADD IX,DE
|
||||||
|
ADC HL,BC
|
||||||
|
|
||||||
|
PUSH IX
|
||||||
|
POP DE
|
||||||
|
PUSH HL
|
||||||
|
POP IX
|
||||||
|
|
||||||
|
LD HL,(CONT_BUF_ADR)
|
||||||
|
LD A,(MED_START)
|
||||||
|
PUSH AF
|
||||||
|
PUSH HL
|
||||||
|
|
||||||
|
LD HL,MS_FAT
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
LD B,2
|
||||||
|
LD C,5
|
||||||
|
CALL MSD_R_W_UT
|
||||||
|
|
||||||
|
POP HL
|
||||||
|
POP AF
|
||||||
|
LD (CONT_BUF_ADR),HL
|
||||||
|
LD (MED_START),A
|
||||||
|
|
||||||
|
POP DE
|
||||||
|
POP BC
|
||||||
|
POP HL
|
||||||
|
POP IX
|
||||||
|
RET
|
||||||
|
;**********************************************
|
||||||
|
;
|
||||||
|
; ‘ç¨âë¢ ¨¥ FAT ¯® âਠᥪâ®à ???
|
||||||
|
;
|
||||||
|
;**********************************************
|
||||||
|
|
||||||
|
GET_FILE_CLASTERS_BC:
|
||||||
|
DI
|
||||||
|
IN A,(PAGE3)
|
||||||
|
LD L,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD A,L
|
||||||
|
LD HL,(CLASTER_LEN)
|
||||||
|
OUT (PAGE3),A
|
||||||
|
; RET_PAGE3
|
||||||
|
EI
|
||||||
|
LD BC,(FL_SIZE)
|
||||||
|
LD A,(FL_SIZE+2)
|
||||||
|
LD DE,0
|
||||||
|
SCF
|
||||||
|
GET_FL_CL_2: ; ¢ëç¨á«¥¨¥ ª®«¨ç¥á⢠ª« áâ¥à®¢ ¢ ä ©«¥
|
||||||
|
RR H ; HL/2
|
||||||
|
RR L
|
||||||
|
JR C,GET_FL_L2 ; ¥á«¨ ¯¥à¢ë© ¡¨â = 1 - ¢ë©â¨ ¨§ 横«
|
||||||
|
RRA ; file_len/2
|
||||||
|
RR B
|
||||||
|
RR C
|
||||||
|
JR NC,GET_FL_CL_2
|
||||||
|
LD E,1
|
||||||
|
JR GET_FL_CL_2
|
||||||
|
GET_FL_L2:
|
||||||
|
BIT 0,E
|
||||||
|
RET Z
|
||||||
|
INC BC
|
||||||
|
RET
|
||||||
|
;***************************************************************************
|
||||||
|
|
||||||
|
HDD_PROG:
|
||||||
|
LD C,0
|
||||||
|
CALL HD_CMD
|
||||||
|
JP C,HDD_PROG_E
|
||||||
|
LD HL,HD_IDF_ADR+54
|
||||||
|
LD B,32
|
||||||
|
HDD_PROG_L:
|
||||||
|
DI
|
||||||
|
IN A,(PAGE3)
|
||||||
|
LD D,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD A,L
|
||||||
|
XOR 1
|
||||||
|
LD L,A
|
||||||
|
LD C,(HL)
|
||||||
|
LD A,L
|
||||||
|
XOR 1
|
||||||
|
LD L,A
|
||||||
|
INC HL
|
||||||
|
LD A,D
|
||||||
|
OUT (PAGE3),A
|
||||||
|
; RET_PAGE3
|
||||||
|
EI
|
||||||
|
LD A,C
|
||||||
|
PUSH BC
|
||||||
|
RST 10H
|
||||||
|
POP BC
|
||||||
|
DJNZ HDD_PROG_L
|
||||||
|
LD C,1
|
||||||
|
CALL HD_CMD
|
||||||
|
JP NC,AUTO_03E1
|
||||||
|
|
||||||
|
HDD_ERROR:
|
||||||
|
CALL PRINT_HEX_A
|
||||||
|
LD HL,HD_TX
|
||||||
|
JP AUTO_03E4
|
||||||
|
|
||||||
|
; JP AUTO_03E1
|
||||||
|
|
||||||
|
HDD_PROG_E:
|
||||||
|
LD HL,HD_TX2
|
||||||
|
JP AUTO_03E4
|
||||||
|
;
|
||||||
|
;***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
768
TRDOS/TR_MSD_S.ASZ
Normal file
768
TRDOS/TR_MSD_S.ASZ
Normal file
@ -0,0 +1,768 @@
|
|||||||
|
;
|
||||||
|
; for INCLUDE
|
||||||
|
; MS-DOS system
|
||||||
|
;
|
||||||
|
;********************************************
|
||||||
|
; MS-DOS utilites
|
||||||
|
;********************************************
|
||||||
|
|
||||||
|
;************************************************
|
||||||
|
;* <09>à®£à ¬¬ ç⥨ï/§ ¯¨á¨ MS-DOS ¤¨áª®¢ *
|
||||||
|
;* 1. €¤à¥á ¡ãä¥à - HL *
|
||||||
|
;* 2. <20>®¬¥à ᥪâ®à - DE *
|
||||||
|
;* 3. —¨á«® ᥪâ®à®¢ - B *
|
||||||
|
;* 4. Š®¬ ¤ - C *
|
||||||
|
;* 5. ‘âà ¨æ Ž‡“ - A *
|
||||||
|
;************************************************
|
||||||
|
|
||||||
|
HDD_REDIR:
|
||||||
|
POP AF
|
||||||
|
CALL HD_CMD
|
||||||
|
RET NC
|
||||||
|
JP HDD_ERROR
|
||||||
|
|
||||||
|
MSD_R_W_UT:
|
||||||
|
PUSH AF
|
||||||
|
CALL DISK_REDIR
|
||||||
|
CP 40H
|
||||||
|
JR NC,HDD_REDIR
|
||||||
|
POP AF
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,C
|
||||||
|
SUB 4
|
||||||
|
JR Z,MSD_cmd4
|
||||||
|
; JR Z,MSD_cmd4M
|
||||||
|
DEC A
|
||||||
|
JR Z,MSD_cmd5
|
||||||
|
; JR Z,MSD_cmd5M
|
||||||
|
DEC A
|
||||||
|
JR Z,MSD_cmd6
|
||||||
|
; JR Z,MSD_cmd6M
|
||||||
|
EX AF,AF'
|
||||||
|
RET
|
||||||
|
|
||||||
|
;MSD_cmd4M:
|
||||||
|
; LD DE,0
|
||||||
|
; LD IX,0
|
||||||
|
; LD B,1
|
||||||
|
;MSD_cmd5M:
|
||||||
|
; EX DE,HL
|
||||||
|
; PUSH IX
|
||||||
|
; EX (SP),HL
|
||||||
|
; POP IX
|
||||||
|
; LD C,12H
|
||||||
|
; LD A,(OPER_DISK)
|
||||||
|
; DI
|
||||||
|
; PUSH IY
|
||||||
|
; CALL HD_CMD
|
||||||
|
; POP IY
|
||||||
|
; EI
|
||||||
|
; PUSH IX
|
||||||
|
; EX (SP),HL
|
||||||
|
; POP IX
|
||||||
|
; EX DE,HL
|
||||||
|
; JP C,ERROR_MSDOS
|
||||||
|
; EX AF,AF'
|
||||||
|
; AND A
|
||||||
|
; RET
|
||||||
|
;
|
||||||
|
;MSD_cmd6M:
|
||||||
|
; EX DE,HL
|
||||||
|
; PUSH IX
|
||||||
|
; EX (SP),HL
|
||||||
|
; POP IX
|
||||||
|
; LD C,13H
|
||||||
|
; LD A,(OPER_DISK)
|
||||||
|
; DI
|
||||||
|
; PUSH IY
|
||||||
|
; CALL HD_CMD
|
||||||
|
; POP IY
|
||||||
|
; EI
|
||||||
|
; PUSH IX
|
||||||
|
; EX (SP),HL
|
||||||
|
; POP IX
|
||||||
|
; EX DE,HL
|
||||||
|
; JP C,ERROR_MSDOS
|
||||||
|
; EX AF,AF'
|
||||||
|
; AND A
|
||||||
|
; RET
|
||||||
|
|
||||||
|
|
||||||
|
;*************************************
|
||||||
|
|
||||||
|
MSD_cmd4:
|
||||||
|
PUSH HL
|
||||||
|
PUSH AF
|
||||||
|
CALL RESET_WG
|
||||||
|
POP AF
|
||||||
|
POP HL
|
||||||
|
LD B,1
|
||||||
|
LD DE,0
|
||||||
|
MSD_cmd5:
|
||||||
|
LD A,0
|
||||||
|
LD (RD_WR_COM),A
|
||||||
|
EX AF,AF'
|
||||||
|
JR MSD_RWU1
|
||||||
|
MSD_cmd6:
|
||||||
|
LD A,255
|
||||||
|
LD (RD_WR_COM),A
|
||||||
|
EX AF,AF'
|
||||||
|
JR MSD_RWU1
|
||||||
|
|
||||||
|
PREPARE1:
|
||||||
|
LD (MED_START),A
|
||||||
|
LD (CONT_BUF_ADR),HL
|
||||||
|
DI
|
||||||
|
IN A,(PAGE2)
|
||||||
|
LD C,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
|
||||||
|
LD A,(DS_1440-4000H)
|
||||||
|
AND BIT_MASK_1440
|
||||||
|
SET 0,A
|
||||||
|
LD (DS_1440-4000H),A
|
||||||
|
LD A,C
|
||||||
|
OUT (PAGE2),A
|
||||||
|
EI
|
||||||
|
CALL Z,RES_1440
|
||||||
|
CALL NZ,SET_1440
|
||||||
|
|
||||||
|
CALL CALC_SECTOR
|
||||||
|
LD (CONT_SEC),DE
|
||||||
|
LD A,(RD_WR_COM)
|
||||||
|
RET
|
||||||
|
|
||||||
|
MSD_RWU1:
|
||||||
|
PUSH BC
|
||||||
|
PUSH HL
|
||||||
|
CALL PREPARE1
|
||||||
|
; JR MSD_R_W_LOOP
|
||||||
|
|
||||||
|
MSD_R_W_LOOP:
|
||||||
|
POP HL
|
||||||
|
POP BC
|
||||||
|
LD A,(MED_START)
|
||||||
|
INC B
|
||||||
|
DEC B
|
||||||
|
LD DE,(CONT_SEC)
|
||||||
|
RET Z
|
||||||
|
|
||||||
|
DEC B
|
||||||
|
PUSH BC
|
||||||
|
PUSH HL
|
||||||
|
LD (CONT_BUF_ADR),HL
|
||||||
|
LD A,(CONT_SEC)
|
||||||
|
LD (SEC_NUM),A
|
||||||
|
LD A,(CONT_TRK)
|
||||||
|
CALL Global_trk
|
||||||
|
LD A,(RD_WR_COM)
|
||||||
|
OR A
|
||||||
|
PUSH AF
|
||||||
|
CALL Z,MSD_3F0E
|
||||||
|
POP AF
|
||||||
|
CALL NZ,MSD_3F0A
|
||||||
|
DI
|
||||||
|
IN A,(PAGE2)
|
||||||
|
LD C,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD DE,(MS_BPB+SEC_SIZE-4000h)
|
||||||
|
LD A,C
|
||||||
|
OUT (PAGE2),A
|
||||||
|
EI
|
||||||
|
POP HL
|
||||||
|
ADD HL,DE
|
||||||
|
LD A,H
|
||||||
|
OR L
|
||||||
|
JR NZ,MSD_NO_PAGE
|
||||||
|
DI
|
||||||
|
IN A,(PAGE2)
|
||||||
|
LD C,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD A,(MED_START)
|
||||||
|
LD HL,RAMD_FAT-4000H
|
||||||
|
LD L,A
|
||||||
|
LD L,(HL)
|
||||||
|
LD A,C
|
||||||
|
OUT (PAGE2),A
|
||||||
|
EI
|
||||||
|
LD A,L
|
||||||
|
LD HL,0C000H
|
||||||
|
LD (MED_START),A
|
||||||
|
MSD_NO_PAGE:
|
||||||
|
LD (CONT_BUF_ADR),HL
|
||||||
|
PUSH HL
|
||||||
|
|
||||||
|
DI
|
||||||
|
IN A,(PAGE2)
|
||||||
|
LD C,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD A,(DS_1440-4000H)
|
||||||
|
RES 0,A
|
||||||
|
LD (DS_1440-4000H),A
|
||||||
|
LD A,(MSD_SECS-4000h)
|
||||||
|
LD L,A
|
||||||
|
LD A,C
|
||||||
|
OUT (PAGE2),A
|
||||||
|
EI
|
||||||
|
LD A,L
|
||||||
|
LD HL,CONT_SEC
|
||||||
|
INC (HL)
|
||||||
|
CP (HL)
|
||||||
|
JP NZ,MSD_R_W_LOOP
|
||||||
|
LD (HL),0
|
||||||
|
LD HL,CONT_TRK
|
||||||
|
INC (HL)
|
||||||
|
JP MSD_R_W_LOOP
|
||||||
|
;*****************************************
|
||||||
|
;
|
||||||
|
;*****************************************
|
||||||
|
MSD_3F0A:
|
||||||
|
LD A,160
|
||||||
|
JR MSD_3F10
|
||||||
|
MSD_3F0E:
|
||||||
|
LD A,128
|
||||||
|
MSD_3F10:
|
||||||
|
LD (COMAND_WG),A
|
||||||
|
MSD_3F13:
|
||||||
|
LD D,5 ; —ˆ‘‹Ž <20>Ž‚’Ž<E28099>…<EFBFBD>ˆ‰
|
||||||
|
MSD_3F15:
|
||||||
|
PUSH DE
|
||||||
|
PUSH IX
|
||||||
|
DI
|
||||||
|
IN A,(PAGE3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,(MED_START)
|
||||||
|
OUT (PAGE3),A
|
||||||
|
AND A
|
||||||
|
JR Z,NO_OFF_SCR
|
||||||
|
LD A,0C0H
|
||||||
|
OUT (RGADR),A
|
||||||
|
NO_OFF_SCR:
|
||||||
|
LD IX,MSD_RET_ADR
|
||||||
|
LD A,(SEC_NUM)
|
||||||
|
INC A
|
||||||
|
OUT (WG_SEC),A
|
||||||
|
LD HL,(CONT_BUF_ADR)
|
||||||
|
LD C,127
|
||||||
|
LD A,(COMAND_WG)
|
||||||
|
OUT (WG_COM),A
|
||||||
|
CP 160
|
||||||
|
JP Z,MSD_3FBA ; ‡€<E280A1>ˆ‘œ ‘…Š’Ž<E28099>€
|
||||||
|
JP MSD_3FD5 ; —’…<E28099>ˆ… ‘…Š’Ž<E28099>€
|
||||||
|
MSD_RET_ADR:
|
||||||
|
LD A,0
|
||||||
|
OUT (RGADR),A
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE3),A
|
||||||
|
POP IX
|
||||||
|
POP DE
|
||||||
|
EI
|
||||||
|
IN A,(WG_COM)
|
||||||
|
LD B,A
|
||||||
|
AND 127
|
||||||
|
RET Z
|
||||||
|
|
||||||
|
MSD_3F39:
|
||||||
|
LD HL,READ_ONLY_MSG
|
||||||
|
AND '@'
|
||||||
|
JR NZ,MSD_3F4B
|
||||||
|
LD A,B
|
||||||
|
AND 4
|
||||||
|
JR Z,MSD_3FA0 ; -> „<>“ƒ€Ÿ Ž˜ˆ<CB9C>Š€
|
||||||
|
DEC D ; <20>Ž’…<E28099>Ÿ „€<E2809E><E282AC>›•
|
||||||
|
JR Z,MSD_3F48 ; MSD_3F15
|
||||||
|
CALL SWITCH_DT
|
||||||
|
JR MSD_3F15
|
||||||
|
MSD_3F48:
|
||||||
|
LD HL,DISK_ERROR_MSG
|
||||||
|
MSD_3F4B:
|
||||||
|
LD A,208
|
||||||
|
OUT (WG_COM),A
|
||||||
|
LD A,B
|
||||||
|
AND 1
|
||||||
|
JP NZ,AUTO_3EE7
|
||||||
|
|
||||||
|
PUSH HL
|
||||||
|
CALL AUTO_1D97
|
||||||
|
POP HL
|
||||||
|
RST PRINT_LN
|
||||||
|
LD HL,AUTO_2A13
|
||||||
|
RST PRINT_LN
|
||||||
|
IN A,(WG_TRK)
|
||||||
|
CALL AUTO_1DA3
|
||||||
|
LD HL,AUTO_2A18
|
||||||
|
RST PRINT_LN
|
||||||
|
IN A,(WG_SEC)
|
||||||
|
CALL AUTO_1DA3
|
||||||
|
LD HL,AUTO_29FE
|
||||||
|
RST PRINT_LN
|
||||||
|
MSD_3F7B:
|
||||||
|
CALL AUTO_1052
|
||||||
|
CP 'I'
|
||||||
|
RET Z
|
||||||
|
CP 'R'
|
||||||
|
JR Z,MSD_3F94
|
||||||
|
CP 'A'
|
||||||
|
JR NZ,MSD_3F7B
|
||||||
|
CALL exit_No_disk
|
||||||
|
LD A,7
|
||||||
|
LD (DOS_ERR_2),A
|
||||||
|
JP AUTO_01D3
|
||||||
|
MSD_3F94:
|
||||||
|
LD A,(CONT_TRK)
|
||||||
|
CALL Global_trk
|
||||||
|
CALL pause_750ms
|
||||||
|
JP MSD_3F13
|
||||||
|
MSD_3FA0:
|
||||||
|
DEC D
|
||||||
|
JP Z,MSD_3F48
|
||||||
|
CALL SWITCH_DT
|
||||||
|
PUSH DE
|
||||||
|
CALL AUTO_3D98 ; RESET_WG
|
||||||
|
LD A,(CONT_TRK)
|
||||||
|
CALL Global_trk ; <20>އˆ–ˆŽ<CB86>ˆ<EFBFBD>Ž‚€<E2809A>ˆ…
|
||||||
|
POP DE
|
||||||
|
JP MSD_3F15
|
||||||
|
|
||||||
|
|
||||||
|
SWITCH_DT:
|
||||||
|
DI
|
||||||
|
IN A,(PAGE2)
|
||||||
|
LD C,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD A,(DS_1440-4000H)
|
||||||
|
BIT 0,A
|
||||||
|
JR Z,NO_SW_DT
|
||||||
|
XOR BIT_MASK_1440
|
||||||
|
LD (DS_1440-4000H),A
|
||||||
|
AND BIT_MASK_1440
|
||||||
|
LD A,C
|
||||||
|
OUT (PAGE2),A
|
||||||
|
EI
|
||||||
|
CALL Z,RES_1440
|
||||||
|
CALL NZ,SET_1440
|
||||||
|
RET
|
||||||
|
NO_SW_DT:
|
||||||
|
LD A,C
|
||||||
|
OUT (PAGE2),A
|
||||||
|
EI
|
||||||
|
RET
|
||||||
|
|
||||||
|
;******************************************
|
||||||
|
; Sector Write !!!
|
||||||
|
;******************************************
|
||||||
|
MSD_3FBA:
|
||||||
|
LD B,4
|
||||||
|
MSD_3FBC:
|
||||||
|
IN A,(P_DOS_FF)
|
||||||
|
AND 192
|
||||||
|
JR NZ,MSD_3FD1
|
||||||
|
INC DE
|
||||||
|
LD A,E
|
||||||
|
OR D
|
||||||
|
JR NZ,MSD_3FBC
|
||||||
|
DJNZ MSD_3FBC
|
||||||
|
MSD_RET_IX:
|
||||||
|
JP (IX)
|
||||||
|
MSD_3FCA:
|
||||||
|
IN A,(P_DOS_FF)
|
||||||
|
AND 192
|
||||||
|
JR Z,MSD_3FCA
|
||||||
|
JP M,MSD_RET_IX
|
||||||
|
MSD_3FD1:
|
||||||
|
OUTI
|
||||||
|
JR MSD_3FCA
|
||||||
|
;******************************************
|
||||||
|
; Sector Read !!!
|
||||||
|
;******************************************
|
||||||
|
MSD_3FD5:
|
||||||
|
LD B,4
|
||||||
|
MSD_3FD7:
|
||||||
|
IN A,(P_DOS_FF)
|
||||||
|
AND 192
|
||||||
|
JR NZ,MSD_3FEC
|
||||||
|
INC DE
|
||||||
|
LD A,E
|
||||||
|
OR D
|
||||||
|
JR NZ,MSD_3FD7
|
||||||
|
DJNZ MSD_3FD7
|
||||||
|
MSD_RET_IX2:
|
||||||
|
JP (IX)
|
||||||
|
MSD_3FE5:
|
||||||
|
IN A,(P_DOS_FF)
|
||||||
|
AND 192
|
||||||
|
JR Z,MSD_3FE5
|
||||||
|
JP M,MSD_RET_IX2
|
||||||
|
MSD_3FEC:
|
||||||
|
INI
|
||||||
|
JR MSD_3FE5
|
||||||
|
;******************************************
|
||||||
|
|
||||||
|
;****************************************
|
||||||
|
|
||||||
|
RES_1440:
|
||||||
|
LD A,01h
|
||||||
|
OUT (0BDh),A
|
||||||
|
RET
|
||||||
|
|
||||||
|
SET_1440:
|
||||||
|
LD A,21h
|
||||||
|
OUT (0BDh),A
|
||||||
|
RET
|
||||||
|
|
||||||
|
READ_BPB:
|
||||||
|
CALL DISK_REDIR
|
||||||
|
CP 40H
|
||||||
|
JR NC,HDD_REDIR2
|
||||||
|
CP 4
|
||||||
|
JP NC,ERROR_MSDOS
|
||||||
|
|
||||||
|
CALL SET_DISK
|
||||||
|
|
||||||
|
CALL MAIN_BPB
|
||||||
|
RET NC
|
||||||
|
JP ERROR_MSDOS
|
||||||
|
|
||||||
|
HDD_REDIR2:
|
||||||
|
|
||||||
|
CALL MAIN_BPB
|
||||||
|
RET NC
|
||||||
|
|
||||||
|
SPACIAL_BPB:
|
||||||
|
LD IX,0
|
||||||
|
LD DE,63
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
LD HL,MS_BPB
|
||||||
|
LD C,5
|
||||||
|
LD B,1
|
||||||
|
CALL MSD_R_W_UT
|
||||||
|
CALL BPB_PARAMS
|
||||||
|
RET NC
|
||||||
|
JP ERROR_MSDOS
|
||||||
|
|
||||||
|
MAIN_BPB:
|
||||||
|
LD IX,0
|
||||||
|
LD DE,0
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
LD HL,MS_BPB
|
||||||
|
LD C,4
|
||||||
|
LD B,1
|
||||||
|
CALL MSD_R_W_UT
|
||||||
|
CALL BPB_PARAMS
|
||||||
|
RET
|
||||||
|
|
||||||
|
; LD C,18H
|
||||||
|
; LD A,(OPER_DISK)
|
||||||
|
; CALL HD_CMD
|
||||||
|
|
||||||
|
; DI
|
||||||
|
; IN A,(PAGE3)
|
||||||
|
; EX AF,AF'
|
||||||
|
; LD A,SYS_PAGE
|
||||||
|
; OUT (PAGE3),A
|
||||||
|
;
|
||||||
|
; LD A,(MS_BPB+S_P_T) ; Š®«¨ç¥á⢮ ᥪâ®à®¢ â४
|
||||||
|
; LD L,A
|
||||||
|
;
|
||||||
|
; EX AF,AF'
|
||||||
|
; OUT (PAGE3),A
|
||||||
|
; EI
|
||||||
|
;
|
||||||
|
; LD A,(OPER_DISK)
|
||||||
|
; LD C,19H
|
||||||
|
; CALL HD_CMD
|
||||||
|
|
||||||
|
BPB_PARAMS:
|
||||||
|
|
||||||
|
DI
|
||||||
|
IN A,(PAGE3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
|
||||||
|
LD A,(MS_BPB+FORM_CODE)
|
||||||
|
CP 0F0H
|
||||||
|
JP C,ERROR_BPB
|
||||||
|
|
||||||
|
LD HL,MS_BPB+FAT_ID
|
||||||
|
LD DE,FAT1_MSG
|
||||||
|
LD B,4
|
||||||
|
R_BPB_L1:
|
||||||
|
LD A,(DE)
|
||||||
|
CP ' '
|
||||||
|
JR NZ,R_BPB_L11
|
||||||
|
INC DE
|
||||||
|
JR R_BPB_L1
|
||||||
|
R_BPB_L11:
|
||||||
|
CP (HL)
|
||||||
|
JR NZ,PC_DOS_BPB
|
||||||
|
|
||||||
|
INC HL
|
||||||
|
INC DE
|
||||||
|
DJNZ R_BPB_L1
|
||||||
|
LD A,(HL)
|
||||||
|
CP '6'
|
||||||
|
LD HL,81FFH ; FAT16 ä« £
|
||||||
|
JR Z,BPB_FAT
|
||||||
|
CP '2'
|
||||||
|
JP NZ,ERROR_BPB
|
||||||
|
|
||||||
|
PC_DOS_BPB:
|
||||||
|
LD HL,01FFH ; FAT12 ä« £
|
||||||
|
BPB_FAT:
|
||||||
|
LD (FAT_FLAG),HL
|
||||||
|
|
||||||
|
LD A,(MS_BPB+S_P_T) ; Š®«¨ç¥á⢮ ᥪâ®à®¢ â४
|
||||||
|
LD (MSD_SECS),A
|
||||||
|
|
||||||
|
BIT 7,H
|
||||||
|
|
||||||
|
LD IX,0
|
||||||
|
LD HL,0 ; ¢ëç¨á«¨âì ç «ìë© á¥ªâ®à FAT
|
||||||
|
|
||||||
|
JR Z,NO_LD_SPECIAL
|
||||||
|
LD IX,(MS_BPB+SPECIAL_SECS)
|
||||||
|
LD HL,(MS_BPB+SPECIAL_SECS+2)
|
||||||
|
NO_LD_SPECIAL:
|
||||||
|
|
||||||
|
LD BC,0
|
||||||
|
LD DE,(MS_BPB+RESERV_SECS)
|
||||||
|
|
||||||
|
ADD IX,DE
|
||||||
|
ADC HL,BC
|
||||||
|
|
||||||
|
LD (MSD_FAT_SEC),IX ; ç «ìë© á¥ªâ®à FAT
|
||||||
|
LD (MSD_FAT_SEC2),HL ; ç «ìë© á¥ªâ®à FAT
|
||||||
|
|
||||||
|
LD DE,(MS_BPB+S_P_F) ; ç¨á«® ᥪâ®à®¢ ¢ FAT
|
||||||
|
LD BC,0
|
||||||
|
|
||||||
|
LD A,(MS_BPB+FATS_NUM) ; ª®«¨ç¥á⢮ FATs
|
||||||
|
NEXT_ADD:
|
||||||
|
ADD IX,DE
|
||||||
|
ADC HL,BC
|
||||||
|
DEC A
|
||||||
|
JR NZ,NEXT_ADD
|
||||||
|
|
||||||
|
LD (MSD_CAT_SEC),IX ; ç «ìë© á¥ªâ®à DIR
|
||||||
|
LD (MSD_CAT_SEC2),HL ; ç «ìë© á¥ªâ®à DIR
|
||||||
|
|
||||||
|
LD BC,(MS_BPB+SEC_SIZE) ; <20> §¬¥à ᥪâ®à
|
||||||
|
RL C
|
||||||
|
RL B
|
||||||
|
RL C
|
||||||
|
RL B
|
||||||
|
RL C
|
||||||
|
RL B
|
||||||
|
LD C,B
|
||||||
|
LD B,0 ; BC - ç¨á«® ä ©«®¢ëå § ¯¨á¥© ¢ ᥪâ®à¥
|
||||||
|
LD A,C
|
||||||
|
LD (F_P_S),A
|
||||||
|
|
||||||
|
LD DE,(MS_BPB+FLS_NUM) ; —¨á«® ä ©«®¢ëå § ¯¨á¥©
|
||||||
|
|
||||||
|
EX DE,HL
|
||||||
|
DEC HL
|
||||||
|
XOR A
|
||||||
|
NEXT_ADD2:
|
||||||
|
INC A
|
||||||
|
JR Z,ERROR_BPB
|
||||||
|
SBC HL,BC
|
||||||
|
JR NC,NEXT_ADD2
|
||||||
|
EX DE,HL
|
||||||
|
|
||||||
|
LD E,A ; A - ç¨á«® ᥪâ®à®¢ ¢ DIR
|
||||||
|
LD D,0
|
||||||
|
LD BC,0
|
||||||
|
LD (S_P_C),A
|
||||||
|
|
||||||
|
ADD IX,DE ; <20> ç «® DATA area
|
||||||
|
ADC HL,BC
|
||||||
|
|
||||||
|
LD (MSD_DAT_SEC),IX
|
||||||
|
LD (MSD_DAT_SEC2),HL
|
||||||
|
|
||||||
|
LD BC,(MS_BPB+SEC_SIZE) ; <20> §¬¥à ᥪâ®à
|
||||||
|
LD HL,0
|
||||||
|
LD A,(MS_BPB+CLAST_SIZE)
|
||||||
|
LD D,A
|
||||||
|
LD A,0
|
||||||
|
NEXT_ADD3:
|
||||||
|
ADD HL,BC ; ‚ëç¨á«¥¨¥ ¤«¨ë ª« áâ¥à
|
||||||
|
ADC A,0
|
||||||
|
DEC D
|
||||||
|
JR NZ,NEXT_ADD3
|
||||||
|
|
||||||
|
LD (CLASTER_LEN),HL
|
||||||
|
LD B,0
|
||||||
|
LD C,A
|
||||||
|
LD (CLASTER_LEN2),BC
|
||||||
|
|
||||||
|
LD HL,0
|
||||||
|
LD BC,(MS_BPB+S_P_T)
|
||||||
|
LD A,(MS_BPB+H_P_S)
|
||||||
|
BPB_L1: ; ‚›—ˆ‘‹ˆ’œ ŠŽ‹ˆ—…‘’‚Ž ‘…Š’Ž<E28099>Ž‚ <20>€ –ˆ‹ˆ<E280B9>„<EFBFBD>
|
||||||
|
ADD HL,BC
|
||||||
|
DEC A
|
||||||
|
JR NZ,BPB_L1
|
||||||
|
LD (S_X_H),HL
|
||||||
|
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE3),A
|
||||||
|
EI
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
ERROR_BPB:
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE3),A
|
||||||
|
SCF
|
||||||
|
EI
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
ERROR_MSDOS:
|
||||||
|
LD HL,MSG_3
|
||||||
|
JP AUTO_03E4
|
||||||
|
|
||||||
|
FAT1_MSG: DB 'FAT1'
|
||||||
|
;********************************************
|
||||||
|
READ_NEXT_DIR:
|
||||||
|
DI
|
||||||
|
IN A,(PAGE3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD DE,(MSD_CONT_SEC)
|
||||||
|
LD IX,(MSD_CONT_SEC2)
|
||||||
|
JR READ_NEXT2
|
||||||
|
;********************************************
|
||||||
|
READ_1ST_DIR:
|
||||||
|
DI
|
||||||
|
IN A,(PAGE3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD IX,(MSD_CAT_SEC2) ;
|
||||||
|
LD DE,(MSD_CAT_SEC) ; <20>€—€‹œ<E280B9>›‰ ‘…Š’Ž<E28099> Š€’€‹Žƒ€
|
||||||
|
LD (MSD_CONT_SEC),DE
|
||||||
|
LD (MSD_CONT_SEC2),IX
|
||||||
|
LD A,(S_P_C) ; ‘…Š’Ž<E28099>Ž‚ ‚ Š€’€‹Žƒ…
|
||||||
|
LD (COUNT_SEC),A
|
||||||
|
READ_NEXT2:
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE3),A
|
||||||
|
; RET_PAGE3
|
||||||
|
EI
|
||||||
|
LD HL,MS_DIR
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
LD B,1
|
||||||
|
LD C,5
|
||||||
|
CALL MSD_R_W_UT
|
||||||
|
DI
|
||||||
|
IN A,(PAGE3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
|
||||||
|
LD DE,(MSD_CONT_SEC)
|
||||||
|
INC DE
|
||||||
|
LD (MSD_CONT_SEC),DE
|
||||||
|
LD A,D
|
||||||
|
OR E
|
||||||
|
JR NZ,READ_NEXT3
|
||||||
|
LD IX,(MSD_CONT_SEC2)
|
||||||
|
INC IX
|
||||||
|
LD (MSD_CONT_SEC2),IX
|
||||||
|
READ_NEXT3:
|
||||||
|
LD A,(F_P_S) ; ”€‰‹Ž‚ ‚ ‘…Š’Ž<E28099>…
|
||||||
|
LD (COUNT_FL),A
|
||||||
|
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE3),A
|
||||||
|
; RET_PAGE3
|
||||||
|
EI
|
||||||
|
LD HL,MS_DIR
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
;******************************************
|
||||||
|
;********************************************
|
||||||
|
CALC_SECTOR: ; ‚›—ˆ‘‹ˆ’œ ’<>…Š/‘…Š’Ž<E28099> ¤«ï ¤¨áª¥â
|
||||||
|
LD A,D ; DE - ¡á. ®¬¥à ᥪâ®à
|
||||||
|
OR E
|
||||||
|
JR NZ,CALC_SECT_L1
|
||||||
|
LD HL,0
|
||||||
|
RET
|
||||||
|
|
||||||
|
CALC_SECT_L1:
|
||||||
|
PUSH BC
|
||||||
|
EX DE,HL
|
||||||
|
DI
|
||||||
|
IN A,(PAGE3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD BC,(MS_BPB+S_P_T)
|
||||||
|
XOR A
|
||||||
|
LOOP_TRK:
|
||||||
|
SBC HL,BC
|
||||||
|
JR C,SEC_ENDER
|
||||||
|
INC A
|
||||||
|
JR NZ,LOOP_TRK
|
||||||
|
POP BC
|
||||||
|
JP ERROR_BPB
|
||||||
|
|
||||||
|
SEC_ENDER:
|
||||||
|
ADD HL,BC
|
||||||
|
LD H,A ; ’<>…Š
|
||||||
|
; LD L,L ; ‘…Š’Ž<E28099>
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE3),A
|
||||||
|
EI
|
||||||
|
EX DE,HL
|
||||||
|
POP BC
|
||||||
|
RET
|
||||||
|
|
||||||
|
;************************************************
|
||||||
|
|
||||||
|
REDIR_LINE_CODING:
|
||||||
|
LD (MED_START),HL
|
||||||
|
LD HL,(DOS_CH_ADR)
|
||||||
|
LD A,(HL)
|
||||||
|
CP '/'
|
||||||
|
RET Z
|
||||||
|
JP AUTO_3057
|
||||||
|
|
||||||
|
PRINT_HEX_A:
|
||||||
|
PUSH AF
|
||||||
|
RRCA
|
||||||
|
RRCA
|
||||||
|
RRCA
|
||||||
|
RRCA
|
||||||
|
CALL PRINT_HEX_SYM
|
||||||
|
POP AF
|
||||||
|
PRINT_HEX_SYM:
|
||||||
|
PUSH HL
|
||||||
|
PUSH DE
|
||||||
|
PUSH BC
|
||||||
|
AND 0FH
|
||||||
|
ADD A,'0'
|
||||||
|
CP '9'+1
|
||||||
|
JR C,NO_ADD
|
||||||
|
ADD A,7
|
||||||
|
NO_ADD:
|
||||||
|
RST 10H
|
||||||
|
POP BC
|
||||||
|
POP DE
|
||||||
|
POP HL
|
||||||
|
RET
|
||||||
|
|
||||||
|
;*******************************************
|
||||||
|
|
||||||
|
|
||||||
480
TRDOS/TR_RMD_S.ASZ
Normal file
480
TRDOS/TR_RMD_S.ASZ
Normal file
@ -0,0 +1,480 @@
|
|||||||
|
DISK_REDIR:
|
||||||
|
PUSH HL
|
||||||
|
PUSH BC
|
||||||
|
LD A,(OPER_DISK)
|
||||||
|
AND 3
|
||||||
|
LD C,0CFH
|
||||||
|
CALL EXP_FNS
|
||||||
|
EI
|
||||||
|
POP BC
|
||||||
|
POP HL
|
||||||
|
RET
|
||||||
|
|
||||||
|
R_W_REDIR:
|
||||||
|
CALL DISK_REDIR
|
||||||
|
CP 4
|
||||||
|
JR C,RECALL_1E70
|
||||||
|
CP 20
|
||||||
|
JR C,RECALL_RAMD
|
||||||
|
ERROR_DISK:
|
||||||
|
JP AUTO_3EE7 ; ¯¥à¥å®¤ ®è¨¡ªã ¤¨áª
|
||||||
|
|
||||||
|
RECALL_1E70:
|
||||||
|
CALL RES_1440
|
||||||
|
LD A,(RD_WR_COM)
|
||||||
|
PUSH BC
|
||||||
|
PUSH HL
|
||||||
|
CALL READ_TRK_NUM
|
||||||
|
JP AUTO_1E70
|
||||||
|
|
||||||
|
RECALL_RAMD:
|
||||||
|
SUB 4
|
||||||
|
CALL TEST_RAMD
|
||||||
|
JR C,ERROR_DISK
|
||||||
|
SCF
|
||||||
|
JR Z,ERROR_DISK
|
||||||
|
JP READ_WRITE_RAMD
|
||||||
|
|
||||||
|
RECALL_MSD:
|
||||||
|
JR ERROR_DISK ; ¯¥à¥å®¤ ®è¨¡ªã ¤¨áª
|
||||||
|
|
||||||
|
TEST_RAMD:
|
||||||
|
PUSH HL
|
||||||
|
LD C,0CEH
|
||||||
|
CALL EXP_FNS
|
||||||
|
EI
|
||||||
|
POP HL
|
||||||
|
RET
|
||||||
|
|
||||||
|
; ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
||||||
|
; º RD/WR SECTOR HL - BUFER º\
|
||||||
|
; º CONT_SEC - SEC/TRK FOR READ/WRITE º\
|
||||||
|
; º COM_RD_WR - ª®¬ ¤ ç⥨¥/§ ¯¨áì º\
|
||||||
|
; º 0 - ç⥨¥, 255 - § ¯¨áì º\
|
||||||
|
; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\
|
||||||
|
; \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
|
||||||
|
|
||||||
|
READ_WRITE_RAMD:
|
||||||
|
|
||||||
|
;
|
||||||
|
; CALL DISK_REDIR
|
||||||
|
; SUB 4
|
||||||
|
; RET C
|
||||||
|
; CP 16
|
||||||
|
; CCF
|
||||||
|
; RET C
|
||||||
|
;
|
||||||
|
; PUSH HL
|
||||||
|
; LD HL,RAMD_KEYS
|
||||||
|
; ADD A,L
|
||||||
|
; LD L,A
|
||||||
|
; IN A,(PAGE3)
|
||||||
|
; LD C,A
|
||||||
|
; LD A,SYS_PAGE
|
||||||
|
; DI
|
||||||
|
; OUT (PAGE3),A
|
||||||
|
; LD L,(HL)
|
||||||
|
; LD A,C
|
||||||
|
; OUT (PAGE3),A
|
||||||
|
; EI
|
||||||
|
; LD A,L ; 1-st block
|
||||||
|
; POP HL
|
||||||
|
;
|
||||||
|
; AND A
|
||||||
|
; SCF
|
||||||
|
; RET Z
|
||||||
|
; EX AF,AF'
|
||||||
|
;
|
||||||
|
; IN A,(RGADR)
|
||||||
|
; PUSH AF
|
||||||
|
;
|
||||||
|
; PUSH HL
|
||||||
|
; PUSH DE
|
||||||
|
; PUSH BC
|
||||||
|
;
|
||||||
|
; LD DE,(CONT_SEC)
|
||||||
|
; LD A,D ; ”ˆ‡ˆ—…‘Šˆ… -> ‹Žƒˆ—…‘Šˆ… !!!
|
||||||
|
; RRCA
|
||||||
|
; RRCA
|
||||||
|
; RRCA
|
||||||
|
; RRCA
|
||||||
|
; LD D,A
|
||||||
|
; AND 0F0H
|
||||||
|
; OR E
|
||||||
|
; LD E,A
|
||||||
|
; LD A,D
|
||||||
|
; AND 0FH
|
||||||
|
; LD D,A
|
||||||
|
;
|
||||||
|
; LD A,(RD_WR_COM)
|
||||||
|
; AND A
|
||||||
|
; JR Z,RAMD_READ
|
||||||
|
; PUSH AF
|
||||||
|
; LD A,0C0H
|
||||||
|
; OUT (RGADR),A
|
||||||
|
; POP AF
|
||||||
|
;RAMD_READ:
|
||||||
|
;
|
||||||
|
; POP BC
|
||||||
|
; PUSH BC
|
||||||
|
; LD C,0C8H
|
||||||
|
; DI
|
||||||
|
; EX AF,AF'
|
||||||
|
; CALL EXP_FNS ; ç⥨¥/§ ¯¨áì RAM-Disk
|
||||||
|
; EI
|
||||||
|
; POP BC
|
||||||
|
; POP DE
|
||||||
|
; POP HL
|
||||||
|
; POP AF
|
||||||
|
; OUT (RGADR),A
|
||||||
|
; LD DE,(CONT_SEC)
|
||||||
|
;
|
||||||
|
; LD A,B
|
||||||
|
;
|
||||||
|
;RAMD_TRK_CONT:
|
||||||
|
; SUB 16
|
||||||
|
; JR C,RAMD_NO_TRK
|
||||||
|
; INC D
|
||||||
|
; JR RAMD_TRK_CONT
|
||||||
|
;
|
||||||
|
;RAMD_NO_TRK:
|
||||||
|
; ADD A,16
|
||||||
|
; ADD A,E
|
||||||
|
; CP 16
|
||||||
|
; JR C,RAMD_NO_TRK1
|
||||||
|
; SUB 16
|
||||||
|
; INC D
|
||||||
|
;RAMD_NO_TRK1:
|
||||||
|
; LD E,A
|
||||||
|
;
|
||||||
|
; LD A,H
|
||||||
|
; ADD A,B
|
||||||
|
; LD H,A
|
||||||
|
;
|
||||||
|
; LD B,0
|
||||||
|
;
|
||||||
|
; LD (CONT_SEC),DE
|
||||||
|
; AND A
|
||||||
|
; RET
|
||||||
|
;
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
INC B
|
||||||
|
WD_WR_RAMD_LOOP:
|
||||||
|
DEC B
|
||||||
|
RET Z
|
||||||
|
PUSH BC
|
||||||
|
PUSH HL
|
||||||
|
CALL RD_WR_1SEC
|
||||||
|
POP HL
|
||||||
|
CALL RAMD_NEXT_SEC
|
||||||
|
POP BC
|
||||||
|
JR WD_WR_RAMD_LOOP
|
||||||
|
|
||||||
|
RAMD_NEXT_SEC:
|
||||||
|
PUSH HL
|
||||||
|
LD HL,CONT_SEC
|
||||||
|
LD A,16
|
||||||
|
INC (HL)
|
||||||
|
CP (HL)
|
||||||
|
JR NZ,RAMD_NEXT_1
|
||||||
|
LD (HL),0
|
||||||
|
INC HL
|
||||||
|
INC (HL)
|
||||||
|
RAMD_NEXT_1:
|
||||||
|
POP HL
|
||||||
|
LD BC,0100h
|
||||||
|
ADD HL,BC
|
||||||
|
RET
|
||||||
|
|
||||||
|
RD_WR_1SEC:
|
||||||
|
LD DE,(CONT_SEC)
|
||||||
|
CALL PAGE_CALC2
|
||||||
|
DI
|
||||||
|
LD A,(RD_WR_COM)
|
||||||
|
AND 0C0H
|
||||||
|
OUT (RGADR),A
|
||||||
|
LD A,H
|
||||||
|
CP 0A0H
|
||||||
|
LD A,(RD_WR_COM)
|
||||||
|
LD E,0
|
||||||
|
LD D,C
|
||||||
|
SET 6,D
|
||||||
|
JR C,RD_WR_C000
|
||||||
|
|
||||||
|
RD_WR_4000:
|
||||||
|
RES 7,D ; DE - ¤à¥á ¤ ëå RAMD
|
||||||
|
LD C,PAGE1
|
||||||
|
EX AF,AF'
|
||||||
|
IN A,(C)
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (C),B
|
||||||
|
;****** <20>…<EFBFBD>…Œ…™…<E284A2>ˆ… „€<E2809E><E282AC>›• *****
|
||||||
|
LD BC,100H
|
||||||
|
AND A
|
||||||
|
JR NZ,MOVE_NOT_EX3
|
||||||
|
EX DE,HL
|
||||||
|
MOVE_NOT_EX3:
|
||||||
|
LDIR ; à ¡®â âì §¤¥áì ¦¥, ¢ TR-DOS !!!
|
||||||
|
AND A
|
||||||
|
JR NZ,MOVE_NOT_EX4
|
||||||
|
EX DE,HL
|
||||||
|
MOVE_NOT_EX4:
|
||||||
|
;*******************************
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE1),A
|
||||||
|
EX AF,AF'
|
||||||
|
; RET_PAGE1
|
||||||
|
MOVE_RET:
|
||||||
|
LD A,0
|
||||||
|
OUT (RGADR),A
|
||||||
|
EI
|
||||||
|
RET
|
||||||
|
|
||||||
|
RD_WR_C000:
|
||||||
|
SET 7,D
|
||||||
|
LD C,PAGE3
|
||||||
|
EX AF,AF'
|
||||||
|
IN A,(C)
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (C),B
|
||||||
|
;****** <20>…<EFBFBD>…Œ…™…<E284A2>ˆ… „€<E2809E><E282AC>›• *****
|
||||||
|
LD BC,100H
|
||||||
|
AND A
|
||||||
|
JR NZ,MOVE_NOT_EX1
|
||||||
|
EX DE,HL
|
||||||
|
MOVE_NOT_EX1:
|
||||||
|
LDIR ; à ¡®â âì §¤¥áì ¦¥, ¢ TR-DOS !!!
|
||||||
|
AND A
|
||||||
|
JR NZ,MOVE_NOT_EX2
|
||||||
|
EX DE,HL
|
||||||
|
MOVE_NOT_EX2:
|
||||||
|
;*******************************
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE3),A
|
||||||
|
EX AF,AF'
|
||||||
|
; RET_PAGE3
|
||||||
|
JR MOVE_RET
|
||||||
|
|
||||||
|
;**********************************************
|
||||||
|
PAGE_CALC2:
|
||||||
|
LD A,D ; ”ˆ‡ˆ—…‘Šˆ… -> ‹Žƒˆ—…‘Šˆ… !!!
|
||||||
|
RRCA
|
||||||
|
RRCA
|
||||||
|
RRCA
|
||||||
|
RRCA
|
||||||
|
LD D,A
|
||||||
|
AND 0F0H
|
||||||
|
OR E
|
||||||
|
LD E,A
|
||||||
|
LD A,D
|
||||||
|
AND 0FH
|
||||||
|
LD D,A
|
||||||
|
PUSH HL
|
||||||
|
LD C,98h
|
||||||
|
CALL DISK_REDIR
|
||||||
|
SUB 4
|
||||||
|
CALL EXP_FNS ; ¢ëç¨á«¥¨¥ ¤à¥á ¨ áâà ¨æë RAM-Disk
|
||||||
|
EI
|
||||||
|
LD B,A
|
||||||
|
LD C,H
|
||||||
|
POP HL
|
||||||
|
EI
|
||||||
|
RET NC
|
||||||
|
JP ERROR_DISK
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;*********************************************
|
||||||
|
RAMD_X12: ; ¯à®¢¥àª ¤¨áª
|
||||||
|
LD (OPER_DISK),A
|
||||||
|
CALL DISK_REDIR
|
||||||
|
CP 4
|
||||||
|
JR C,X_AUTO_3DCE
|
||||||
|
CP 20
|
||||||
|
RET C
|
||||||
|
; JR C,RAMD_TEST
|
||||||
|
NO_DISK2:
|
||||||
|
JP AUTO_3EE7 ; NO_DISK
|
||||||
|
|
||||||
|
X_AUTO_3DCE:
|
||||||
|
CALL RES_1440
|
||||||
|
LD A,(OPER_DISK)
|
||||||
|
JP AUTO_3DCE
|
||||||
|
|
||||||
|
;*************************************
|
||||||
|
RAMD_X14: ; FORMATING
|
||||||
|
CALL get_disk_type
|
||||||
|
PUSH AF
|
||||||
|
PUSH BC
|
||||||
|
PUSH HL
|
||||||
|
CALL DISK_REDIR
|
||||||
|
CP 4
|
||||||
|
JR C,DISK_FORM
|
||||||
|
CP 20
|
||||||
|
JR C,RAMD_FORMAT
|
||||||
|
JP READ_ONLY
|
||||||
|
|
||||||
|
DISK_FORM:
|
||||||
|
LD A,(MED_START+1)
|
||||||
|
CP 14H
|
||||||
|
JR Z,QVICK_FORMAT
|
||||||
|
POP HL
|
||||||
|
POP BC
|
||||||
|
POP AF
|
||||||
|
JP AUTO_1EE0
|
||||||
|
|
||||||
|
QVICK_FORMAT:
|
||||||
|
POP HL
|
||||||
|
POP BC
|
||||||
|
POP AF
|
||||||
|
JR Q_FORM_1
|
||||||
|
|
||||||
|
RAMD_FORMAT:
|
||||||
|
SUB 4
|
||||||
|
|
||||||
|
CALL TEST_RAMD
|
||||||
|
JP C,READ_ONLY
|
||||||
|
CALL NZ,CLEAR_RAMD
|
||||||
|
|
||||||
|
POP HL
|
||||||
|
POP BC
|
||||||
|
POP AF
|
||||||
|
LD B,28H ; à §¬¥à 640K
|
||||||
|
CALL DISK_REDIR
|
||||||
|
SUB 4
|
||||||
|
|
||||||
|
CALL GET_RAM_BLK ; ‚›„…‹…<E280B9>ˆ… <20>€ŒŸ’ˆ
|
||||||
|
; LD C,A ; Š‹ž— RAM-Disk
|
||||||
|
Q_FORM_1:
|
||||||
|
LD HL,BUFER ; CLEAR DISK BUFER
|
||||||
|
LD DE,BUFER+1
|
||||||
|
LD BC,0FFh
|
||||||
|
LD (HL),0
|
||||||
|
LDIR
|
||||||
|
|
||||||
|
LD DE,0
|
||||||
|
RAMD_F_LOOP:
|
||||||
|
LD HL,BUFER
|
||||||
|
LD B,1
|
||||||
|
PUSH DE
|
||||||
|
CALL WRITE_DISK
|
||||||
|
POP DE
|
||||||
|
INC E
|
||||||
|
LD A,E
|
||||||
|
CP 8
|
||||||
|
JR NZ,RAMD_F_LOOP
|
||||||
|
LD HL,2544
|
||||||
|
LD A,22
|
||||||
|
JP AUTO_1F55
|
||||||
|
|
||||||
|
;*************************************
|
||||||
|
CLEAR_RAMD_X:
|
||||||
|
CALL RAMD_SYM
|
||||||
|
JR NC,CLEAR_RMD_A
|
||||||
|
DEC DE
|
||||||
|
LD A,(DE)
|
||||||
|
CP 13
|
||||||
|
SCF
|
||||||
|
RET NZ
|
||||||
|
CLEAR_RAMD:
|
||||||
|
CALL DISK_REDIR
|
||||||
|
CLEAR_NEXT:
|
||||||
|
SUB 4
|
||||||
|
RET C
|
||||||
|
CP RAMD_KEY_NUM
|
||||||
|
CCF
|
||||||
|
RET C
|
||||||
|
|
||||||
|
CLEAR_RMD_A:
|
||||||
|
PUSH HL
|
||||||
|
PUSH DE
|
||||||
|
PUSH BC
|
||||||
|
LD C,93h ; ®ç¨á⪠RAM-Disk
|
||||||
|
CALL EXP_FNS ; ¢ë§¢ âì äãªæ¨î
|
||||||
|
EI
|
||||||
|
POP BC
|
||||||
|
POP DE
|
||||||
|
POP HL
|
||||||
|
RET
|
||||||
|
|
||||||
|
;*********************************************************
|
||||||
|
GET_RMD_A:
|
||||||
|
GET_RAM_BLK: ; B - —ˆ‘‹Ž ’<>…<EFBFBD>“…Œ›• <20>‹ŽŠŽ‚, A - Š‹ž— RAM-Disk
|
||||||
|
LD C,92h
|
||||||
|
CALL EXP_FNS ; A,L - Š‹ž— RAM-Disk - ®¬¥à ¯¥à¢®£® ¡«®ª
|
||||||
|
EI
|
||||||
|
RET NC
|
||||||
|
NO_MEM:
|
||||||
|
LD HL,NO_MEMORY
|
||||||
|
JP ERR_EXIT
|
||||||
|
|
||||||
|
;*********************************************************
|
||||||
|
READ_ONLY:
|
||||||
|
LD HL,READ_ONLY_MSG ; Read only !!
|
||||||
|
JP ERR_EXIT
|
||||||
|
|
||||||
|
FDD_SET:
|
||||||
|
LD A,(OPER_DISK)
|
||||||
|
LD B,A
|
||||||
|
LD C,0CCH
|
||||||
|
CALL EXP_FNS
|
||||||
|
EI
|
||||||
|
RET
|
||||||
|
|
||||||
|
HDD_SET:
|
||||||
|
LD C,0
|
||||||
|
CALL HD_CMD
|
||||||
|
JP C,HDD_PROG_E
|
||||||
|
|
||||||
|
LD A,(OPER_DISK)
|
||||||
|
LD B,A
|
||||||
|
LD A,0
|
||||||
|
LD C,0CDH
|
||||||
|
CALL EXP_FNS
|
||||||
|
EI
|
||||||
|
RET
|
||||||
|
|
||||||
|
RAMD_SET:
|
||||||
|
CALL RAMD_SYM
|
||||||
|
RET C
|
||||||
|
RAMD_SET1:
|
||||||
|
PUSH AF
|
||||||
|
LD A,(OPER_DISK)
|
||||||
|
LD B,A
|
||||||
|
POP AF
|
||||||
|
LD C,0CBH
|
||||||
|
CALL EXP_FNS
|
||||||
|
EI
|
||||||
|
RET
|
||||||
|
|
||||||
|
RAMD_SYM:
|
||||||
|
LD A,(DE)
|
||||||
|
INC DE
|
||||||
|
CP 20H
|
||||||
|
JR Z,RAMD_SYM
|
||||||
|
AND 223
|
||||||
|
CP 'E'
|
||||||
|
RET C
|
||||||
|
SUB 'E'
|
||||||
|
CP 16
|
||||||
|
CCF
|
||||||
|
RET C
|
||||||
|
PUSH AF
|
||||||
|
LD A,(DE)
|
||||||
|
CP ':'
|
||||||
|
INC DE
|
||||||
|
JR Z,RAMD_SYM_OK
|
||||||
|
DEC DE
|
||||||
|
CP 21H
|
||||||
|
JR C,RAMD_SYM_OK
|
||||||
|
POP AF
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
RAMD_SYM_OK:
|
||||||
|
POP AF
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
1743
ZX_EXP.ASM
Normal file
1743
ZX_EXP.ASM
Normal file
File diff suppressed because it is too large
Load Diff
452
ZX_EXP/EXP_DCP2.ASM
Normal file
452
ZX_EXP/EXP_DCP2.ASM
Normal file
@ -0,0 +1,452 @@
|
|||||||
|
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
|
||||||
|
;
|
||||||
|
;
|
||||||
|
;
|
||||||
|
;
|
||||||
|
;
|
||||||
764
ZX_EXP/EXP_FN.ASM
Normal file
764
ZX_EXP/EXP_FN.ASM
Normal file
@ -0,0 +1,764 @@
|
|||||||
|
TAB_FNS:
|
||||||
|
;FN_80h
|
||||||
|
DW LP_OPEN_S ; ®âªàë⨥ ®ª
|
||||||
|
DW LP_PRINT_ALL ; ¯¥ç âì ᨬ¢®« ¢ ®ª®
|
||||||
|
DW LP_PRINT_SYM ; ¯¥ç âì ᨬ¢®« ¡¥§ âà
|
||||||
|
DW LP_PRINT_ATR ; ¯¥ç âì ⮫쪮 âਡãâ
|
||||||
|
DW LP_SET_PLACE ; ãáâ ®¢ª ¯®§¨æ¨¨ ¯¥ç â¨
|
||||||
|
DW LP_PRINT_LINE ; ¯¥ç âì áâப¨ ¤«¨®© B
|
||||||
|
DW LP_PRINT_LINE2 ; ¯¥ç âì áâப¨ -//- ¡¥§ âਡã⮢
|
||||||
|
DW LP_PRINT_LINE3 ; ¯¥ç âì áâப¨ ¤«¨®© B ¤® D
|
||||||
|
;FN_88h
|
||||||
|
DW LP_PRINT_LINE4 ; ¯¥ç âì áâப¨ -//- ¡¥§ âਡã⮢
|
||||||
|
DW LP_CLS_WIN
|
||||||
|
DW LP_SCROLL_UD
|
||||||
|
DW LP_PRINT_LINE5
|
||||||
|
DW LP_PRINT_LINE6
|
||||||
|
DW LP_CLS_WIN_2
|
||||||
|
DW LP_GET_PLACE
|
||||||
|
DW FN_TURBO
|
||||||
|
;FN_90h
|
||||||
|
DW EMM_FN0 ; ¥à §àãè î饥 ®¯à¥¤¥«¥¨¥ ®¡ê¥¬ އ“.
|
||||||
|
DW EMM_FN1 ; ¨¨æ¨ «¨§ æ¨ï à á¯à¥¤¥«¥¨ï ¯ ¬ïâ¨
|
||||||
|
DW EMM_FN2 ; ¯®«ãç¨âì ¡«®ª ¯ ¬ïâ¨
|
||||||
|
DW EMM_FN3 ; ®á¢®¡®¤¨âì ¡«®ª ¯ ¬ïâ¨
|
||||||
|
DW EMM_FN4 ; ¯®«ãç¨âì ®¬¥àa áâà ¨æ RAM-Disk
|
||||||
|
DW EMM_FN5 ; ¯®«ãç¨âì á«¥¤ãîéãî áâà ¨æã
|
||||||
|
DW EMM_FN6 ; ¯®«ãç¨âì ¤à¥á ¯®à⮢
|
||||||
|
DW EMM_FN7 ; ¨¨æ¨ «¨§ æ¨ï ***
|
||||||
|
;FN_98h
|
||||||
|
DW RAMD_CALC_PAGE ; Fn 98h
|
||||||
|
DW SET_DISK_TYPE
|
||||||
|
DW DISK_REDIR
|
||||||
|
DW FN_NO
|
||||||
|
DW FN_NO
|
||||||
|
DW EMM_DIV ; à §¤¥«¥¨ï ¡«®ª ¤¢ .
|
||||||
|
DW EMM_ADD ; ᫨逸 ¤¢ãå ¡«®ª®¢
|
||||||
|
DW MSDOS_COLD_VARS ; ¨¨æ¨ «¨§ æ¨ï ¢á¥© ¯ ¬ïâ¨
|
||||||
|
;FN_A0h
|
||||||
|
DW PIC_FN0 ; Ž’Š<E28099>›’ˆ… ŽŠ<C5BD>€ - Fn 0A0h
|
||||||
|
DW PIC_FN1 ; ‚›‚…‘’ˆ ’Ž—Š“
|
||||||
|
DW PIC_FN2 ; ‚›‚Ž„ ‹ˆ<E280B9>ˆˆ COPY
|
||||||
|
DW PIC_FN3 ; ‚›‚Ž„ ‹ˆ<E280B9>ˆˆ FILL
|
||||||
|
DW PIC_FN4 ; ‚›‚Ž„ <20>€‹ˆ’<CB86>›
|
||||||
|
DW PIC_FN5 ; “‘’€<E28099>ނЀ RGMOD
|
||||||
|
DW PIC_FN6 ; A - page_pal, E - ®¬¥à ¯ «¨âàë, B - ⨯ ¯ «¨âàë
|
||||||
|
DW PIC_FN7
|
||||||
|
;FN_A8h
|
||||||
|
DW PIC_FN8
|
||||||
|
DW PIC_FN9
|
||||||
|
DW PIC_FN10
|
||||||
|
DW PIC_FN11
|
||||||
|
DW PIC_FN12
|
||||||
|
DW PIC_FN14
|
||||||
|
DW PIC_FN14
|
||||||
|
DW PIC_FN15
|
||||||
|
;FN_B0h
|
||||||
|
DW WIN_OPEN_WIN ; ®âªàë⨥ ®ª ¯® ®¯¨á ⥫î
|
||||||
|
DW WIN_CLOSE_WIN ; § ªàë⨥ ®ª
|
||||||
|
DW WIN_COPY_WIN ; á®åà ¥¨¥ ⥪á⮢®£® ®ª ¢ ¯ ¬ïâ¨
|
||||||
|
DW WIN_REST_WIN ; ¢®ááâ ®¢«¥¨¥ ⥪á⮢®£® ®ª ¨§ ¯ ¬ïâ¨
|
||||||
|
DW WIN_GET_SYM ; ¢§ïâì ᨬ¢®«
|
||||||
|
DW WIN_PUT_SYM ; ¯®«®¦¨âì ᨬ¢®«
|
||||||
|
DW WIN_SET_ZG ; § £à㧪 § ª®£¥¥à â®à
|
||||||
|
DW WIN_MOVE_WIN ; ¯¥à¥¬¥áâ¨âì ®ª®
|
||||||
|
;FN_B8h
|
||||||
|
DW WIN_GET_ZG ; ¯®«ãç¨âì § ª®£¥¥à â®à
|
||||||
|
DW FN_NO
|
||||||
|
DW FN_NO
|
||||||
|
DW FN_NO
|
||||||
|
DW FN_NO
|
||||||
|
DW FN_NO
|
||||||
|
DW FN_NO
|
||||||
|
DW FN_NO
|
||||||
|
;FN_C0h
|
||||||
|
DW EMM_FN0 ; ¯®«ãç¨âì ¤ ë¥ ®¡ ®¡ê¥¬¥ ¯ ¬ï⨠¨ ª®«-¢® ᢮¡. áâà.
|
||||||
|
DW EMM_FN1 ; ¨¨æ¨ «¨§ æ¨ï à á¯à¥¤¥«¥¨ï ¯ ¬ïâ¨
|
||||||
|
DW EMM_FN2M ; ¯®«ãç¨âì ¡«®ª ¯ ¬ïâ¨
|
||||||
|
DW EMM_FN3M ; ®á¢®¡®¤¨âì ¡«®ª ¯ ¬ïâ¨
|
||||||
|
DW EMM_FN4M ; ¯®«ãç¨âì ®¬¥à áâà ¨æë ¢ ¡«®ª¥ ¯ ¬ïâ¨
|
||||||
|
DW EMM_FN5M ; ¯®«ãç¨âì ᯨ᮪ áâà ¨æ ¡«®ª ¯ ¬ïâ¨
|
||||||
|
DW EMM_FN6 ; ¯®«ãç¨âì ¤à¥á ¯®à⮢ ®ª®
|
||||||
|
DW EMM_FN5 ; ¯®«ãç¨âì á«¥¤ãîéãî áâà ¨æã ¡«®ª
|
||||||
|
;FN_C8h
|
||||||
|
DW BLK_R_W ; äãªæ¨ï ç⥨ï/§ ¯¨á¨ ¢ ¡«®ª ¯ ¬ïâ¨
|
||||||
|
DW BLK_TO_RAMD ; § ç¨âì ¡«®ª RAM-Disk-ã
|
||||||
|
DW RAMD_CLEAR ; ®á¢®¡®¤¨âì RAM-Disk
|
||||||
|
DW RAMD_TO_DRV ; § ç¨âì RAM-Disk ¤¨áª®¢®¤
|
||||||
|
DW FDD_TO_DRV ; § ç¨âì REAL_DRIVE ¤¨áª®¢®¤
|
||||||
|
DW HDD_TO_DRV ; § ç¨âì HDD ¤¨áª®¢®¤
|
||||||
|
DW GET_RAMD_ST ; ¯®«ãç¨âì ⨯ § 票ï RAM-Disk
|
||||||
|
DW GET_DRV_ST ; ¯®«ãç¨âì ⨯ § ç¥¨ï ¤¨áª®¢®¤
|
||||||
|
;FN_D0h
|
||||||
|
DW FN_LIB
|
||||||
|
DW FN_LIB
|
||||||
|
DW FN_LIB
|
||||||
|
DW FN_LIB
|
||||||
|
DW FN_LIB
|
||||||
|
DW FN_LIB
|
||||||
|
DW FN_LIB
|
||||||
|
DW FN_LIB
|
||||||
|
;FN_D8h
|
||||||
|
DW FN_LIB
|
||||||
|
DW FN_LIB
|
||||||
|
DW FN_LIB
|
||||||
|
DW FN_LIB
|
||||||
|
DW FN_LIB
|
||||||
|
DW FN_LIB
|
||||||
|
DW FN_LIB
|
||||||
|
DW FN_LIB
|
||||||
|
;FN_E0h
|
||||||
|
DW LP_PRINT_LINE_DIR
|
||||||
|
DW FN_NO
|
||||||
|
DW FN_NO
|
||||||
|
DW FN_NO
|
||||||
|
DW FN_NO
|
||||||
|
DW FN_NO
|
||||||
|
DW FN_NO
|
||||||
|
DW FN_NO
|
||||||
|
;FN_E8h
|
||||||
|
DW FN_SENT_BYTE ; ¯®á« âì ¡ ©â ç¥à¥§ PC_link
|
||||||
|
DW FN_RESEIVE_B ; ¯à¨ïâì ¡ ©â ç¥à¥§ PC_link
|
||||||
|
DW FN_KBD_OUT ; ¯®á« âì ¡ ©â ¢ ª« ¢¨ âãàã
|
||||||
|
DW FN_NO
|
||||||
|
DW FN_NO
|
||||||
|
DW FN_CRIPT
|
||||||
|
DW AY8910
|
||||||
|
DW FN_VERSION
|
||||||
|
;FN_F0h
|
||||||
|
DW SPRINTER_1
|
||||||
|
DW SPRINTER_2
|
||||||
|
DW FN_SINC
|
||||||
|
DW SPRINTER_ALL
|
||||||
|
DW DCP_FN0
|
||||||
|
DW CMOS_TEST
|
||||||
|
DW CMOS_RD
|
||||||
|
DW CMOS_WR
|
||||||
|
;FN_F8h
|
||||||
|
DW SET_ROM_PAGES
|
||||||
|
DW READ_PORTS ;
|
||||||
|
DW WRITE_PORTS ;
|
||||||
|
DW GOTO_SPEC ; Goto Spectrum!
|
||||||
|
DW FN_NO
|
||||||
|
DW FN_RESET
|
||||||
|
DW FN_NO ; SAVE_AUTOSTART
|
||||||
|
DW FN_VERSION
|
||||||
|
|
||||||
|
EXP_FNS: ; ‚室 ¢ äãªæ¨î ¨§ DOS
|
||||||
|
POP AF
|
||||||
|
CALL EXP_FNS1
|
||||||
|
CALL DOS_ON
|
||||||
|
JP EXP_FNS_RET
|
||||||
|
|
||||||
|
;************************************
|
||||||
|
EXP_FNS_RST18: ; ‚室 ¢ äãªæ¨î ¯® RST18 ¨ RST8
|
||||||
|
bit 7,c
|
||||||
|
JR Z,ower2_fn
|
||||||
|
CALL EXP_FNS1
|
||||||
|
RET
|
||||||
|
ower2_fn:
|
||||||
|
BIT 6,C
|
||||||
|
RES 6,C
|
||||||
|
JR NZ,EXP_HDD_X
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
EXP_HDD_X:
|
||||||
|
CALL EXP_HDD
|
||||||
|
RET
|
||||||
|
;**********************************
|
||||||
|
|
||||||
|
FN_CRIPT:
|
||||||
|
DEC B
|
||||||
|
SCF
|
||||||
|
RET NZ
|
||||||
|
LD HL,(ROM_NUMBER)
|
||||||
|
LD A,(ROM_NUMBER+2)
|
||||||
|
LD BC,5281h
|
||||||
|
LD DE,47E8h
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
;**********************************
|
||||||
|
|
||||||
|
START_DI:
|
||||||
|
PUSH AF
|
||||||
|
LD A,R
|
||||||
|
JP PE,XX_DI
|
||||||
|
LD A,R
|
||||||
|
XX_DI: LD A,80h
|
||||||
|
JP PE,XX_DI2
|
||||||
|
XOR A
|
||||||
|
XX_DI2: LD R,A
|
||||||
|
DI
|
||||||
|
POP AF
|
||||||
|
RET
|
||||||
|
|
||||||
|
END_DI: PUSH AF
|
||||||
|
LD A,R
|
||||||
|
BIT 7,A
|
||||||
|
JR Z,XX_DI3
|
||||||
|
EI
|
||||||
|
POP AF ; PE
|
||||||
|
RET
|
||||||
|
|
||||||
|
XX_DI3: DI
|
||||||
|
POP AF ; PO
|
||||||
|
RET
|
||||||
|
|
||||||
|
;**********************************
|
||||||
|
EXP_FNS1:
|
||||||
|
PUSH HL
|
||||||
|
PUSH AF
|
||||||
|
LD L,C
|
||||||
|
SLA L
|
||||||
|
LD H,TAB_FNS/256
|
||||||
|
LD A,(HL)
|
||||||
|
INC L
|
||||||
|
LD H,(HL)
|
||||||
|
LD L,A
|
||||||
|
POP AF
|
||||||
|
EX (SP),HL
|
||||||
|
RET
|
||||||
|
|
||||||
|
READ_PORTS:
|
||||||
|
WRITE_PORTS:
|
||||||
|
FN_NO:
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
|
||||||
|
SET_ROM_PAGES: ; in A - page, B - new ROM-page
|
||||||
|
; out B - old ROM-page
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,CNF_0
|
||||||
|
OUT (CNF_PORT),A
|
||||||
|
LD C,PAGE2 ; ¯®«ãç¨âì áâà ¨æã
|
||||||
|
IN D,(C)
|
||||||
|
LD A,40H ; ãáâ ®¢¨âì ®¢ãî
|
||||||
|
OUT (C),A
|
||||||
|
LD A,(08000H) ; á®åà ¨âì â® çâ® ¡ë«®
|
||||||
|
LD L,A
|
||||||
|
LD A,(08200H)
|
||||||
|
LD H,A
|
||||||
|
EX AF,AF' ; áâà ¨æ
|
||||||
|
LD (08000H),A ; ãáâ ®¢¨âì ¯®àâ ROM TR-DOS
|
||||||
|
LD (08200H),A
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,B
|
||||||
|
LD BC,0
|
||||||
|
EX AF,AF'
|
||||||
|
IN A,(C)
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (C),A ; ãáâ ®¢¨âì ®¢ë© TR-DOS
|
||||||
|
EX AF,AF'
|
||||||
|
LD B,A
|
||||||
|
LD A,L
|
||||||
|
LD (08000H),A ; ¢¥àãâì ¯®àâ
|
||||||
|
LD A,H
|
||||||
|
LD (08200H),A ; ¢¥àãâì ¯®àâ
|
||||||
|
LD C,PAGE2
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (C),A
|
||||||
|
LD A,(CONFIG_DE-4000H)
|
||||||
|
OUT (C),D ; ¢¥àãâì áâà ¨æã
|
||||||
|
OUT (CNF_PORT),A
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
;TAB_SIZE EQU $-TAB_FNS
|
||||||
|
|
||||||
|
;******************************************
|
||||||
|
|
||||||
|
;*********************************************
|
||||||
|
;*****************************************
|
||||||
|
;
|
||||||
|
; ”ãªæ¨ï ¤¥è¨äà â®à ¯®à⮢.
|
||||||
|
; HL - ¤à¥á
|
||||||
|
; DE - ¬ ᪠- 0 ¨§¬¥ï¥¬ë¥ ¡¨âë, 1 ¥¨§¬¥ï¥¬ë¥
|
||||||
|
; B - ¯®àâ
|
||||||
|
;
|
||||||
|
; ALL STACKS, DI
|
||||||
|
;
|
||||||
|
;*****************************************
|
||||||
|
DCP_FN0:
|
||||||
|
AND A
|
||||||
|
JP Z,PORTS_INIT
|
||||||
|
|
||||||
|
PUSH IX
|
||||||
|
LD IX,RET_DCP_FN0
|
||||||
|
|
||||||
|
IN A,(PAGE3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,DCP_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
|
||||||
|
JP DCP_FN0M
|
||||||
|
|
||||||
|
RET_DCP_FN0:
|
||||||
|
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE3),A
|
||||||
|
AND A
|
||||||
|
POP IX
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
BLK_TO_RAMD: ; RAM-Disk A, BLK - B
|
||||||
|
CP RAMD_KEY_NUM
|
||||||
|
CCF
|
||||||
|
RET C
|
||||||
|
|
||||||
|
PUSH HL
|
||||||
|
PUSH BC
|
||||||
|
LD L,A
|
||||||
|
|
||||||
|
IN A,(PAGE2)
|
||||||
|
LD C,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD A,L
|
||||||
|
LD HL,RAMD_KEYS-4000H
|
||||||
|
ADD A,L
|
||||||
|
LD L,A
|
||||||
|
LD A,(HL) ; ª«îç ¡«®ª
|
||||||
|
AND A
|
||||||
|
JR NZ,BLK_BUSY ; RAM-Disk § ïâ - ®è¨¡ª
|
||||||
|
LD (HL),B
|
||||||
|
LD A,C
|
||||||
|
OUT (PAGE2),A
|
||||||
|
|
||||||
|
LD A,B
|
||||||
|
AND A
|
||||||
|
POP BC
|
||||||
|
POP HL
|
||||||
|
RET
|
||||||
|
|
||||||
|
BLK_BUSY:
|
||||||
|
LD A,C
|
||||||
|
OUT (PAGE2),A
|
||||||
|
|
||||||
|
SCF
|
||||||
|
POP HL
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
RAMD_CLEAR: ; RAM-Disk A
|
||||||
|
CP RAMD_KEY_NUM
|
||||||
|
CCF
|
||||||
|
RET C
|
||||||
|
|
||||||
|
PUSH HL
|
||||||
|
LD L,A
|
||||||
|
|
||||||
|
IN A,(PAGE2)
|
||||||
|
LD C,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD A,L
|
||||||
|
LD HL,RAMD_KEYS-4000H ; RAM-Disk ᢮¡®¤¥¬
|
||||||
|
ADD A,L
|
||||||
|
LD L,A
|
||||||
|
LD B,A ; § ¯®¬¨âì 㤠«ï¥¬ë© à ¬¤¨áª
|
||||||
|
LD A,(HL)
|
||||||
|
AND A
|
||||||
|
JR Z,BLK_BUSY ; ¢®§¢à â á ®è¨¡ª®©
|
||||||
|
LD (HL),0
|
||||||
|
LD A,C
|
||||||
|
OUT (PAGE2),A
|
||||||
|
|
||||||
|
AND A
|
||||||
|
POP HL
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
RAMD_TO_DRV: ; RAM-Disk A, DRV - B
|
||||||
|
CP RAMD_KEY_NUM
|
||||||
|
CCF
|
||||||
|
RET C
|
||||||
|
LD C,A
|
||||||
|
LD A,B
|
||||||
|
CP 4
|
||||||
|
CCF
|
||||||
|
RET C
|
||||||
|
|
||||||
|
LD HL,DISK_TYPE-4000H
|
||||||
|
LD L,B
|
||||||
|
|
||||||
|
IN A,(PAGE2)
|
||||||
|
LD B,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD A,C
|
||||||
|
ADD A,4
|
||||||
|
LD (HL),A
|
||||||
|
LD A,B
|
||||||
|
OUT (PAGE2),A
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
FDD_TO_DRV: ; Disk A, DRV - B
|
||||||
|
CP 4
|
||||||
|
CCF
|
||||||
|
RET C
|
||||||
|
LD C,A
|
||||||
|
|
||||||
|
LD A,B
|
||||||
|
CP 4
|
||||||
|
CCF
|
||||||
|
RET C
|
||||||
|
|
||||||
|
LD HL,DISK_TYPE-4000H
|
||||||
|
LD L,B
|
||||||
|
|
||||||
|
IN A,(PAGE2)
|
||||||
|
LD B,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD (HL),C
|
||||||
|
LD A,B
|
||||||
|
OUT (PAGE2),A
|
||||||
|
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
HDD_TO_DRV: ; HDD A, DRV - B
|
||||||
|
AND 0FH
|
||||||
|
LD C,A
|
||||||
|
LD A,B
|
||||||
|
CP 4
|
||||||
|
CCF
|
||||||
|
RET C
|
||||||
|
|
||||||
|
LD HL,DISK_TYPE-4000H
|
||||||
|
LD L,B
|
||||||
|
|
||||||
|
IN A,(PAGE2)
|
||||||
|
LD B,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD A,C
|
||||||
|
ADD A,40H
|
||||||
|
LD (HL),A
|
||||||
|
LD A,B
|
||||||
|
OUT (PAGE2),A
|
||||||
|
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
GET_RAMD_ST:
|
||||||
|
CP RAMD_KEY_NUM
|
||||||
|
CCF
|
||||||
|
RET C
|
||||||
|
|
||||||
|
PUSH BC
|
||||||
|
|
||||||
|
LD HL,RAMD_KEYS-4000H
|
||||||
|
ADD A,L
|
||||||
|
LD L,A
|
||||||
|
|
||||||
|
IN A,(PAGE2)
|
||||||
|
LD B,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD C,(HL)
|
||||||
|
LD A,B
|
||||||
|
OUT (PAGE2),A
|
||||||
|
|
||||||
|
LD A,C
|
||||||
|
|
||||||
|
POP BC
|
||||||
|
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
GET_DRV_ST:
|
||||||
|
CP 4
|
||||||
|
CCF
|
||||||
|
RET C
|
||||||
|
|
||||||
|
PUSH BC
|
||||||
|
|
||||||
|
LD HL,DISK_TYPE-4000H
|
||||||
|
ADD A,L
|
||||||
|
LD L,A
|
||||||
|
|
||||||
|
IN A,(PAGE2)
|
||||||
|
LD B,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD C,(HL)
|
||||||
|
LD A,B
|
||||||
|
OUT (PAGE2),A
|
||||||
|
|
||||||
|
LD A,C
|
||||||
|
|
||||||
|
POP BC
|
||||||
|
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
CMOS_EMU_WR:
|
||||||
|
PUSH DE
|
||||||
|
|
||||||
|
LD C,PAGE3
|
||||||
|
IN B,(C)
|
||||||
|
LD E,SYS_PAGE
|
||||||
|
OUT (C),E
|
||||||
|
LD E,D
|
||||||
|
LD D,0FFH
|
||||||
|
LD (DE),A
|
||||||
|
OUT (C),B
|
||||||
|
|
||||||
|
POP DE
|
||||||
|
RET
|
||||||
|
|
||||||
|
;***********************************************
|
||||||
|
;
|
||||||
|
; CMOS - 35h,36h - ãáâ ®¢ª¨ ¡¥©á¨ª
|
||||||
|
;
|
||||||
|
;***********************************************
|
||||||
|
|
||||||
|
CMOS_WR:
|
||||||
|
WR_CMOS: ; § ¯¨áì á CMOS
|
||||||
|
CALL CMOS_TEST
|
||||||
|
JR C,CMOS_EMU_WR
|
||||||
|
XWR_CMOS: ; § ¯¨áì á CMOS
|
||||||
|
LD BC,CMOS_AWR
|
||||||
|
OUT (C),D
|
||||||
|
LD BC,CMOS_DWR
|
||||||
|
OUT (C),A
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
CMOS_EMU_RD:
|
||||||
|
PUSH DE
|
||||||
|
|
||||||
|
LD C,PAGE3
|
||||||
|
IN B,(C)
|
||||||
|
LD E,SYS_PAGE
|
||||||
|
OUT (C),E
|
||||||
|
LD E,D
|
||||||
|
LD D,0FFH
|
||||||
|
LD A,(DE)
|
||||||
|
OUT (C),B
|
||||||
|
|
||||||
|
POP DE
|
||||||
|
RET
|
||||||
|
|
||||||
|
CMOS_RD:
|
||||||
|
RD_CMOS: ; ç⥨¥ ¨§ CMOS
|
||||||
|
CALL CMOS_TEST
|
||||||
|
JR C,CMOS_EMU_RD
|
||||||
|
XRD_CMOS: ; ç⥨¥ ¨§ CMOS
|
||||||
|
LD BC,CMOS_AWR
|
||||||
|
OUT (C),D
|
||||||
|
LD BC,CMOS_DRD
|
||||||
|
IN A,(C)
|
||||||
|
RET
|
||||||
|
|
||||||
|
CMOS_TEST:
|
||||||
|
|
||||||
|
PUSH DE
|
||||||
|
PUSH BC
|
||||||
|
PUSH AF
|
||||||
|
|
||||||
|
LD D,3FH
|
||||||
|
CALL XRD_CMOS
|
||||||
|
LD E,A
|
||||||
|
CPL
|
||||||
|
CALL XWR_CMOS
|
||||||
|
CALL XRD_CMOS
|
||||||
|
CPL
|
||||||
|
CP E
|
||||||
|
JR NZ,CMOS_ERR
|
||||||
|
LD A,E
|
||||||
|
CALL XWR_CMOS
|
||||||
|
|
||||||
|
POP AF
|
||||||
|
POP BC
|
||||||
|
POP DE
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
CMOS_ERR:
|
||||||
|
LD A,E
|
||||||
|
CALL XWR_CMOS
|
||||||
|
POP AF
|
||||||
|
POP BC
|
||||||
|
POP DE
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
|
||||||
|
;
|
||||||
|
;DE - ªã¤ - áâà ¨æ ®âªàëâ !
|
||||||
|
;BC - ᪮«ìª®
|
||||||
|
;HL - ¡ãä¥à
|
||||||
|
;
|
||||||
|
; PUSH BC
|
||||||
|
; LD H,D
|
||||||
|
; LD L,E
|
||||||
|
; ADD HL,BC
|
||||||
|
; JR C,CUT
|
||||||
|
; LD HL,BUFER
|
||||||
|
; LDIR
|
||||||
|
; POP BC
|
||||||
|
; RET
|
||||||
|
;CUT:
|
||||||
|
; PUSH HL
|
||||||
|
; LD A,L
|
||||||
|
; LD L,C
|
||||||
|
; LD C,A
|
||||||
|
; LD A,H
|
||||||
|
; LD H,B
|
||||||
|
; LD B,A
|
||||||
|
;
|
||||||
|
; AND A
|
||||||
|
; SBC HL,BC
|
||||||
|
; LD B,H
|
||||||
|
; LD C,L
|
||||||
|
; LD HL,BUFER
|
||||||
|
; LDIR
|
||||||
|
; CALL NEXT_BANK
|
||||||
|
; POP BC
|
||||||
|
; LD A,B
|
||||||
|
; OR C
|
||||||
|
; JR Z,LAB
|
||||||
|
; LDIR
|
||||||
|
;LAB: POP BC
|
||||||
|
; RET
|
||||||
|
;
|
||||||
|
|
||||||
|
FN_TURBO:
|
||||||
|
CP 2
|
||||||
|
JR Z,FN_TB_ONOFF
|
||||||
|
CP 3
|
||||||
|
JR Z,FN_TB_ONOFF
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
|
||||||
|
FN_TB_ONOFF:
|
||||||
|
LD C,A
|
||||||
|
|
||||||
|
IN A,(PAGE3)
|
||||||
|
LD B,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD DE,(CONFIG_DE)
|
||||||
|
LD A,E
|
||||||
|
AND 0FCh
|
||||||
|
OR C
|
||||||
|
LD E,A
|
||||||
|
OUT (CNF_PORT),A
|
||||||
|
LD (CONFIG_DE),DE
|
||||||
|
LD A,B
|
||||||
|
OUT (PAGE3),A
|
||||||
|
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
EMM_FN9:
|
||||||
|
EMM_DIV: ; à §¤¥«¨âì ¡«®ª ¯ ¬ï⨠¤¢ ¡«®ª
|
||||||
|
; A - ¡«®ª, B - ¤«¨ ¯¥à¢®£® ¡«®ª ¯®á«¥ à §¤¥«¥¨ï
|
||||||
|
; ¢ë室: A - ¡«®ª 1, B - ¡«®ª 2
|
||||||
|
|
||||||
|
INC B
|
||||||
|
DEC B
|
||||||
|
SCF
|
||||||
|
RET Z
|
||||||
|
DEC B
|
||||||
|
LD E,A
|
||||||
|
CALL EMM_FN4M ; ¯®«ãç¨âì ®¬¥à áâà ¨æë ¡«®ª
|
||||||
|
RET C
|
||||||
|
LD D,A
|
||||||
|
|
||||||
|
IN A,(PAGE2)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
|
||||||
|
LD H,RAMD_FAT/256-40H
|
||||||
|
LD L,D
|
||||||
|
LD A,(HL)
|
||||||
|
LD (HL),0FFH
|
||||||
|
LD B,A
|
||||||
|
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE2),A
|
||||||
|
|
||||||
|
LD A,E
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
EMM_FN8:
|
||||||
|
EMM_ADD: ; ᫨âì ¤¢ ¡«®ª ¯ ¬ï⨠¢ ®¤¨
|
||||||
|
; € - ¡«®ª 1, B - ¡«®ª 2
|
||||||
|
; ¢ë室: € - ¡«®ª
|
||||||
|
|
||||||
|
LD E,A
|
||||||
|
IN A,(PAGE2)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD H,RAMD_FAT/256-40H
|
||||||
|
LD L,E
|
||||||
|
LD C,B
|
||||||
|
LD B,0
|
||||||
|
EMM_ADD_L:
|
||||||
|
LD A,(HL)
|
||||||
|
AND A
|
||||||
|
JR Z,EMM_ADD_ERR
|
||||||
|
CP 0FFH
|
||||||
|
JR Z,EMM_ADD_NEXT
|
||||||
|
LD L,A
|
||||||
|
DJNZ EMM_ADD_L
|
||||||
|
EMM_ADD_ERR:
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE2),A
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
|
||||||
|
EMM_ADD_NEXT:
|
||||||
|
LD A,C
|
||||||
|
AND A
|
||||||
|
JR Z,EMM_ADD_ERR
|
||||||
|
LD (HL),A
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE2),A
|
||||||
|
AND A
|
||||||
|
LD A,E
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
FN_RESET: ; B - ¯ à ¬¥âà á¡à®á
|
||||||
|
DEC B ; B = 1 - á¡à®á ¡¥§ ¯¥à¥§ £à㧪¨ á奬ë.
|
||||||
|
; B = 2 - á¡à®á á ¯¥à¥§ £à㧪®© á奬ë
|
||||||
|
; ?? B = 3 - á¡à®á á ¯¥à¥§ £à㧪®© EP1K30
|
||||||
|
JR Z,RESET_1
|
||||||
|
; DEC B
|
||||||
|
; JR Z,RESET_2
|
||||||
|
DEC B
|
||||||
|
RET NZ
|
||||||
|
INC B
|
||||||
|
RESET_1:
|
||||||
|
DI
|
||||||
|
LD A,0
|
||||||
|
LD BC,1FFDH
|
||||||
|
OUT (C),A
|
||||||
|
LD B,7FH
|
||||||
|
OUT (C),A
|
||||||
|
LD A,40H ;DCP_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD A,5
|
||||||
|
OUT (PAGE1),A
|
||||||
|
LD A,2
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD A,0
|
||||||
|
OUT (PAGE0),A
|
||||||
|
OUT (RGADR),A
|
||||||
|
OUT (RGMOD),A
|
||||||
|
;OUT (#E9),A ; #E9 = RGSCR ¥ ॠ«¨§®¢ ® ¢ á奬¥
|
||||||
|
; JP Z,0
|
||||||
|
JP RESET_ALL
|
||||||
|
|
||||||
|
|
||||||
731
ZX_EXP/EXP_FN2.ASM
Normal file
731
ZX_EXP/EXP_FN2.ASM
Normal file
@ -0,0 +1,731 @@
|
|||||||
|
;*****************************************************************
|
||||||
|
;
|
||||||
|
; ”ãªæ¨¨ à á¯à¥¤¥«¥¨ï ¯ ¬ïâ¨.
|
||||||
|
;
|
||||||
|
;*****************************************************************
|
||||||
|
; Ž¯à¥¤¥«¥¨¥ ®¡ê¥¬ ¯ ¬ïâ¨.
|
||||||
|
; ‚ë室: BC - FREE MEM ¢ ¡«®ª å ¯® 16k, HL - FULL MEM
|
||||||
|
;*****************************************************************
|
||||||
|
|
||||||
|
EMM_FN0:
|
||||||
|
IN A,(PAGE2)
|
||||||
|
LD B,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD HL,RAMD_FAT-4000H
|
||||||
|
LD C,0
|
||||||
|
EMM_FN0_L1:
|
||||||
|
LD A,(HL)
|
||||||
|
INC L
|
||||||
|
JR Z,EMM_FN0_L2
|
||||||
|
AND A
|
||||||
|
JR NZ,EMM_FN0_L1
|
||||||
|
INC C
|
||||||
|
JR EMM_FN0_L1
|
||||||
|
EMM_FN0_L2:
|
||||||
|
LD HL,100H
|
||||||
|
LD A,B
|
||||||
|
LD B,0
|
||||||
|
OUT (PAGE2),A
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
;*****************************************************************
|
||||||
|
; ˆ¨æ¨ «¨§ æ¨ï à á¯à¥¤¥«¥¨ï ¯ ¬ïâ¨.
|
||||||
|
;*****************************************************************
|
||||||
|
EMM_FN1:
|
||||||
|
PUSH BC
|
||||||
|
PUSH HL
|
||||||
|
PUSH DE
|
||||||
|
|
||||||
|
IN A,(PAGE2)
|
||||||
|
LD C,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD HL,RAMD_FAT-4000H ; €¤à¥á FAT އ“.
|
||||||
|
EMM_F1_L1: ; ‚ᥠáâà ¨æë ᢮¡®¤ë.
|
||||||
|
LD (HL),0
|
||||||
|
INC L
|
||||||
|
JR NZ,EMM_F1_L1
|
||||||
|
;*************************
|
||||||
|
LD DE,TAB_PGS ; â ¡«¨æ § ïâëå á¨á⥬ëå áâà ¨æ
|
||||||
|
EMM_F1_L2:
|
||||||
|
LD A,(DE)
|
||||||
|
CP 0FFH
|
||||||
|
JR Z,EMM_F1_L3
|
||||||
|
INC DE
|
||||||
|
LD L,A
|
||||||
|
LD A,(DE)
|
||||||
|
LD (HL),A
|
||||||
|
JR EMM_F1_L2
|
||||||
|
EMM_F1_L3:
|
||||||
|
LD L,A
|
||||||
|
LD (HL),A
|
||||||
|
EMM_F1_RAMD_INI:
|
||||||
|
LD HL,RAMD_KEYS-4000H ; ˆ¨æ¨ «¨§ æ¨ï ª«î祩 RAM-Disks
|
||||||
|
LD B,RAMD_KEY_NUM
|
||||||
|
EMM_F1_L5:
|
||||||
|
LD (HL),0
|
||||||
|
INC L
|
||||||
|
DJNZ EMM_F1_L5
|
||||||
|
LD A,C
|
||||||
|
OUT (PAGE2),A
|
||||||
|
|
||||||
|
POP DE
|
||||||
|
POP HL
|
||||||
|
POP BC
|
||||||
|
RET
|
||||||
|
;************************************
|
||||||
|
TAB_PGS:
|
||||||
|
DB 0,1,2,3,4,5,6,7
|
||||||
|
DB 08H,09H,0AH,0BH,0CH,0DH,0EH,0FH
|
||||||
|
DB 40H
|
||||||
|
DB 50H,51H,52H,53H,54H,55H,56H,57H
|
||||||
|
DB 58H,59H,5AH,5BH,5CH,5DH,5EH,5FH
|
||||||
|
DB 0FCH,0FDH,0FEH,0FFH
|
||||||
|
|
||||||
|
;*****************************************************************
|
||||||
|
; <09>®«ãç¨âì ¡«®ª ¯ ¬ï⨠N bytes,
|
||||||
|
; ‚室: B - ç¨á«® ¥®¡å®¤¨¬ëå ¡«®ª®¢
|
||||||
|
; ‚ë室: L,A - Š‹ž— RAM-Disk/ª®¤ ®è¨¡ª¨
|
||||||
|
; CF - ¯à¨§ ª ®è¨¡ª¨
|
||||||
|
;*****************************************************************
|
||||||
|
EMM_FN2M:
|
||||||
|
PUSH DE
|
||||||
|
PUSH BC
|
||||||
|
IN A,(PAGE2)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
|
||||||
|
LD C,B ; á®åà ¨âì ç¨á«® ã¦ëå ¡«®ª®¢
|
||||||
|
|
||||||
|
LD HL,RAMD_FAT-4000H
|
||||||
|
EMM_F2M_L1: ; –¨ª« ¯à®¢¥àª¨ «¨ç¨ï ã¦ëå ¡«®ª®¢.
|
||||||
|
DEC L
|
||||||
|
JR Z,EMM_F2M_NO_RAM
|
||||||
|
LD A,(HL)
|
||||||
|
AND A
|
||||||
|
JR NZ,EMM_F2M_L1
|
||||||
|
DJNZ EMM_F2M_L1
|
||||||
|
|
||||||
|
;**************************
|
||||||
|
; Œ¥áâ® ¥áâì !
|
||||||
|
;**************************
|
||||||
|
|
||||||
|
LD B,C ; ‚®ááâ ®¢¨âì ã¦ë© ®¡ê¥¬ ¤¨áª
|
||||||
|
LD C,0FFH ; Œ…’Š€ ŠŽ<C5A0>–€ RAM-Disk
|
||||||
|
LD HL,RAMD_FAT-4000H
|
||||||
|
|
||||||
|
EMM_F2M_L2: ; ‡ ¯®«¨âì RAMD_FAT
|
||||||
|
DEC L
|
||||||
|
LD A,(HL)
|
||||||
|
AND A
|
||||||
|
JR NZ,EMM_F2M_L2
|
||||||
|
LD (HL),C
|
||||||
|
LD C,L
|
||||||
|
DJNZ EMM_F2M_L2
|
||||||
|
|
||||||
|
;************************************
|
||||||
|
; L - 㪠§ â¥«ì æ¥¯®çª¨.
|
||||||
|
;************************************
|
||||||
|
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD A,L
|
||||||
|
AND A
|
||||||
|
POP BC
|
||||||
|
POP DE
|
||||||
|
RET
|
||||||
|
|
||||||
|
EMM_F2M_NO_RAM:
|
||||||
|
LD L,1 ; <20>…’ <20>€ŒŸ’ˆ
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD A,L
|
||||||
|
SCF
|
||||||
|
POP BC
|
||||||
|
POP DE
|
||||||
|
RET
|
||||||
|
|
||||||
|
;*****************************************************************
|
||||||
|
; <09>®«ãç¨âì ¡«®ª ¯ ¬ï⨠N bytes, ¤«ï RAM-Disk A
|
||||||
|
; ‚室: B - ç¨á«® ¥®¡å®¤¨¬ëå ¡«®ª®¢, A - RAM-Disk
|
||||||
|
; ‚ë室: L,A - Š‹ž— RAM-Disk/ª®¤ ®è¨¡ª¨
|
||||||
|
; CF - ¯à¨§ ª ®è¨¡ª¨
|
||||||
|
;*****************************************************************
|
||||||
|
|
||||||
|
EMM_FN2:
|
||||||
|
PUSH AF
|
||||||
|
CALL EMM_FN2M
|
||||||
|
JR C,EMM_FN2_L1
|
||||||
|
|
||||||
|
LD B,A
|
||||||
|
POP AF
|
||||||
|
CALL BLK_TO_RAMD
|
||||||
|
RET NC
|
||||||
|
; LD A,B
|
||||||
|
; CALL EMM_FN3M
|
||||||
|
; SCF
|
||||||
|
LD L,2 ; RAM-Disk § ïâ
|
||||||
|
RET
|
||||||
|
|
||||||
|
EMM_FN2_L1:
|
||||||
|
POP AF ; ¥â ¯ ¬ïâ¨
|
||||||
|
LD L,1
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
|
||||||
|
;;*****************************************************************
|
||||||
|
;; Žá¢®¡®¤¨âì ¡«®ª ¯ ¬ïâ¨
|
||||||
|
;; ‚室: A - <20>€—€‹Ž –…<E28093>Ž—Šˆ
|
||||||
|
;;*****************************************************************
|
||||||
|
EMM_FN3M:
|
||||||
|
AND A
|
||||||
|
SCF
|
||||||
|
RET Z
|
||||||
|
|
||||||
|
LD L,A
|
||||||
|
IN A,(PAGE2)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
|
||||||
|
LD H,RAMD_FAT/256-40h
|
||||||
|
LD A,L
|
||||||
|
EMM_F3M_L1:
|
||||||
|
LD L,A
|
||||||
|
LD A,(HL) ; á«¥¤ãî騩 ¡«®ª
|
||||||
|
AND A
|
||||||
|
JR Z,EMM_FN3M_ERR
|
||||||
|
LD (HL),0 ; Žá¢®¡®¤¨âì
|
||||||
|
CP 0FFH ; …᫨ ¥ ª®¥æ
|
||||||
|
JR NZ,EMM_F3M_L1 ; ¯à®¤®«¦ âì
|
||||||
|
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD A,0
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
EMM_FN3M_ERR:
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD A,2
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
|
||||||
|
;*****************************************************************
|
||||||
|
; Žá¢®¡®¤¨âì ¡«®ª ¯ ¬ï⨠ª«îç K
|
||||||
|
; ‚室: A - Š‹ž— RAM-Disk
|
||||||
|
;*****************************************************************
|
||||||
|
|
||||||
|
EMM_FN3:
|
||||||
|
CALL GET_RAMD_ST
|
||||||
|
RET C
|
||||||
|
SCF
|
||||||
|
RET Z
|
||||||
|
LD C,A
|
||||||
|
IN A,(PAGE2)
|
||||||
|
LD B,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD (HL),0
|
||||||
|
LD A,B
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD A,C
|
||||||
|
JR EMM_FN3M
|
||||||
|
|
||||||
|
;*****************************************************************
|
||||||
|
; <09>®«ãç¨âì áâà ¨æã N ¡«®ª K
|
||||||
|
; ‚室: A - ¡«®ª, B - ®¬¥à áâà ¨æë
|
||||||
|
; ‚ë室: A - áâà ¨æ , IF CF - A=0 - ¥â ¡«®ª , A=FF - END
|
||||||
|
;*****************************************************************
|
||||||
|
|
||||||
|
EMM_FN4M:
|
||||||
|
|
||||||
|
LD L,A
|
||||||
|
IN A,(PAGE2)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
|
||||||
|
INC B
|
||||||
|
LD H,RAMD_FAT/256-40H
|
||||||
|
EMM_F4M_L1:
|
||||||
|
LD A,(HL)
|
||||||
|
AND A
|
||||||
|
JR Z,EMM_F4M_ERR
|
||||||
|
DEC B
|
||||||
|
JR Z,EMM_F4M_END
|
||||||
|
LD L,A
|
||||||
|
CP 0FFH
|
||||||
|
JR NZ,EMM_F4M_L1
|
||||||
|
EMM_F4M_ERR:
|
||||||
|
LD L,A
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD A,L
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
|
||||||
|
EMM_F4M_END:
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD A,L
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
;*****************************************************************
|
||||||
|
; <09>®«ãç¨âì áâà ¨æã N ª«îç K
|
||||||
|
; ‚室: A - Š‹ž— RAM-Disk, B - ®¬¥à áâà ¨æë
|
||||||
|
; ‚ë室: A - áâà ¨æ
|
||||||
|
;*****************************************************************
|
||||||
|
|
||||||
|
EMM_FN4:
|
||||||
|
CALL GET_RAMD_ST
|
||||||
|
RET C
|
||||||
|
SCF
|
||||||
|
RET Z
|
||||||
|
JR EMM_FN4M
|
||||||
|
|
||||||
|
;*****************************************************************
|
||||||
|
; <09>®«ãç¨âì á«¥¤ãîéãî áâà ¨æã ¯® FAT
|
||||||
|
; ‚室: A - áâà ¨æ Ž‡“
|
||||||
|
; ‚ë室: A - á«¥¤ãîé ï áâà ¨æ Ž‡“
|
||||||
|
;*****************************************************************
|
||||||
|
|
||||||
|
EMM_FN5:
|
||||||
|
LD L,A
|
||||||
|
AND A
|
||||||
|
SCF
|
||||||
|
RET Z
|
||||||
|
IN A,(PAGE2)
|
||||||
|
LD H,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD A,H
|
||||||
|
LD H,RAMD_FAT/256-40H
|
||||||
|
LD L,(HL)
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD A,L
|
||||||
|
AND A
|
||||||
|
SCF
|
||||||
|
RET Z
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
;*****************************************************************
|
||||||
|
; <09>®«ãç¨âì ᯨ᮪ áâà ¨æ ¡«®ª ¢ HL
|
||||||
|
; ‚室: A - ¡«®ª, HL - ¤à¥á ¡ãä¥à - 256 ¡ ©â.
|
||||||
|
; ‚ë室: HL - ¤à¥á ¡«®ª , B - ¤«¨ ¡«®ª ¢ áâà ¨æ å Ž‡“
|
||||||
|
;*****************************************************************
|
||||||
|
|
||||||
|
EMM_FN5M:
|
||||||
|
PUSH DE
|
||||||
|
PUSH HL
|
||||||
|
EX DE,HL
|
||||||
|
LD B,0
|
||||||
|
LD L,A
|
||||||
|
|
||||||
|
EMM_FN5M_L:
|
||||||
|
LD A,L
|
||||||
|
LD (DE),A
|
||||||
|
INC DE
|
||||||
|
AND A
|
||||||
|
JR Z,EMM_FN5M_ERR
|
||||||
|
CP 0FFH
|
||||||
|
JR Z,EMM_FN5M_END
|
||||||
|
|
||||||
|
IN A,(PAGE2)
|
||||||
|
LD C,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD H,RAMD_FAT/256-40H
|
||||||
|
LD L,(HL)
|
||||||
|
LD A,C
|
||||||
|
OUT (PAGE2),A
|
||||||
|
|
||||||
|
INC B
|
||||||
|
JR NZ,EMM_FN5M_L
|
||||||
|
|
||||||
|
EMM_FN5M_ERR:
|
||||||
|
SCF
|
||||||
|
POP HL
|
||||||
|
POP DE
|
||||||
|
RET
|
||||||
|
|
||||||
|
EMM_FN5M_END:
|
||||||
|
POP HL
|
||||||
|
POP DE
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
;*****************************************************************
|
||||||
|
; <09>®«ã票¥ ¤à¥á®¢ ¯®à⮢ ¨ ¤ ëå ¤«ï ¢®ááâ ®¢«¥¨ï
|
||||||
|
; ‚室: A - ®¬¥à ®ª ¯à®¥æ¨à®¢ ¨ï
|
||||||
|
; ‚ë室: B - ¤ ë¥, C - ¤à¥á ¯®àâ ®ª
|
||||||
|
;*****************************************************************
|
||||||
|
EMM_FN6:
|
||||||
|
AND A
|
||||||
|
LD C,PAGE0
|
||||||
|
IN B,(C)
|
||||||
|
RET Z
|
||||||
|
DEC A
|
||||||
|
LD C,PAGE1
|
||||||
|
IN B,(C)
|
||||||
|
RET Z
|
||||||
|
DEC A
|
||||||
|
LD C,PAGE2
|
||||||
|
IN B,(C)
|
||||||
|
RET Z
|
||||||
|
DEC A
|
||||||
|
LD C,PAGE3
|
||||||
|
IN B,(C)
|
||||||
|
RET Z
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
|
||||||
|
FN_RAMD_R_W EQU 9BH
|
||||||
|
BLK_R_W:
|
||||||
|
RAMD_R_W:
|
||||||
|
; ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
||||||
|
; º RD/WR SECTOR HL - BUFER º\
|
||||||
|
; º DE - ABS sector ¢ 256b ¡«®ª å º\
|
||||||
|
; º B - ç¨á«® ¤ ëå ¢ 256b ¡«®ª å º\
|
||||||
|
; º A' - ª®¬ ¤ ç⥨¥/§ ¯¨áì º\
|
||||||
|
; º A - block RAM º\
|
||||||
|
; º 0 - ç⥨¥, 255 - § ¯¨áì º\
|
||||||
|
; º ** NOT USED TR-DOS VARS ** º\
|
||||||
|
; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\
|
||||||
|
; \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
|
||||||
|
|
||||||
|
AND A
|
||||||
|
SCF
|
||||||
|
RET C
|
||||||
|
PUSH HL
|
||||||
|
PUSH BC
|
||||||
|
INC D
|
||||||
|
|
||||||
|
LD C,PAGE2
|
||||||
|
IN B,(C)
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (C),A
|
||||||
|
|
||||||
|
LD H,82H
|
||||||
|
LD L,A
|
||||||
|
|
||||||
|
RAMD_LOOP_D:
|
||||||
|
DEC D
|
||||||
|
JR Z,NOT_FOUR_BLK
|
||||||
|
LD L,(HL)
|
||||||
|
LD L,(HL)
|
||||||
|
LD L,(HL)
|
||||||
|
LD L,(HL)
|
||||||
|
JR RAMD_LOOP_D
|
||||||
|
|
||||||
|
NOT_FOUR_BLK:
|
||||||
|
LD A,E
|
||||||
|
NOT_FOUR_BLK1:
|
||||||
|
SUB 40H
|
||||||
|
JR C,NOT_ONE_BLK
|
||||||
|
LD L,(HL)
|
||||||
|
JR NOT_FOUR_BLK1
|
||||||
|
|
||||||
|
NOT_ONE_BLK:
|
||||||
|
AND 3FH
|
||||||
|
; ADD A,40H
|
||||||
|
LD D,A ; DE - ADRESS in RAM-Disk
|
||||||
|
LD E,0
|
||||||
|
|
||||||
|
LD A,L ; L - ⥪ã騩 ¡ ª RAM-Disk
|
||||||
|
|
||||||
|
OUT (C),B ; ¢®ááâ ®¢¨âì áâà ¨æã
|
||||||
|
POP BC ; ¤«¨ ¤ ëå
|
||||||
|
POP HL ; ¤à¥á ¡ãä¥à
|
||||||
|
|
||||||
|
BIT 7,H
|
||||||
|
JR NZ,BLK_PAGE1
|
||||||
|
|
||||||
|
BLK_PAGE3:
|
||||||
|
LD C,PAGE3
|
||||||
|
IN C,(C)
|
||||||
|
OUT (PAGE3),A
|
||||||
|
SET 7,D
|
||||||
|
SET 6,D
|
||||||
|
JR BLK_CONT1
|
||||||
|
|
||||||
|
BLK_PAGE1:
|
||||||
|
LD C,PAGE1
|
||||||
|
IN C,(C)
|
||||||
|
OUT (PAGE1),A
|
||||||
|
RES 7,D
|
||||||
|
SET 6,D
|
||||||
|
|
||||||
|
BLK_CONT1:
|
||||||
|
EX AF,AF'
|
||||||
|
AND A
|
||||||
|
JR NZ,NO_EX_RW1
|
||||||
|
EX DE,HL
|
||||||
|
NO_EX_RW1:
|
||||||
|
EX AF,AF'
|
||||||
|
|
||||||
|
LD A,16
|
||||||
|
BLK_LL1:
|
||||||
|
DUP 16
|
||||||
|
LDI
|
||||||
|
EDUP
|
||||||
|
DEC A
|
||||||
|
JR NZ,BLK_LL1
|
||||||
|
|
||||||
|
EX AF,AF'
|
||||||
|
JR NZ,NO_EX_RW2
|
||||||
|
EX DE,HL
|
||||||
|
NO_EX_RW2:
|
||||||
|
EX AF,AF'
|
||||||
|
|
||||||
|
INC B
|
||||||
|
DEC B
|
||||||
|
JP Z,BLK_EXIT_1
|
||||||
|
|
||||||
|
BIT 6,D
|
||||||
|
JP NZ,BLK_CONT1
|
||||||
|
|
||||||
|
BIT 7,D
|
||||||
|
JR Z,BLK_PAGE3_X
|
||||||
|
|
||||||
|
IN A,(PAGE1)
|
||||||
|
LD E,A
|
||||||
|
LD D,42H
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE1),A
|
||||||
|
LD A,(DE)
|
||||||
|
OUT (PAGE1),A
|
||||||
|
LD DE,4000H
|
||||||
|
JP BLK_CONT1
|
||||||
|
|
||||||
|
BLK_PAGE3_X:
|
||||||
|
IN A,(PAGE3)
|
||||||
|
LD E,A
|
||||||
|
LD D,0C2H
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD A,(DE)
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD DE,0C000H
|
||||||
|
|
||||||
|
BIT 7,H
|
||||||
|
JP Z,BLK_CONT1
|
||||||
|
|
||||||
|
LD E,A
|
||||||
|
LD A,C
|
||||||
|
OUT (PAGE3),A
|
||||||
|
IN A,(PAGE1)
|
||||||
|
LD C,A
|
||||||
|
LD A,E
|
||||||
|
OUT (PAGE1),A
|
||||||
|
LD DE,4000H
|
||||||
|
JP BLK_CONT1
|
||||||
|
|
||||||
|
BLK_EXIT_1:
|
||||||
|
LD A,D
|
||||||
|
RLCA
|
||||||
|
XOR D
|
||||||
|
RLCA
|
||||||
|
JR NC,BLK_EXIT_2
|
||||||
|
|
||||||
|
LD A,C
|
||||||
|
OUT (PAGE1),A
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
BLK_EXIT_2:
|
||||||
|
LD A,C
|
||||||
|
OUT (PAGE3),A
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
DISK_REDIR:
|
||||||
|
PUSH HL
|
||||||
|
LD HL,DISK_TYPE-4000h
|
||||||
|
IN A,(PAGE2)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD A,(OPER_DISK)
|
||||||
|
AND 3
|
||||||
|
ADD A,L
|
||||||
|
LD L,A
|
||||||
|
LD L,(HL)
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD A,L
|
||||||
|
POP HL
|
||||||
|
RET
|
||||||
|
|
||||||
|
SET_DISK_TYPE:
|
||||||
|
PUSH HL
|
||||||
|
LD HL,DISK_TYPE-4000H
|
||||||
|
IN A,(PAGE2)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD A,(OPER_DISK)
|
||||||
|
AND 3
|
||||||
|
ADD A,L
|
||||||
|
LD L,A
|
||||||
|
LD (HL),E
|
||||||
|
LD L,(HL)
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD A,L
|
||||||
|
POP HL
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
RAMD_CALC_PAGE: ; ¢å®¤: DE - ram_disk trk_sec, A - RAM-Disk
|
||||||
|
; ¢ë室: HL - ¤à¥á, A - page
|
||||||
|
CP 16
|
||||||
|
CCF
|
||||||
|
RET C ; <20>…’ ’€ŠŽƒŽ RAM-Disk
|
||||||
|
|
||||||
|
PUSH AF
|
||||||
|
LD H,D
|
||||||
|
LD L,E
|
||||||
|
ADD HL,HL
|
||||||
|
ADD HL,HL
|
||||||
|
LD B,H
|
||||||
|
LD A,E
|
||||||
|
OR 0C0H
|
||||||
|
LD C,A ; C - ç áâì ¤à¥á , B - áâà ¨æ
|
||||||
|
POP AF
|
||||||
|
|
||||||
|
CALL EMM_FN4 ; <20>Ž‹“—ˆ’œ ‘’<E28098>€<EFBFBD>ˆ–“
|
||||||
|
LD L,0
|
||||||
|
LD H,C
|
||||||
|
|
||||||
|
; RET C
|
||||||
|
; LD B,A
|
||||||
|
; LD A,B
|
||||||
|
; CP 0FFH
|
||||||
|
; CCF
|
||||||
|
|
||||||
|
RET
|
||||||
|
|
||||||
|
;*****************************************************
|
||||||
|
;
|
||||||
|
; HL - ¡ãä¥à
|
||||||
|
;
|
||||||
|
;*****************************************************
|
||||||
|
|
||||||
|
Version EQU 020DH ; Version BIOS
|
||||||
|
|
||||||
|
ID_SPRINTER:
|
||||||
|
DB 'Sprinter BIOS: ver 2.13',0,"Sprinter",0,0
|
||||||
|
L_ID EQU $-ID_SPRINTER
|
||||||
|
;*****************************************************
|
||||||
|
|
||||||
|
FN_VERSION:
|
||||||
|
PUSH HL
|
||||||
|
EX DE,HL
|
||||||
|
LD HL,ID_SPRINTER
|
||||||
|
LD BC,L_ID
|
||||||
|
LDIR
|
||||||
|
POP HL
|
||||||
|
LD DE,Version
|
||||||
|
|
||||||
|
IN A,(PAGE2)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD BC,(CONFIG_BYTE-4000h) ; Version PLD
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD A,2 ; —¨á«® ¯®«¥©
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
;*****************************************************
|
||||||
|
|
||||||
|
EMM_FN7:
|
||||||
|
IN A,(PAGE2)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD HL,08000H
|
||||||
|
LD DE,ID_SPRINTER
|
||||||
|
LD B,L_ID
|
||||||
|
ID_LOOP:
|
||||||
|
LD A,(DE)
|
||||||
|
CP (HL)
|
||||||
|
JR NZ,INIT_SYS_ALL
|
||||||
|
INC HL
|
||||||
|
INC DE
|
||||||
|
DJNZ ID_LOOP
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE2),A
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
MSDOS_COLD_VARS:
|
||||||
|
DI
|
||||||
|
IN A,(PAGE2)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE2),A
|
||||||
|
|
||||||
|
INIT_SYS_ALL:
|
||||||
|
LD DE,08000H
|
||||||
|
LD HL,ID_SPRINTER
|
||||||
|
LD BC,L_ID
|
||||||
|
LDIR
|
||||||
|
|
||||||
|
LD HL,DISK_TYPE-4000h
|
||||||
|
LD (HL),0
|
||||||
|
INC HL
|
||||||
|
LD (HL),1
|
||||||
|
INC HL
|
||||||
|
LD (HL),40H ; HDD
|
||||||
|
INC HL
|
||||||
|
LD (HL),3
|
||||||
|
INC HL
|
||||||
|
LD (HL),0 ; PAGE0
|
||||||
|
INC HL
|
||||||
|
LD (HL),5 ; PAGE1
|
||||||
|
INC HL
|
||||||
|
LD (HL),2 ; PAGE2
|
||||||
|
INC HL
|
||||||
|
LD (HL),0 ; PAGE3
|
||||||
|
|
||||||
|
LD A,9
|
||||||
|
LD (MSD_SECS-4000h),A
|
||||||
|
LD A,0
|
||||||
|
LD (DS_1440-4000h),A
|
||||||
|
|
||||||
|
LD HL,RAMD_KEYS-4000h
|
||||||
|
LD DE,RAMD_KEYS+1-4000h
|
||||||
|
|
||||||
|
LD BC,RAMD_KEY_NUM-1
|
||||||
|
LD (HL),0
|
||||||
|
LDIR
|
||||||
|
|
||||||
|
LD DE,ZG_ADRESS
|
||||||
|
LD (WIN_ZG-4000h),DE
|
||||||
|
LD HL,L_SCORPION
|
||||||
|
LD (CONFIG_ALL-4000h),HL
|
||||||
|
LD DE,CNF_0
|
||||||
|
LD (CONFIG_DE-4000h),DE
|
||||||
|
|
||||||
|
LD HL,TASK_DATA-4000h ; 㡨âì ¢á¥ § ¤ ç¨
|
||||||
|
LD DE,TASK_DATA+1-4000h
|
||||||
|
LD BC,0FFH
|
||||||
|
LD (HL),0
|
||||||
|
LDIR
|
||||||
|
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE2),A
|
||||||
|
|
||||||
|
CALL EMM_FN1
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
673
ZX_EXP/EXP_HDD.ASM
Normal file
673
ZX_EXP/EXP_HDD.ASM
Normal file
@ -0,0 +1,673 @@
|
|||||||
|
;;.PRINTX "HDD utility"
|
||||||
|
|
||||||
|
DEFINE HDD_TYPE 1
|
||||||
|
|
||||||
|
MACRO WAIT_HDD
|
||||||
|
.LL1:
|
||||||
|
LD BC,P_HDST
|
||||||
|
IN A,(C)
|
||||||
|
BIT 7,A
|
||||||
|
JR NZ,.LL1
|
||||||
|
ENDM
|
||||||
|
|
||||||
|
|
||||||
|
;**************************************
|
||||||
|
HD_EXP_EXE:
|
||||||
|
POP AF
|
||||||
|
CALL HD_CMD_X
|
||||||
|
JP HD_EXP_RET
|
||||||
|
|
||||||
|
HD_CMD:
|
||||||
|
POP AF
|
||||||
|
CALL HD_CMD_X
|
||||||
|
JP HD_DOS_RET
|
||||||
|
|
||||||
|
|
||||||
|
HD_CMD_X: ; C - COMAND ( 5 - RD, 6 - WR )
|
||||||
|
PUSH AF
|
||||||
|
LD A,C ; 0 - INIT, 1 - DIAG
|
||||||
|
AND A
|
||||||
|
JP Z,HD_CMD_0 ; ¨¨æ¨ «¨§ æ¨ï
|
||||||
|
DEC A
|
||||||
|
JP Z,HD_CMD_1 ; ??
|
||||||
|
DEC A
|
||||||
|
JP Z,HD_CMD_2 ; â¥áâ
|
||||||
|
DEC A
|
||||||
|
JP Z,HD_CMD_3 ; preread
|
||||||
|
DEC A
|
||||||
|
JP Z,HD_CMD_4 ; read bpb
|
||||||
|
DEC A
|
||||||
|
JP Z,HD_CMD_5 ; read
|
||||||
|
DEC A
|
||||||
|
JP Z,HD_CMD_6 ; write
|
||||||
|
DEC A
|
||||||
|
JP Z,FN_HDD_PART
|
||||||
|
POP AF
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
|
||||||
|
HD_BPB_PREP:
|
||||||
|
|
||||||
|
LD D,A
|
||||||
|
IN A,(PAGE3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD A,(HD_IDF_ADR+12)
|
||||||
|
LD E,A
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD A,D
|
||||||
|
LD D,0
|
||||||
|
LD IX,0
|
||||||
|
LD B,1
|
||||||
|
|
||||||
|
HD_PREPARE:
|
||||||
|
|
||||||
|
PUSH AF
|
||||||
|
PUSH HL
|
||||||
|
CALL HD_CALC_SECS
|
||||||
|
JR NC,HD_PREP_L1
|
||||||
|
POP HL
|
||||||
|
POP AF
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
|
||||||
|
HD_PREP_L1:
|
||||||
|
|
||||||
|
LD A,B
|
||||||
|
LD BC,P_S_CNT ; “áâ ®¢¨âì ç¨á«® ᥪâ®à®¢ ¤«ï ç⥨ï
|
||||||
|
OUT (C),A
|
||||||
|
LD BC,P_S_NUM
|
||||||
|
OUT (C),L ; ‘…Š’Ž<E28099>
|
||||||
|
LD BC,P_C_LOW
|
||||||
|
OUT (C),E ; ¤®à®¦ª low
|
||||||
|
LD BC,P_C_HIG
|
||||||
|
OUT (C),D ; ¤®à®¦ª high
|
||||||
|
|
||||||
|
LD BC,P_HD_CS
|
||||||
|
DEC B
|
||||||
|
IN A,(C)
|
||||||
|
AND 0F0H
|
||||||
|
OR H
|
||||||
|
INC B
|
||||||
|
|
||||||
|
OUT (C),A
|
||||||
|
|
||||||
|
POP HL ; BUFER & PAGE
|
||||||
|
POP AF
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
HD_CMD_3: ; <20>Ž„ƒŽ’ނЀ Š ‚<>…˜<E280A6>ˆŒ Ž<>…<EFBFBD>€–ˆŸŒ R/W
|
||||||
|
POP AF
|
||||||
|
|
||||||
|
AND A
|
||||||
|
INC B
|
||||||
|
DEC B
|
||||||
|
RET Z
|
||||||
|
CALL HD_WAIT
|
||||||
|
RET C
|
||||||
|
CALL HD_PREPARE
|
||||||
|
RET C
|
||||||
|
|
||||||
|
EXX
|
||||||
|
LD C,PAGE3
|
||||||
|
IN B,(C)
|
||||||
|
EXX
|
||||||
|
OUT (PAGE3),A
|
||||||
|
EX AF,AF'
|
||||||
|
|
||||||
|
LD A,0C0H
|
||||||
|
OUT (RGADR),A
|
||||||
|
|
||||||
|
LD BC,P_CMD
|
||||||
|
LD A,20H
|
||||||
|
; OUT (C),A
|
||||||
|
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
; SCF
|
||||||
|
; RET
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
HD_CMD_4:
|
||||||
|
POP AF
|
||||||
|
CALL HD_WAIT
|
||||||
|
RET C
|
||||||
|
CALL HD_BPB_PREP
|
||||||
|
RET C
|
||||||
|
|
||||||
|
JR HD_RD_L1
|
||||||
|
|
||||||
|
;*******************
|
||||||
|
HD_CMD_5:
|
||||||
|
POP AF ; HL - BUFER, A - PAGE !!!
|
||||||
|
|
||||||
|
HD_RD_CMD:
|
||||||
|
AND A
|
||||||
|
INC B
|
||||||
|
DEC B
|
||||||
|
RET Z
|
||||||
|
CALL HD_WAIT
|
||||||
|
RET C
|
||||||
|
CALL HD_PREPARE
|
||||||
|
RET C
|
||||||
|
|
||||||
|
HD_RD_L1:
|
||||||
|
|
||||||
|
EXX
|
||||||
|
LD C,PAGE3
|
||||||
|
IN B,(C)
|
||||||
|
EXX
|
||||||
|
OUT (PAGE3),A
|
||||||
|
EX AF,AF'
|
||||||
|
|
||||||
|
LD A,0C0H
|
||||||
|
OUT (RGADR),A
|
||||||
|
|
||||||
|
LD BC,P_CMD
|
||||||
|
LD A,20H
|
||||||
|
OUT (C),A
|
||||||
|
|
||||||
|
HD_RD_L2:
|
||||||
|
WAIT_HDD
|
||||||
|
|
||||||
|
BIT 3,A
|
||||||
|
JR NZ,HD_READ_CONT
|
||||||
|
|
||||||
|
LD A,0
|
||||||
|
OUT (RGADR),A
|
||||||
|
HD_RET:
|
||||||
|
EXX
|
||||||
|
OUT (C),B
|
||||||
|
EXX
|
||||||
|
LD BC,P_ERR
|
||||||
|
IN A,(C)
|
||||||
|
AND A
|
||||||
|
SCF
|
||||||
|
RET NZ
|
||||||
|
|
||||||
|
EX AF,AF'
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
HD_READ_CONT:
|
||||||
|
LD BC,P_DATS
|
||||||
|
|
||||||
|
HD_RD_CONT1:
|
||||||
|
DUP 16
|
||||||
|
INI ; ¢á¥£® 16 à § INI - ®¯â¨¬ «ì®.
|
||||||
|
EDUP
|
||||||
|
JP NZ,HD_RD_CONT1
|
||||||
|
HD_RD_CONT2:
|
||||||
|
DUP 16
|
||||||
|
INI ; ¢á¥£® 16 à § INI - ®¯â¨¬ «ì®.
|
||||||
|
EDUP
|
||||||
|
JP NZ,HD_RD_CONT2
|
||||||
|
|
||||||
|
; INIR
|
||||||
|
; INIR
|
||||||
|
|
||||||
|
LD A,H
|
||||||
|
OR L
|
||||||
|
JR NZ,HD_RD_L2
|
||||||
|
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
EX AF,AF'
|
||||||
|
LD HL,RAMD_FAT
|
||||||
|
LD L,A
|
||||||
|
LD A,(HL)
|
||||||
|
OUT (PAGE3),A
|
||||||
|
EX AF,AF'
|
||||||
|
LD HL,0C000H
|
||||||
|
JR HD_RD_L2
|
||||||
|
|
||||||
|
;***********************************************
|
||||||
|
|
||||||
|
HD_CMD_6:
|
||||||
|
POP AF ; HL - BUFER, A - PAGE !!!
|
||||||
|
|
||||||
|
HD_WR_CMD:
|
||||||
|
AND A
|
||||||
|
INC B
|
||||||
|
DEC B
|
||||||
|
RET Z
|
||||||
|
|
||||||
|
CALL HD_WAIT
|
||||||
|
RET C
|
||||||
|
CALL HD_PREPARE
|
||||||
|
RET C
|
||||||
|
|
||||||
|
EXX
|
||||||
|
LD C,PAGE3
|
||||||
|
IN B,(C)
|
||||||
|
EXX
|
||||||
|
OUT (PAGE3),A
|
||||||
|
EX AF,AF'
|
||||||
|
|
||||||
|
LD BC,P_CMD
|
||||||
|
LD A,30H
|
||||||
|
OUT (C),A
|
||||||
|
|
||||||
|
HD_WR_L2:
|
||||||
|
WAIT_HDD
|
||||||
|
|
||||||
|
BIT 3,A
|
||||||
|
JP Z,HD_RET
|
||||||
|
|
||||||
|
;#######################################
|
||||||
|
IF HDD_TYPE
|
||||||
|
|
||||||
|
LD BC,P_DATS+100H
|
||||||
|
LD D,32
|
||||||
|
HD_WR_CONT1:
|
||||||
|
DUP 16
|
||||||
|
OUTI ; ¢á¥£® 16 à § OUTI - ®¯â¨¬ «ì®.
|
||||||
|
EDUP
|
||||||
|
DEC D
|
||||||
|
JP NZ,HD_WR_CONT1
|
||||||
|
|
||||||
|
;#######################################
|
||||||
|
ELSE
|
||||||
|
LD D,64
|
||||||
|
LD BC,P_DATS+100H
|
||||||
|
|
||||||
|
HD_WR_LOOP:
|
||||||
|
|
||||||
|
INC HL
|
||||||
|
OUTI
|
||||||
|
DEC HL
|
||||||
|
DEC HL
|
||||||
|
OUTI
|
||||||
|
INC HL
|
||||||
|
|
||||||
|
INC HL
|
||||||
|
OUTI
|
||||||
|
DEC HL
|
||||||
|
DEC HL
|
||||||
|
OUTI
|
||||||
|
INC HL
|
||||||
|
|
||||||
|
INC HL
|
||||||
|
OUTI
|
||||||
|
DEC HL
|
||||||
|
DEC HL
|
||||||
|
OUTI
|
||||||
|
INC HL
|
||||||
|
|
||||||
|
INC HL
|
||||||
|
OUTI
|
||||||
|
DEC HL
|
||||||
|
DEC HL
|
||||||
|
OUTI
|
||||||
|
INC HL
|
||||||
|
|
||||||
|
DEC D
|
||||||
|
JR NZ,HD_WR_LOOP
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
;#######################################
|
||||||
|
LD A,H
|
||||||
|
OR L
|
||||||
|
JR NZ,HD_WR_L2
|
||||||
|
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
EX AF,AF'
|
||||||
|
LD HL,RAMD_FAT
|
||||||
|
LD L,A
|
||||||
|
LD A,(HL)
|
||||||
|
OUT (PAGE3),A
|
||||||
|
EX AF,AF'
|
||||||
|
|
||||||
|
LD HL,0C000H
|
||||||
|
JR HD_WR_L2
|
||||||
|
|
||||||
|
;********************************************************
|
||||||
|
HD_CMD_1:
|
||||||
|
|
||||||
|
POP AF
|
||||||
|
HD_CMD1_EX:
|
||||||
|
ld a,0A0h
|
||||||
|
LD BC,P_HD_CS
|
||||||
|
OUT (C),A
|
||||||
|
LD A,90h ; DIAGNOSTICS
|
||||||
|
CALL HD_CMD_EXE
|
||||||
|
AND A
|
||||||
|
BIT 0,A
|
||||||
|
RET Z
|
||||||
|
LD BC,P_ERR
|
||||||
|
IN A,(C)
|
||||||
|
CP 1
|
||||||
|
RET Z
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
|
||||||
|
;**********************************************
|
||||||
|
|
||||||
|
HD_CMD_2:
|
||||||
|
POP AF
|
||||||
|
|
||||||
|
LD E,0
|
||||||
|
|
||||||
|
LD BC,P_HD_CS
|
||||||
|
LD A,0A0H
|
||||||
|
OUT (C),A
|
||||||
|
|
||||||
|
CALL TEST_HDD_DRV
|
||||||
|
|
||||||
|
JR NZ,NO_HDD1
|
||||||
|
SET 0,E
|
||||||
|
NO_HDD1:
|
||||||
|
|
||||||
|
LD BC,P_HD_CS
|
||||||
|
LD A,0B0H
|
||||||
|
OUT (C),A
|
||||||
|
|
||||||
|
CALL TEST_HDD_DRV
|
||||||
|
|
||||||
|
JR NZ,NO_HDD2
|
||||||
|
SET 1,E
|
||||||
|
NO_HDD2:
|
||||||
|
|
||||||
|
LD A,E
|
||||||
|
AND A
|
||||||
|
SCF
|
||||||
|
RET Z ; HDD absent !
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
TEST_HDD_DRV:
|
||||||
|
LD HL,01FEH
|
||||||
|
LD BC,P_S_CNT
|
||||||
|
OUT (C),L
|
||||||
|
LD BC,P_S_NUM
|
||||||
|
OUT (C),H
|
||||||
|
LD BC,P_S_CNT+256
|
||||||
|
IN A,(C)
|
||||||
|
CP L
|
||||||
|
RET NZ
|
||||||
|
LD BC,P_S_NUM+256
|
||||||
|
IN A,(C)
|
||||||
|
CP H
|
||||||
|
RET
|
||||||
|
|
||||||
|
HD_CMD_0:
|
||||||
|
|
||||||
|
POP AF
|
||||||
|
|
||||||
|
LD BC,P_HD_CS
|
||||||
|
LD A,0A0H
|
||||||
|
OUT (C),A
|
||||||
|
|
||||||
|
CALL TEST_HDD_DRV
|
||||||
|
|
||||||
|
JR NZ,HD_ABSENT
|
||||||
|
|
||||||
|
HD_C0_L3:
|
||||||
|
|
||||||
|
WAIT_HDD
|
||||||
|
|
||||||
|
LD BC,P_CMD
|
||||||
|
LD A,0ECH
|
||||||
|
OUT (C),A
|
||||||
|
|
||||||
|
WAIT_HDD
|
||||||
|
;HD_C0_L1:
|
||||||
|
;
|
||||||
|
; LD BC,P_HDST
|
||||||
|
; IN A,(C)
|
||||||
|
; BIT 7,A
|
||||||
|
; JR NZ,HD_C0_L1
|
||||||
|
|
||||||
|
BIT 3,A
|
||||||
|
JR NZ,HD_C0_L2
|
||||||
|
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
|
||||||
|
HD_ABSENT:
|
||||||
|
LD BC,P_HD_CS
|
||||||
|
LD A,0B0H
|
||||||
|
OUT (C),A
|
||||||
|
|
||||||
|
CALL TEST_HDD_DRV
|
||||||
|
JR Z,HD_C0_L3
|
||||||
|
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
|
||||||
|
HD_C0_L2:
|
||||||
|
LD BC,P_DATS
|
||||||
|
LD HL,HD_IDF_ADR
|
||||||
|
IN A,(PAGE3)
|
||||||
|
LD D,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
INIR
|
||||||
|
INIR
|
||||||
|
|
||||||
|
;HD_C0_L4:
|
||||||
|
; LD BC,P_HDST
|
||||||
|
; IN A,(C)
|
||||||
|
; BIT 7,A
|
||||||
|
; JR NZ,HD_C0_L4
|
||||||
|
|
||||||
|
LD A,(HD_IDF_ADR+12) ; ç¨á«® ᥪâ®à®¢
|
||||||
|
LD C,A
|
||||||
|
LD B,0
|
||||||
|
LD HL,0
|
||||||
|
LD A,(HD_IDF_ADR+6) ; ç¨á«® £®«®¢®ª
|
||||||
|
LOOP_XX:
|
||||||
|
ADD HL,BC
|
||||||
|
DEC A
|
||||||
|
JR NZ,LOOP_XX
|
||||||
|
LD (HD_IDF_ADR+4),HL
|
||||||
|
|
||||||
|
WAIT_HDD
|
||||||
|
|
||||||
|
LD BC,P_HD_CS
|
||||||
|
DEC B
|
||||||
|
IN A,(C)
|
||||||
|
AND 010H
|
||||||
|
LD B,A
|
||||||
|
LD A,(HD_IDF_ADR+6) ; ç¨á«® £®«®¢®ª
|
||||||
|
|
||||||
|
DEC A
|
||||||
|
AND 0FH
|
||||||
|
OR 0A0H
|
||||||
|
OR B
|
||||||
|
|
||||||
|
LD H,A
|
||||||
|
LD A,(HD_IDF_ADR+99)
|
||||||
|
BIT 1,A
|
||||||
|
JR Z,HD_C0_NO_LBA
|
||||||
|
|
||||||
|
SET 6,H
|
||||||
|
|
||||||
|
HD_C0_NO_LBA:
|
||||||
|
LD BC,P_HD_CS
|
||||||
|
OUT (C),H
|
||||||
|
|
||||||
|
LD A,(HD_IDF_ADR+12) ; ç¨á«® ᥪâ®à®¢
|
||||||
|
|
||||||
|
LD BC,P_S_CNT
|
||||||
|
OUT (C),A
|
||||||
|
LD A,D
|
||||||
|
OUT (PAGE3),A
|
||||||
|
|
||||||
|
LD A,91H ; SET HDD PARAMETERS
|
||||||
|
CALL HD_CMD_EXE
|
||||||
|
RET
|
||||||
|
|
||||||
|
; RET C
|
||||||
|
; LD A,1FH ; RECALIBRATE
|
||||||
|
; CALL HD_CMD_EXE
|
||||||
|
; RET
|
||||||
|
|
||||||
|
HD_CMD_EXE:
|
||||||
|
CALL HD_WAIT
|
||||||
|
RET C
|
||||||
|
LD BC,P_CMD
|
||||||
|
OUT (C),A
|
||||||
|
HD_WAIT:
|
||||||
|
PUSH DE
|
||||||
|
PUSH BC
|
||||||
|
PUSH AF
|
||||||
|
|
||||||
|
LD DE,0
|
||||||
|
|
||||||
|
HD_WAIT1:
|
||||||
|
LD BC,P_HDST
|
||||||
|
IN A,(C)
|
||||||
|
BIT 7,A
|
||||||
|
JR Z,HD_W_EXIT
|
||||||
|
DEC DE
|
||||||
|
LD A,D
|
||||||
|
OR E
|
||||||
|
JR NZ,HD_WAIT1
|
||||||
|
|
||||||
|
POP AF
|
||||||
|
POP BC
|
||||||
|
POP DE
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
|
||||||
|
HD_W_EXIT:
|
||||||
|
POP AF
|
||||||
|
POP BC
|
||||||
|
POP DE
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
;****************************
|
||||||
|
HDD_LBA:
|
||||||
|
POP BC
|
||||||
|
LD L,E
|
||||||
|
LD E,D
|
||||||
|
DB 0DDH
|
||||||
|
LD D,L
|
||||||
|
XOR A
|
||||||
|
LD H,A
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
HD_CALC_SECS:
|
||||||
|
|
||||||
|
DB 0DDH
|
||||||
|
LD A,H
|
||||||
|
AND A
|
||||||
|
SCF
|
||||||
|
RET NZ ; ®è¨¡ª , ᫨誮¬ ¡®«ì让 HDD..
|
||||||
|
|
||||||
|
PUSH BC
|
||||||
|
LD BC,P_HD_CS
|
||||||
|
DEC B
|
||||||
|
IN A,(C)
|
||||||
|
BIT 6,A
|
||||||
|
JR NZ,HDD_LBA
|
||||||
|
|
||||||
|
;*******************************
|
||||||
|
; IX,DE - ¡á®«îâë© ®¬¥à ᥪâ®à
|
||||||
|
|
||||||
|
PUSH IX
|
||||||
|
POP HL
|
||||||
|
|
||||||
|
IN A,(PAGE3)
|
||||||
|
LD C,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD A,C
|
||||||
|
LD (COPY_PAGE3),A
|
||||||
|
|
||||||
|
LD BC,(HD_IDF_ADR+4) ; ç¨á«® ᥪâ®à®¢ 樫¨¤à¥
|
||||||
|
|
||||||
|
; HL,DE - ®¬¥à ᥪâ®à
|
||||||
|
; BC - ç¨á«® ᥪâ®à®¢ 樫¨¤à¥
|
||||||
|
; HL,DE à §¤¥«¨âì BC
|
||||||
|
LD A,16
|
||||||
|
SCF
|
||||||
|
DIV_LOOP:
|
||||||
|
EX DE,HL
|
||||||
|
ADD HL,HL
|
||||||
|
EX DE,HL
|
||||||
|
ADC HL,HL
|
||||||
|
|
||||||
|
SBC HL,BC ; áà ¢¨âì HL ¨ BC
|
||||||
|
JR NC,NO_ADD ; ¯¥à¥®á ¥ ¡ë«® - +1!
|
||||||
|
ADD HL,BC
|
||||||
|
DEC A
|
||||||
|
JR NZ,DIV_LOOP
|
||||||
|
JR DIV_END
|
||||||
|
NO_ADD: INC DE
|
||||||
|
DEC A
|
||||||
|
JR NZ,DIV_LOOP
|
||||||
|
DIV_END: ; DE - १ã«ìâ â, HL - ®áâ ⮪
|
||||||
|
|
||||||
|
; DE - 樫¨¤à
|
||||||
|
LD A,(HD_IDF_ADR+12) ; A - ç¨á«® ᥪâ®à®¢ ¤®à®¦ª¥
|
||||||
|
; HL - ®¬¥à ᥪâ®à ¢ 樫¨¤à¥
|
||||||
|
LD B,0
|
||||||
|
LD C,A
|
||||||
|
|
||||||
|
; LD BC,(MS_BPB+S_P_T) ; —ˆ‘‹Ž ‘…Š’Ž<E28099>Ž‚ <20>€ „Ž<E2809E>ކЅ
|
||||||
|
XOR A
|
||||||
|
HD_CALC_LOOP2:
|
||||||
|
SBC HL,BC
|
||||||
|
INC A
|
||||||
|
JR NC,HD_CALC_LOOP2
|
||||||
|
|
||||||
|
DEC A ; A - £®«®¢ª
|
||||||
|
ADD HL,BC ; L - ᥪâ®à
|
||||||
|
INC L
|
||||||
|
LD H,A ; HL - HEAD,SEC
|
||||||
|
|
||||||
|
LD A,(COPY_PAGE3)
|
||||||
|
OUT (PAGE3),A
|
||||||
|
|
||||||
|
POP BC
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
FN_HDD_PART:
|
||||||
|
POP AF
|
||||||
|
BIT 0,A
|
||||||
|
LD A,#21 ; !HARDCODE
|
||||||
|
JR Z,.SET_CH
|
||||||
|
LD A,#01 ; !HARDCODE
|
||||||
|
.SET_CH:
|
||||||
|
OUT (#BC),A ; !HARDCODE IDE.Chanel.Choose
|
||||||
|
RET
|
||||||
|
; DB 'HDD_DRV_END'
|
||||||
|
|
||||||
|
; ‚室:
|
||||||
|
; C - ª®¬ ¤
|
||||||
|
; 0 - INIT - ¢å®¤ëå ¯ à ¥â => A - ç¨á«® ¯®¤¤¥à¦¨¢ ¥¬ëå ¤¨áª®¢.
|
||||||
|
; 1 - RESET - ¢ë¡®à ¤¨áª A - ®¬¥à ¤¨áª ®â 0 =>
|
||||||
|
; 2 - (STATUS)
|
||||||
|
; 3 - MEDIA CHECK - A - ®¬¥à ¤¨áª => A = 0 - old. #FF - new (¢á¥£¤ #FF)
|
||||||
|
; 4 - READ BPB - A - ¤¨áª HL - ¤à¥á ¢ ⥪ã饩 áâà ¨æ¥.
|
||||||
|
; 5 - READ - A - ¤¨áª, IX:DE ᥪâ®à, HL - ¤à¥á, B - ç¨á«® ᥪâ®à®¢
|
||||||
|
; 6 - WRITE - '' -
|
||||||
|
;
|
||||||
|
; ®è¨¡ª¨ - CF - A - ®è¨¡ª
|
||||||
|
;
|
||||||
|
; 0 - ¥â ®è¨¡ª¨
|
||||||
|
; 1 - ¥¢¥à ï ª®¬ ¤
|
||||||
|
; 2 - ¥¢¥àë© ®¬¥à ¤¨áª
|
||||||
|
; 3 - ¥¢¥àë© ä®à¬ â (¥ MS-DOS)
|
||||||
|
; 4 - ¥â £®â®¢®áâ¨
|
||||||
|
; 5 - ®è¨¡ª ¯®§¨æ¨®¨à®¢ ¨ï
|
||||||
|
; 6 - ᥪâ®à ¥ ©¤¥
|
||||||
|
; 7 - ®è¨¡ª CRC
|
||||||
|
; 8 - § é¨â § ¯¨á¨
|
||||||
|
; 9 - ®è¨¡ª ç⥨ï
|
||||||
|
; 10 - ®è¨¡ª § ¯¨á¨
|
||||||
|
; 11 - ƒ‹žŠ
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
2012
ZX_EXP/EXP_LP2.ASM
Normal file
2012
ZX_EXP/EXP_LP2.ASM
Normal file
File diff suppressed because it is too large
Load Diff
525
ZX_EXP/EXP_PIC2.ASM
Normal file
525
ZX_EXP/EXP_PIC2.ASM
Normal file
@ -0,0 +1,525 @@
|
|||||||
|
|
||||||
|
;******************************************************************
|
||||||
|
PIC_FN1: ; ¢å®¤: dE - ¢¥à⨪ «ì, HL - £®à¨§®â «ì,
|
||||||
|
; B - 梥â â®çª¨, A - íªà
|
||||||
|
AND A
|
||||||
|
SCF
|
||||||
|
RET NZ
|
||||||
|
|
||||||
|
IN A,(RGADR)
|
||||||
|
PUSH AF
|
||||||
|
|
||||||
|
IN A,(PAGE3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
|
||||||
|
LD A,(WIN_MAP_IX+WIN_GRAF_Y)
|
||||||
|
ADD A,E
|
||||||
|
OUT (RGADR),A
|
||||||
|
LD A,B
|
||||||
|
LD BC,(WIN_MAP_IX+WIN_GRAF_X)
|
||||||
|
ADD HL,BC
|
||||||
|
LD B,A
|
||||||
|
LD A,50H
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD (HL),A
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE3),A
|
||||||
|
|
||||||
|
POP AF
|
||||||
|
OUT (RGADR),A
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
PIC_FN2: ; ¢å®¤: dE - ¢¥à⨪ «ì, HL - £®à¨§®â «ì.
|
||||||
|
; IX - ¤«¨ «¨¨¨ ¢ â®çª å ¥ 0 !!!
|
||||||
|
; FILL - by A
|
||||||
|
LD D,A ; ????
|
||||||
|
IN A,(PAGE1)
|
||||||
|
EX AF,AF'
|
||||||
|
|
||||||
|
LD A,B
|
||||||
|
ADD A,50H
|
||||||
|
OUT (PAGE1),A
|
||||||
|
|
||||||
|
BIT 0,B
|
||||||
|
LD BC,40H+04000H
|
||||||
|
JR Z,PIC_FN2_NO_2ND
|
||||||
|
LD BC,40H+320+04000H
|
||||||
|
PIC_FN2_NO_2ND:
|
||||||
|
ADD HL,BC
|
||||||
|
|
||||||
|
LD A,E
|
||||||
|
OUT (RGADR),A
|
||||||
|
|
||||||
|
DB 0DDH
|
||||||
|
LD A,H
|
||||||
|
AND A
|
||||||
|
JR Z,PIC_FN2_NO256
|
||||||
|
PIC_FN2_256L:
|
||||||
|
LD B,64
|
||||||
|
PIC_FN2_256:
|
||||||
|
LD (HL),D
|
||||||
|
INC HL
|
||||||
|
LD (HL),D
|
||||||
|
INC HL
|
||||||
|
LD (HL),D
|
||||||
|
INC HL
|
||||||
|
LD (HL),D
|
||||||
|
INC HL
|
||||||
|
DJNZ PIC_FN2_256
|
||||||
|
DEC A
|
||||||
|
JR NZ,PIC_FN2_256L
|
||||||
|
|
||||||
|
PIC_FN2_NO256:
|
||||||
|
DB 0DDH
|
||||||
|
LD B,L
|
||||||
|
AND A
|
||||||
|
RR B
|
||||||
|
JR NC,PIC_FN2_NO1
|
||||||
|
LD (HL),D
|
||||||
|
INC HL
|
||||||
|
AND A
|
||||||
|
PIC_FN2_NO1:
|
||||||
|
RR B
|
||||||
|
JR NC,PIC_FN2_NO2
|
||||||
|
LD (HL),D
|
||||||
|
INC HL
|
||||||
|
LD (HL),D
|
||||||
|
INC HL
|
||||||
|
AND A
|
||||||
|
PIC_FN2_NO2:
|
||||||
|
XOR A
|
||||||
|
CP B
|
||||||
|
JR Z,PIC_FN2_NO4
|
||||||
|
PIC_FN2_4:
|
||||||
|
LD (HL),D
|
||||||
|
INC HL
|
||||||
|
LD (HL),D
|
||||||
|
INC HL
|
||||||
|
LD (HL),D
|
||||||
|
INC HL
|
||||||
|
LD (HL),D
|
||||||
|
INC HL
|
||||||
|
DJNZ PIC_FN2_4
|
||||||
|
PIC_FN2_NO4:
|
||||||
|
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE1),A
|
||||||
|
XOR A
|
||||||
|
OUT (RGADR),A
|
||||||
|
RET
|
||||||
|
|
||||||
|
;************************************************************************
|
||||||
|
PIC_FN3: ; ¢å®¤: dE - ¢¥à⨪ «ì, HL - £®à¨§®â «ì.
|
||||||
|
; A',HL' - ¤à¥á ¤ ëå ¢® ¢â®à®© áâà ¨æ¥ !
|
||||||
|
; BC' - ¤«¨ ¤ ëå
|
||||||
|
; ‚›‚Ž„ ‹ˆ<E280B9>ˆˆ ’Ž—…Š
|
||||||
|
IN A,(PAGE3)
|
||||||
|
LD C,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD A,C
|
||||||
|
LD (COPY_PAGE3),A
|
||||||
|
IN A,(PAGE2)
|
||||||
|
LD (COPY_PAGE2),A
|
||||||
|
IN A,(PAGE1)
|
||||||
|
LD (COPY_PAGE1),A
|
||||||
|
|
||||||
|
LD A,B
|
||||||
|
ADD A,50H
|
||||||
|
OUT (PAGE1),A
|
||||||
|
|
||||||
|
BIT 0,B
|
||||||
|
LD BC,40H+04000H
|
||||||
|
JR Z,PIC_FN3_NO_2ND
|
||||||
|
LD BC,40H+320+04000H
|
||||||
|
PIC_FN3_NO_2ND:
|
||||||
|
ADD HL,BC
|
||||||
|
|
||||||
|
LD A,E
|
||||||
|
OUT (RGADR),A
|
||||||
|
|
||||||
|
LD A,H
|
||||||
|
EXX
|
||||||
|
LD D,A
|
||||||
|
EXX
|
||||||
|
LD A,L
|
||||||
|
EXX
|
||||||
|
LD E,A
|
||||||
|
EXX
|
||||||
|
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE2),A
|
||||||
|
EX AF,AF'
|
||||||
|
LD HL,RAMD_FAT
|
||||||
|
LD L,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD A,(HL)
|
||||||
|
OUT (PAGE3),A
|
||||||
|
EXX
|
||||||
|
LDIR
|
||||||
|
BIT 6,H
|
||||||
|
JR Z,PIC_FN3_NO
|
||||||
|
RES 6,H
|
||||||
|
EX AF,AF'
|
||||||
|
PIC_FN3_NO:
|
||||||
|
EXX
|
||||||
|
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD A,(COPY_PAGE1)
|
||||||
|
OUT (PAGE1),A
|
||||||
|
LD A,(COPY_PAGE2)
|
||||||
|
OUT (PAGE2),A
|
||||||
|
LD A,(COPY_PAGE3)
|
||||||
|
OUT (PAGE3),A
|
||||||
|
|
||||||
|
XOR A
|
||||||
|
OUT (RGADR),A
|
||||||
|
RET
|
||||||
|
|
||||||
|
;**************************************************************************
|
||||||
|
PIC_FN4: ; ¢å®¤: HL - ¤ ë¥ ¯ «¨âàë RGB, E - ç «ìë© æ¢¥â
|
||||||
|
; D - ç¨á«® 梥⮢, B - PAL-mask, A - page PAL
|
||||||
|
|
||||||
|
PUSH IX
|
||||||
|
|
||||||
|
EX AF,AF'
|
||||||
|
IN A,(RGADR)
|
||||||
|
PUSH AF ; á®åà ¨âì ¯®«®¦¥¨¥ RGADR
|
||||||
|
LD A,E
|
||||||
|
OUT (RGADR),A ; ç «ìë© æ¢¥â ¢ ¯®àâ
|
||||||
|
LD A,D ; á®åà ¨âì ç¨á«® 梥⮢
|
||||||
|
EX AF,AF' ; ¢¥àãâì áâà ¨æã PAL
|
||||||
|
|
||||||
|
BIT 7,H ; ¯à®¢¥à¨âì ¤à¥á ¤ ëå
|
||||||
|
LD C,PAGE3 ; ¥á«¨ ¨¦¥ 8000h
|
||||||
|
LD D,0C3H ; â® £à ä.íªà áâà ¨æ¥ 3
|
||||||
|
JR Z,PIC_FN4_NO_PAGE1
|
||||||
|
LD D,043H ; ¨ ç¥
|
||||||
|
LD C,PAGE1 ; áâà ¨æ¥ 1
|
||||||
|
PIC_FN4_NO_PAGE1:
|
||||||
|
|
||||||
|
ADD A,A
|
||||||
|
;JR C,PIC_PAL_READ
|
||||||
|
|
||||||
|
ADD A,A
|
||||||
|
AND 1CH
|
||||||
|
XOR 0E0H ; ¬« ¤è¨© ¡ ©â ¤à¥á PAL
|
||||||
|
LD E,A ; DE - ¤à¥á ¢ ¢¨¤¥®-އ“
|
||||||
|
PUSH DE
|
||||||
|
POP IX ; ¤à¥á ¯ «¨âàë
|
||||||
|
|
||||||
|
LD D,B ; ¬ ᪠PAL
|
||||||
|
EX AF,AF' ; ¢¥àãâì ç¨á«® 梥⮢
|
||||||
|
LD B,A ; ç¨á«® 梥⮢
|
||||||
|
|
||||||
|
IN E,(C) ; á®åà ¨âì áâà ¨æã 3
|
||||||
|
LD A,50H ; áâà ¨æ £à ä¨ç¥áª®£® RAM
|
||||||
|
OUT (C),A
|
||||||
|
|
||||||
|
PIC_FN4_L1: ; 横« ãáâ ®¢ª¨ 梥⮢ ¯ «¨âàë
|
||||||
|
|
||||||
|
LD A,(HL) ; B
|
||||||
|
AND D
|
||||||
|
LD (IX+2),A
|
||||||
|
INC HL
|
||||||
|
|
||||||
|
LD A,(HL) ; G
|
||||||
|
AND D
|
||||||
|
LD (IX+1),A
|
||||||
|
INC HL
|
||||||
|
|
||||||
|
LD A,(HL) ; R
|
||||||
|
AND D
|
||||||
|
LD (IX+0),A
|
||||||
|
INC HL
|
||||||
|
|
||||||
|
LD A,(HL) ; Y
|
||||||
|
AND D
|
||||||
|
LD (IX+3),A
|
||||||
|
INC HL
|
||||||
|
|
||||||
|
IN A,(RGADR)
|
||||||
|
INC A
|
||||||
|
OUT (RGADR),A
|
||||||
|
|
||||||
|
DJNZ PIC_FN4_L1 ; ¢ë¯®«ïâì, ¯®ª ¥ 0
|
||||||
|
|
||||||
|
OUT (C),E ; ¢®ááâ ®¢¨âì áâà ¨æã 3
|
||||||
|
|
||||||
|
POP AF
|
||||||
|
OUT (RGADR),A ; ¢®ááâ ®¢¨âì Y_PORT
|
||||||
|
POP IX
|
||||||
|
;AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
; PIC_PAL_READ:
|
||||||
|
|
||||||
|
; ADD A,A
|
||||||
|
; AND 1CH
|
||||||
|
; XOR 0E0H ; ¬« ¤è¨© ¡ ©â ¤à¥á PAL
|
||||||
|
; LD E,A ; DE - ¤à¥á ¢ ¢¨¤¥®-އ“
|
||||||
|
; PUSH DE
|
||||||
|
; POP IX ; ¤à¥á ¯ «¨âàë
|
||||||
|
|
||||||
|
; LD D,B ; ¬ ᪠PAL
|
||||||
|
; EX AF,AF' ; ¢¥àãâì ç¨á«® 梥⮢
|
||||||
|
; LD B,A ; ç¨á«® 梥⮢
|
||||||
|
|
||||||
|
; IN E,(C) ; á®åà ¨âì áâà ¨æã 3
|
||||||
|
; LD A,50H ; áâà ¨æ £à ä¨ç¥áª®£® RAM
|
||||||
|
; OUT (C),A
|
||||||
|
|
||||||
|
; PIC_FN4_L2: ; 横« ãáâ ®¢ª¨ 梥⮢ ¯ «¨âàë
|
||||||
|
|
||||||
|
; LD A,(IX+2)
|
||||||
|
; LD (HL),A ; B
|
||||||
|
; INC HL
|
||||||
|
|
||||||
|
; LD A,(IX+1)
|
||||||
|
; LD (HL),A ; G
|
||||||
|
; INC HL
|
||||||
|
|
||||||
|
; LD A,(IX+0)
|
||||||
|
; LD (HL),A ; R
|
||||||
|
; INC HL
|
||||||
|
|
||||||
|
; LD A,(IX+3)
|
||||||
|
; LD (HL),A ; Y
|
||||||
|
; INC HL
|
||||||
|
|
||||||
|
; IN A,(RGADR)
|
||||||
|
; INC A
|
||||||
|
; OUT (RGADR),A
|
||||||
|
|
||||||
|
; DJNZ PIC_FN4_L2 ; ¢ë¯®«ïâì, ¯®ª ¥ 0
|
||||||
|
|
||||||
|
; OUT (C),E ; ¢®ááâ ®¢¨âì áâà ¨æã 3
|
||||||
|
|
||||||
|
; POP AF
|
||||||
|
; OUT (RGADR),A ; ¢®ááâ ®¢¨âì Y_PORT
|
||||||
|
; POP IX
|
||||||
|
; AND A
|
||||||
|
; RET
|
||||||
|
|
||||||
|
|
||||||
|
;********************************************************************
|
||||||
|
PIC_FN5: ; “‘’€<E28099>ނЀ ‘’<E28098>€<EFBFBD>ˆ–› MODE
|
||||||
|
LD A,E
|
||||||
|
AND 1
|
||||||
|
OUT (RGMOD),A
|
||||||
|
RET
|
||||||
|
;*******************************************************************
|
||||||
|
PIC_FN6: ; A - page_pal, E - ®¬¥à ¯ «¨âàë, B - ⨯ ¯ «¨âàë
|
||||||
|
|
||||||
|
LD D,A
|
||||||
|
DEC B
|
||||||
|
JP Z,SET_PAL_GRAF
|
||||||
|
DEC B
|
||||||
|
JP Z,SET_PAL_ZX
|
||||||
|
; DEC B
|
||||||
|
; JP Z,SET_PAL_IBM
|
||||||
|
|
||||||
|
; LD IX,PAL_DAT1
|
||||||
|
; JR Z,PIC_FN6_L1
|
||||||
|
; DEC B
|
||||||
|
; LD IX,PAL_DAT
|
||||||
|
; JR Z,PIC_FN6_L1
|
||||||
|
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
|
||||||
|
;PIC_FN6_L1:
|
||||||
|
; AND 3
|
||||||
|
; ADD A,A
|
||||||
|
; ADD A,A
|
||||||
|
; ADD A,0E0H
|
||||||
|
; LD L,A
|
||||||
|
; LD H,43H
|
||||||
|
; IN A,(PAGE1)
|
||||||
|
; PUSH AF
|
||||||
|
;
|
||||||
|
; LD A,50H
|
||||||
|
; OUT (PAGE1),A
|
||||||
|
; XOR A
|
||||||
|
; OUT (RGADR),A
|
||||||
|
; EX AF,AF'
|
||||||
|
; call PAL_LOOP_M
|
||||||
|
;
|
||||||
|
; POP AF
|
||||||
|
; OUT (PAGE1),A
|
||||||
|
; XOR A
|
||||||
|
; OUT (RGADR),A
|
||||||
|
;
|
||||||
|
; RET
|
||||||
|
|
||||||
|
;******************************************************************
|
||||||
|
PIC_FN7: ; <20>¨á®¢ ¨¥ «¨¨¨. d… - ¢¥à⨪ «ì, HL - £®à¨§®â «ì
|
||||||
|
; H' - ¢ëá®â , C'/DE',B' - add_parameters
|
||||||
|
; A - color
|
||||||
|
LD D,A
|
||||||
|
IN A,(PAGE1)
|
||||||
|
PUSH AF
|
||||||
|
|
||||||
|
LD A,B
|
||||||
|
ADD A,50H
|
||||||
|
OUT (PAGE1),A
|
||||||
|
|
||||||
|
BIT 0,B
|
||||||
|
LD BC,40H+04000H
|
||||||
|
JR Z,PIC_FN7_NO_2ND
|
||||||
|
LD BC,40H+320+04000H
|
||||||
|
PIC_FN7_NO_2ND:
|
||||||
|
ADD HL,BC
|
||||||
|
|
||||||
|
LD A,E
|
||||||
|
PIC_FN7_L1:
|
||||||
|
OUT (RGADR),A ; áâà ¨æ ¢¨¤¥®-އ“
|
||||||
|
LD (HL),D
|
||||||
|
|
||||||
|
EXX
|
||||||
|
EX AF,AF'
|
||||||
|
|
||||||
|
DEC H
|
||||||
|
JR Z,PIC_FN7_EXIT
|
||||||
|
|
||||||
|
LD A,C ; NEXT HORIZONTAL
|
||||||
|
ADD A,B
|
||||||
|
LD C,A
|
||||||
|
LD A,E
|
||||||
|
EXX
|
||||||
|
ADC A,L
|
||||||
|
LD L,A
|
||||||
|
EXX
|
||||||
|
LD A,D
|
||||||
|
EXX
|
||||||
|
ADC A,H
|
||||||
|
LD H,A
|
||||||
|
|
||||||
|
INC E ; NEXT VERTICAL
|
||||||
|
|
||||||
|
EX AF,AF'
|
||||||
|
INC A
|
||||||
|
JR PIC_FN7_L1
|
||||||
|
|
||||||
|
PIC_FN7_EXIT:
|
||||||
|
EXX
|
||||||
|
POP AF
|
||||||
|
OUT (PAGE1),A
|
||||||
|
XOR A
|
||||||
|
OUT (RGADR),A
|
||||||
|
RET
|
||||||
|
|
||||||
|
;******************************************************************
|
||||||
|
PIC_FN8: ; <20>¨á®¢ ¨¥ «¨¨¨. d… - ¢¥à⨪ «ì, HL - £®à¨§®â «ì
|
||||||
|
; H' - ¢ëá®â , C'/DE',B' - add_parameters
|
||||||
|
; (IX) - color
|
||||||
|
IN A,(PAGE1)
|
||||||
|
PUSH AF
|
||||||
|
|
||||||
|
LD A,B
|
||||||
|
ADD A,50H
|
||||||
|
OUT (PAGE1),A
|
||||||
|
|
||||||
|
BIT 0,B
|
||||||
|
LD BC,40H+04000H
|
||||||
|
JR Z,PIC_FN8_NO_2ND
|
||||||
|
LD BC,40H+320+04000H
|
||||||
|
PIC_FN8_NO_2ND:
|
||||||
|
ADD HL,BC
|
||||||
|
|
||||||
|
LD A,E
|
||||||
|
|
||||||
|
PIC_FN8_L1:
|
||||||
|
OUT (RGADR),A ; áâà ¨æ ¢¨¤¥®-އ“
|
||||||
|
LD D,(IX)
|
||||||
|
INC IX
|
||||||
|
LD (HL),D
|
||||||
|
EXX
|
||||||
|
EX AF,AF'
|
||||||
|
|
||||||
|
DEC H
|
||||||
|
JR Z,PIC_FN8_EXIT
|
||||||
|
|
||||||
|
LD A,C ; NEXT HORIZONTAL
|
||||||
|
ADD A,B
|
||||||
|
LD C,A
|
||||||
|
LD A,E
|
||||||
|
EXX
|
||||||
|
ADC A,L
|
||||||
|
LD L,A
|
||||||
|
EXX
|
||||||
|
LD A,D
|
||||||
|
EXX
|
||||||
|
ADC A,H
|
||||||
|
LD H,A
|
||||||
|
|
||||||
|
INC E ; NEXT VERTICAL
|
||||||
|
EX AF,AF'
|
||||||
|
INC A
|
||||||
|
JR PIC_FN8_L1
|
||||||
|
|
||||||
|
PIC_FN8_EXIT:
|
||||||
|
EXX
|
||||||
|
POP AF
|
||||||
|
OUT (PAGE1),A
|
||||||
|
XOR A
|
||||||
|
OUT (RGADR),A
|
||||||
|
RET
|
||||||
|
|
||||||
|
;**************************************************
|
||||||
|
; ‚뢮¤ á¯à ©â íªà
|
||||||
|
PIC_FN9: ; HL - £®à¨§®â «ì, dE - ¢¥à⨪ «ì
|
||||||
|
; A',HL' - ¤à¥á ¤ ëå
|
||||||
|
;*********************************
|
||||||
|
|
||||||
|
PIC_FN10: ; HL,E - ª®®à¤¨ âë D - color
|
||||||
|
; B - Magnify
|
||||||
|
PIC_FN11:
|
||||||
|
|
||||||
|
PIC_FN12:
|
||||||
|
|
||||||
|
PIC_FN13:
|
||||||
|
|
||||||
|
PIC_FN14:
|
||||||
|
|
||||||
|
PIC_FN15:
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
|
||||||
|
;************************************
|
||||||
|
;
|
||||||
|
; <20>ªà ë¥ â ¡«¨æë
|
||||||
|
|
||||||
|
; LP_SCR_80:
|
||||||
|
; DB 40,32,0,0,1BH,0,0,0
|
||||||
|
; DB 0,0,0,0,0,0,0,0
|
||||||
|
; ;
|
||||||
|
; LP_SCR_40:
|
||||||
|
; DB 40,32,0,0,7BH,0,0,0
|
||||||
|
; DB 0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
; LP_SCR_32:
|
||||||
|
; DB 32,24,4,4,30H,1,0,0
|
||||||
|
; DB 0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
; LP_SCR_64:
|
||||||
|
; DB 32,24,4,4,9BH,0,0,0
|
||||||
|
; DB 0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
; PIC_320X256_1:
|
||||||
|
; DB 40,32,0,0,20H,0,8,0
|
||||||
|
; DB 0,0,0,0,0,0,0,0
|
||||||
|
; ;
|
||||||
|
; PIC_320X256_2:
|
||||||
|
; DB 40,32,0,0,60H,0,48,0
|
||||||
|
; DB 0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
; ;************************************
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
289
ZX_EXP/EXP_SCR.ASM
Normal file
289
ZX_EXP/EXP_SCR.ASM
Normal file
@ -0,0 +1,289 @@
|
|||||||
|
;*****************************************************
|
||||||
|
;
|
||||||
|
; <20>ªà ë¥ â ¡«¨æë
|
||||||
|
; ’ ¡«¨æë à ᯮ«®¦¥¨ï ¤ ëå !!!
|
||||||
|
;
|
||||||
|
;*****************************************************
|
||||||
|
|
||||||
|
; byte 1
|
||||||
|
; 0..4 - VIDEO_PAGE
|
||||||
|
; 5 - mode 42/84 ; 0 - 42,1 - 84
|
||||||
|
; 6 - next line
|
||||||
|
; 7 - end table
|
||||||
|
; byte 2 - number of places
|
||||||
|
; byte 3..4 - adress places/
|
||||||
|
; 4000-5FFF - Spectrum modes/ C000-FFFF - Graf mode
|
||||||
|
;
|
||||||
|
LP_S MACRO PG,XX,ADR
|
||||||
|
DEFB PG,XX
|
||||||
|
DEFW ADR
|
||||||
|
ENDM
|
||||||
|
;*********************************
|
||||||
|
; BYTE 0 - ¡¨â 7 - ª®¥æ áâப¨, ®á⠫쮥 - ०¨¬ íªà
|
||||||
|
; BYTE 1 - ç¨á«® áâப
|
||||||
|
; BYTE 2,3 - ¤à¥á «¨¨¨
|
||||||
|
|
||||||
|
PIC_S MACRO pg,cnt,adr
|
||||||
|
DB pg
|
||||||
|
DB cnt
|
||||||
|
DW adr
|
||||||
|
ENDM
|
||||||
|
|
||||||
|
|
||||||
|
ALIGN 8
|
||||||
|
LP_SCR_MNU:
|
||||||
|
;
|
||||||
|
; LP_S 040h,14,040E7H
|
||||||
|
;
|
||||||
|
; LP_S 040h,14,04807H
|
||||||
|
; LP_S 040h,14,04827H
|
||||||
|
; LP_S 040h,14,04847H
|
||||||
|
; LP_S 040h,14,04867H
|
||||||
|
; LP_S 040h,14,04887H
|
||||||
|
; LP_S 040h,14,048A7H
|
||||||
|
; LP_S 040h,14,048C7H
|
||||||
|
; LP_S 040h,14,048E7H
|
||||||
|
;
|
||||||
|
; DEFB 0FFh,0,0,0
|
||||||
|
|
||||||
|
LP_SCR_80:
|
||||||
|
DB 40,32,0,0,1BH,0,0,0
|
||||||
|
DB 0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
; LP_S 01100010B,40,4000H
|
||||||
|
; LP_S 01100010B,40,4028H
|
||||||
|
; LP_S 01100010B,40,4050H
|
||||||
|
; LP_S 01100010B,40,4078H
|
||||||
|
; LP_S 01100010B,40,40A0H
|
||||||
|
; LP_S 01100010B,40,40C8H
|
||||||
|
;
|
||||||
|
; LP_S 01100010B,40,4800H
|
||||||
|
; LP_S 01100010B,40,4828H
|
||||||
|
; LP_S 01100010B,40,4850H
|
||||||
|
; LP_S 01100010B,40,4878H
|
||||||
|
; LP_S 01100010B,40,48A0H
|
||||||
|
; LP_S 01100010B,40,48C8H
|
||||||
|
;
|
||||||
|
; LP_S 01100010B,40,5000H
|
||||||
|
; LP_S 01100010B,40,5028H
|
||||||
|
; LP_S 01100010B,40,5050H
|
||||||
|
; LP_S 01100010B,40,5078H
|
||||||
|
; LP_S 01100010B,40,50A0H
|
||||||
|
; LP_S 01100010B,40,50C8H
|
||||||
|
;
|
||||||
|
; LP_S 01100100B,40,4000H
|
||||||
|
; LP_S 01100100B,40,4028H
|
||||||
|
; LP_S 01100100B,40,4050H
|
||||||
|
; LP_S 01100100B,40,4078H
|
||||||
|
; LP_S 01100100B,40,40A0H
|
||||||
|
; LP_S 01100100B,40,40C8H
|
||||||
|
;
|
||||||
|
; LP_S 01100100B,40,4800H
|
||||||
|
; LP_S 01100100B,40,4828H
|
||||||
|
; LP_S 01100100B,40,4850H
|
||||||
|
; LP_S 01100100B,40,4878H
|
||||||
|
; LP_S 01100100B,40,48A0H
|
||||||
|
; LP_S 01100100B,40,48C8H
|
||||||
|
;
|
||||||
|
; LP_S 01100100B,40,5000H
|
||||||
|
; LP_S 01100100B,40,5028H
|
||||||
|
;
|
||||||
|
; DEFB 0FFh,0,0,0
|
||||||
|
;
|
||||||
|
LP_SCR_40:
|
||||||
|
DB 40,32,0,0,7BH,0,0,0
|
||||||
|
DB 0,0,0,0,0,0,0,0
|
||||||
|
;
|
||||||
|
; LP_S 01000100B,40,5050H
|
||||||
|
; LP_S 01000100B,40,5078H
|
||||||
|
; LP_S 01000100B,40,50A0H
|
||||||
|
; LP_S 01000100B,40,50C8H
|
||||||
|
;
|
||||||
|
; LP_S 01000110B,40,4000H
|
||||||
|
; LP_S 01000110B,40,4028H
|
||||||
|
; LP_S 01000110B,40,4050H
|
||||||
|
; LP_S 01000110B,40,4078H
|
||||||
|
; LP_S 01000110B,40,40A0H
|
||||||
|
; LP_S 01000110B,40,40C8H
|
||||||
|
;
|
||||||
|
; LP_S 01000110B,40,4800H
|
||||||
|
; LP_S 01000110B,40,4828H
|
||||||
|
; LP_S 01000110B,40,4850H
|
||||||
|
; LP_S 01000110B,40,4878H
|
||||||
|
; LP_S 01000110B,40,48A0H
|
||||||
|
; LP_S 01000110B,40,48C8H
|
||||||
|
;
|
||||||
|
; LP_S 01000110B,40,5000H
|
||||||
|
; LP_S 01000110B,40,5028H
|
||||||
|
; LP_S 01000110B,40,5050H
|
||||||
|
; LP_S 01000110B,40,5078H
|
||||||
|
; LP_S 01000110B,40,50A0H
|
||||||
|
; LP_S 01000110B,40,50C8H
|
||||||
|
;
|
||||||
|
; LP_S 01001000B,40,4000H
|
||||||
|
; LP_S 01001000B,40,4028H
|
||||||
|
; LP_S 01001000B,40,4050H
|
||||||
|
; LP_S 01001000B,40,4078H
|
||||||
|
; LP_S 01001000B,40,40A0H
|
||||||
|
; LP_S 01001000B,40,40C8H
|
||||||
|
;
|
||||||
|
; LP_S 01001000B,40,4800H
|
||||||
|
; LP_S 01001000B,40,4828H
|
||||||
|
; LP_S 01001000B,40,4850H
|
||||||
|
; LP_S 01001000B,40,4878H
|
||||||
|
;
|
||||||
|
; DEFB 0FFh,0,0,0
|
||||||
|
;
|
||||||
|
LP_SCR_32:
|
||||||
|
DB 32,24,4,4,30H,1,0,0
|
||||||
|
DB 0,0,0,0,0,0,0,0
|
||||||
|
;
|
||||||
|
; LP_S 040h,32,04000H
|
||||||
|
; LP_S 040h,32,04020H
|
||||||
|
; LP_S 040h,32,04040H
|
||||||
|
; LP_S 040h,32,04060H
|
||||||
|
; LP_S 040h,32,04080H
|
||||||
|
; LP_S 040h,32,040A0H
|
||||||
|
; LP_S 040h,32,040C0H
|
||||||
|
; LP_S 040h,32,040E0H
|
||||||
|
;
|
||||||
|
; LP_S 040h,32,04800H
|
||||||
|
; LP_S 040h,32,04820H
|
||||||
|
; LP_S 040h,32,04840H
|
||||||
|
; LP_S 040h,32,04860H
|
||||||
|
; LP_S 040h,32,04880H
|
||||||
|
; LP_S 040h,32,048A0H
|
||||||
|
; LP_S 040h,32,048C0H
|
||||||
|
; LP_S 040h,32,048E0H
|
||||||
|
;
|
||||||
|
; LP_S 040h,32,05000H
|
||||||
|
; LP_S 040h,32,05020H
|
||||||
|
; LP_S 040h,32,05040H
|
||||||
|
; LP_S 040h,32,05060H
|
||||||
|
; LP_S 040h,32,05080H
|
||||||
|
; LP_S 040h,32,050A0H
|
||||||
|
; LP_S 040h,32,050C0H
|
||||||
|
; LP_S 040h,32,050E0H
|
||||||
|
;
|
||||||
|
; LP_S 0FFh,0,0
|
||||||
|
;
|
||||||
|
LP_SCR_64:
|
||||||
|
DB 32,24,4,4,9BH,0,0,0
|
||||||
|
DB 0,0,0,0,0,0,0,0
|
||||||
|
;
|
||||||
|
; LP_S 06Ah,32,04000H
|
||||||
|
; LP_S 06Ah,32,04020H
|
||||||
|
; LP_S 06Ah,32,04040H
|
||||||
|
; LP_S 06Ah,32,04060H
|
||||||
|
; LP_S 06Ah,32,04080H
|
||||||
|
; LP_S 06Ah,32,040A0H
|
||||||
|
; LP_S 06Ah,32,040C0H
|
||||||
|
; LP_S 06Ah,32,040E0H
|
||||||
|
;
|
||||||
|
; LP_S 06Ah,32,04800H
|
||||||
|
; LP_S 06Ah,32,04820H
|
||||||
|
; LP_S 06Ah,32,04840H
|
||||||
|
; LP_S 06Ah,32,04860H
|
||||||
|
; LP_S 06Ah,32,04880H
|
||||||
|
; LP_S 06Ah,32,048A0H
|
||||||
|
; LP_S 06Ah,32,048C0H
|
||||||
|
; LP_S 06Ah,32,048E0H
|
||||||
|
;
|
||||||
|
; LP_S 06Ah,32,05000H
|
||||||
|
; LP_S 06Ah,32,05020H
|
||||||
|
; LP_S 06Ah,32,05040H
|
||||||
|
; LP_S 06Ah,32,05060H
|
||||||
|
; LP_S 06Ah,32,05080H
|
||||||
|
; LP_S 06Ah,32,050A0H
|
||||||
|
; LP_S 06Ah,32,050C0H
|
||||||
|
; LP_S 06Ah,32,050E0H
|
||||||
|
;
|
||||||
|
; LP_S 0FFh,0,0
|
||||||
|
|
||||||
|
PIC_320X256_1:
|
||||||
|
DB 40,32,0,0,20H,0,8,0
|
||||||
|
DB 0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
;
|
||||||
|
; PIC_S 020H,40,4040H
|
||||||
|
; PIC_S 028H,40,4040H
|
||||||
|
; PIC_S 020H,40,4440H
|
||||||
|
; PIC_S 028H,40,4440H
|
||||||
|
; PIC_S 020H,40,4840H
|
||||||
|
; PIC_S 028H,40,4840H
|
||||||
|
; PIC_S 020H,40,4C40H
|
||||||
|
; PIC_S 028H,40,4C40H
|
||||||
|
;
|
||||||
|
; PIC_S 020H,40,5040H
|
||||||
|
; PIC_S 028H,40,5040H
|
||||||
|
; PIC_S 020H,40,5440H
|
||||||
|
; PIC_S 028H,40,5440H
|
||||||
|
; PIC_S 020H,40,5840H
|
||||||
|
; PIC_S 028H,40,5840H
|
||||||
|
; PIC_S 020H,40,5C40H
|
||||||
|
; PIC_S 028H,40,5C40H
|
||||||
|
;
|
||||||
|
; PIC_S 020H,40,6040H
|
||||||
|
; PIC_S 028H,40,6040H
|
||||||
|
; PIC_S 020H,40,6440H
|
||||||
|
; PIC_S 028H,40,6440H
|
||||||
|
; PIC_S 020H,40,6840H
|
||||||
|
; PIC_S 028H,40,6840H
|
||||||
|
; PIC_S 020H,40,6C40H
|
||||||
|
; PIC_S 028H,40,6C40H
|
||||||
|
;
|
||||||
|
; PIC_S 020H,40,7040H
|
||||||
|
; PIC_S 028H,40,7040H
|
||||||
|
; PIC_S 020H,40,7440H
|
||||||
|
; PIC_S 028H,40,7440H
|
||||||
|
; PIC_S 020H,40,7840H
|
||||||
|
; PIC_S 028H,40,7840H
|
||||||
|
; PIC_S 020H,40,7C40H
|
||||||
|
; PIC_S 028H,40,7C40H
|
||||||
|
;
|
||||||
|
; PIC_S 0FFH,0,0
|
||||||
|
;
|
||||||
|
PIC_320X256_2:
|
||||||
|
DB 40,32,0,0,60H,0,48,0
|
||||||
|
DB 0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
; PIC_S 060H,40,4180H
|
||||||
|
; PIC_S 068H,40,4180H
|
||||||
|
; PIC_S 060H,40,4580H
|
||||||
|
; PIC_S 068H,40,4580H
|
||||||
|
; PIC_S 060H,40,4980H
|
||||||
|
; PIC_S 068H,40,4980H
|
||||||
|
; PIC_S 060H,40,4D80H
|
||||||
|
; PIC_S 068H,40,4D80H
|
||||||
|
;
|
||||||
|
; PIC_S 060H,40,5180H
|
||||||
|
; PIC_S 068H,40,5180H
|
||||||
|
; PIC_S 060H,40,5580H
|
||||||
|
; PIC_S 068H,40,5580H
|
||||||
|
; PIC_S 060H,40,5980H
|
||||||
|
; PIC_S 068H,40,5980H
|
||||||
|
; PIC_S 060H,40,5D80H
|
||||||
|
; PIC_S 068H,40,5D80H
|
||||||
|
;
|
||||||
|
; PIC_S 060H,40,6180H
|
||||||
|
; PIC_S 068H,40,6180H
|
||||||
|
; PIC_S 060H,40,6580H
|
||||||
|
; PIC_S 068H,40,6580H
|
||||||
|
; PIC_S 060H,40,6980H
|
||||||
|
; PIC_S 068H,40,6980H
|
||||||
|
; PIC_S 060H,40,6D80H
|
||||||
|
; PIC_S 068H,40,6D80H
|
||||||
|
;
|
||||||
|
; PIC_S 060H,40,7180H
|
||||||
|
; PIC_S 068H,40,7180H
|
||||||
|
; PIC_S 060H,40,7580H
|
||||||
|
; PIC_S 068H,40,7580H
|
||||||
|
; PIC_S 060H,40,7980H
|
||||||
|
; PIC_S 068H,40,7980H
|
||||||
|
; PIC_S 060H,40,7D80H
|
||||||
|
; PIC_S 068H,40,7D80H
|
||||||
|
;
|
||||||
|
; PIC_S 0FFH,0,0
|
||||||
|
;
|
||||||
|
;
|
||||||
|
;
|
||||||
679
ZX_EXP/FLEX.ASM
Normal file
679
ZX_EXP/FLEX.ASM
Normal file
@ -0,0 +1,679 @@
|
|||||||
|
|
||||||
|
SYCLES EQU 0
|
||||||
|
START EQU 1
|
||||||
|
ST1 EQU 2
|
||||||
|
DPAL1 EQU 3
|
||||||
|
ST2 EQU 4
|
||||||
|
DPAL2 EQU 5
|
||||||
|
|
||||||
|
NEXT_LIN_H MACRO
|
||||||
|
EX AF,AF'
|
||||||
|
INC A
|
||||||
|
OUT (RGADR),A
|
||||||
|
EX AF,AF'
|
||||||
|
ENDM
|
||||||
|
|
||||||
|
NEXT_LIN_HP MACRO
|
||||||
|
local MD_NO_INC_H
|
||||||
|
EX AF,AF'
|
||||||
|
INC A
|
||||||
|
OUT (RGADR),A
|
||||||
|
JR NZ,MD_NO_INC_H
|
||||||
|
inc l
|
||||||
|
MD_NO_INC_H:
|
||||||
|
EX AF,AF'
|
||||||
|
ENDM
|
||||||
|
|
||||||
|
|
||||||
|
;*****************************************
|
||||||
|
;
|
||||||
|
; ˆ¨æ¨ «¨§ æ¨ï áâà ¨æ ¤«ï
|
||||||
|
; ᯥªâà㬮¢áª®£® ०¨¬ ¨
|
||||||
|
; ¢®ááâ ®¢«¥¨¥ ᯥªâà㬮¢áª®£®
|
||||||
|
; íªà
|
||||||
|
;
|
||||||
|
; ‚®§¢à â ¯® IX
|
||||||
|
;
|
||||||
|
; !!! NO USE STACK !!!
|
||||||
|
;
|
||||||
|
;*****************************************
|
||||||
|
|
||||||
|
INIT_PAGES:
|
||||||
|
|
||||||
|
AND A
|
||||||
|
LD E,A
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,E
|
||||||
|
|
||||||
|
; BIT 7,A
|
||||||
|
; JR Z,SCORPION_256_MODE
|
||||||
|
; BIT 6,A
|
||||||
|
; JR Z,PENTAGON_128_MODE
|
||||||
|
;
|
||||||
|
;PENTAGON_48_MODE:
|
||||||
|
; AND 03CH
|
||||||
|
; OUT (PAGE0),A
|
||||||
|
; INC A
|
||||||
|
; OUT (PAGE1),A
|
||||||
|
; INC A
|
||||||
|
; OUT (PAGE2),A
|
||||||
|
; INC A
|
||||||
|
; LD D,A
|
||||||
|
; LD BC,1FFDH
|
||||||
|
; XOR A
|
||||||
|
; OUT (C),A
|
||||||
|
; LD B,7FH
|
||||||
|
; OUT (C),A
|
||||||
|
; LD A,D
|
||||||
|
; OUT (PAGE3),A
|
||||||
|
; JR INIT_VIDEO_REG
|
||||||
|
;
|
||||||
|
;PENTAGON_128_MODE:
|
||||||
|
; LD D,8
|
||||||
|
; AND 038H
|
||||||
|
; JR ALL_MODE
|
||||||
|
|
||||||
|
SCORPION_256_MODE:
|
||||||
|
LD D,16
|
||||||
|
AND 030H ; ¤® 4-å ᯥªâà㬮¢
|
||||||
|
ALL_MODE:
|
||||||
|
|
||||||
|
OUT (PAGE0),A
|
||||||
|
XOR 5
|
||||||
|
OUT (PAGE1),A
|
||||||
|
XOR 7
|
||||||
|
OUT (PAGE2),A
|
||||||
|
OR 0FH
|
||||||
|
LD E,A
|
||||||
|
|
||||||
|
D_P2:
|
||||||
|
DEC D
|
||||||
|
|
||||||
|
LD A,D
|
||||||
|
RLCA
|
||||||
|
AND 10H
|
||||||
|
LD BC,01FFDH
|
||||||
|
OUT (C),A
|
||||||
|
|
||||||
|
LD A,D
|
||||||
|
AND 7
|
||||||
|
OR 40H
|
||||||
|
LD B,7FH
|
||||||
|
OUT (C),A
|
||||||
|
|
||||||
|
LD A,E
|
||||||
|
OUT (PAGE3),A
|
||||||
|
DEC E
|
||||||
|
|
||||||
|
DEC D
|
||||||
|
INC D
|
||||||
|
JR NZ,D_P2
|
||||||
|
|
||||||
|
INIT_VIDEO_REG:
|
||||||
|
|
||||||
|
XOR A
|
||||||
|
OUT (RGADR),A ; ॣ¨áâà ¢¨¤¥® ¤à¥á
|
||||||
|
; OUT (RGSCR),A ; ॣ¨áâà íªà
|
||||||
|
OUT (RGMOD),A ; ॣ¨áâà ¬®¤ë
|
||||||
|
|
||||||
|
LD HL,04000H
|
||||||
|
LD DE,04000H
|
||||||
|
LD BC,01B00H
|
||||||
|
LDIR ; Restore old Spectrum Screen
|
||||||
|
|
||||||
|
EX AF,AF'
|
||||||
|
BIT 6,A
|
||||||
|
JR NZ,NO_SCREEN_ALT
|
||||||
|
|
||||||
|
EX AF,AF'
|
||||||
|
|
||||||
|
LD A,7 ; á¥¤ì¬ ï íªà ï áâà ¨æ
|
||||||
|
LD BC,7FFDH
|
||||||
|
OUT (C),A
|
||||||
|
|
||||||
|
LD HL,0C000H
|
||||||
|
LD DE,0C000H
|
||||||
|
LD BC,01B00H
|
||||||
|
LDIR ; Restore old Spectrum Screen
|
||||||
|
|
||||||
|
XOR A
|
||||||
|
LD BC,7FFDH
|
||||||
|
OUT (C),A
|
||||||
|
|
||||||
|
EX AF,AF'
|
||||||
|
|
||||||
|
NO_SCREEN_ALT:
|
||||||
|
AND A
|
||||||
|
JP (IX)
|
||||||
|
|
||||||
|
;****************************************
|
||||||
|
; ‡ £à㧪 ०¨¬ íªà .
|
||||||
|
;****************************************
|
||||||
|
|
||||||
|
; CALL SINC_DEF
|
||||||
|
; CALL SET_PAL_ZX
|
||||||
|
; RET
|
||||||
|
|
||||||
|
;****************************************
|
||||||
|
;****************************************
|
||||||
|
;****************************************
|
||||||
|
;****************************************
|
||||||
|
|
||||||
|
CL0 EQU 200
|
||||||
|
CL1 EQU 240
|
||||||
|
|
||||||
|
; SET_PAL_IBM:
|
||||||
|
; LD DE,08000h
|
||||||
|
; JR SET_PAL_
|
||||||
|
SET_PAL_ZX:
|
||||||
|
;SET_PAL_:
|
||||||
|
PUSH IX
|
||||||
|
IN A,(RGADR)
|
||||||
|
PUSH AF
|
||||||
|
IN A,(PAGE3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,50H
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD DE,0
|
||||||
|
LD IX,0C3F0H
|
||||||
|
SET_PAL_ZX1:
|
||||||
|
CALL GENERATE_PAL1
|
||||||
|
LD A,E
|
||||||
|
OUT (RGADR),A
|
||||||
|
LD (IX),L
|
||||||
|
LD (IX+1),B
|
||||||
|
LD (IX+2),C
|
||||||
|
LD (IX+3),H
|
||||||
|
INC E
|
||||||
|
JR NZ,SET_PAL_ZX1
|
||||||
|
LD BC,4
|
||||||
|
ADD IX,BC
|
||||||
|
INC D
|
||||||
|
LD A,D
|
||||||
|
CP 04
|
||||||
|
JR NZ,SET_PAL_ZX1
|
||||||
|
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE3),A
|
||||||
|
POP AF
|
||||||
|
OUT (RGADR),A
|
||||||
|
POP IX
|
||||||
|
RET
|
||||||
|
|
||||||
|
; £¥¥à æ¨ï ᯥªâà㬮¢áª®© ¯ «¨âàë.
|
||||||
|
|
||||||
|
GENERATE_PAL1: ; E - âਡãâ, D - ®¬¥à PAL
|
||||||
|
; ; ‚›•Ž„ - C - BLUE, L - RED, B - GREEN, H - INTENSITY
|
||||||
|
;
|
||||||
|
XOR A
|
||||||
|
LD C,A
|
||||||
|
LD B,A
|
||||||
|
LD L,A
|
||||||
|
|
||||||
|
; BIT 7,D
|
||||||
|
; JR NZ,GENERATE_IBM
|
||||||
|
|
||||||
|
BIT 1,D
|
||||||
|
JR NZ,GEM_PAL_FLH
|
||||||
|
GEM_PAL_NOF:
|
||||||
|
BIT 0,D
|
||||||
|
JR Z,GEN_PAL_PAP
|
||||||
|
|
||||||
|
GEN_PAL_INK:
|
||||||
|
LD A,CL0
|
||||||
|
BIT 6,E
|
||||||
|
JR Z,GEN_PAL_NOI1
|
||||||
|
LD A,CL1
|
||||||
|
GEN_PAL_NOI1:
|
||||||
|
BIT 0,E ; BLUE
|
||||||
|
JR Z,GEN_PP_NO1
|
||||||
|
LD C,A
|
||||||
|
GEN_PP_NO1:
|
||||||
|
BIT 1,E ; RED
|
||||||
|
JR Z,GEN_PP_NO2
|
||||||
|
LD L,A
|
||||||
|
GEN_PP_NO2:
|
||||||
|
BIT 2,E ; GREEN
|
||||||
|
JR Z,GEN_PP_NO3
|
||||||
|
LD B,A
|
||||||
|
GEN_PP_NO3:
|
||||||
|
JR GEN_PP_NO6
|
||||||
|
|
||||||
|
GEM_PAL_FLH:
|
||||||
|
BIT 7,E
|
||||||
|
JR Z,GEM_PAL_NOF
|
||||||
|
BIT 0,D
|
||||||
|
JR Z,GEN_PAL_INK
|
||||||
|
|
||||||
|
GEN_PAL_PAP:
|
||||||
|
LD A,CL0
|
||||||
|
BIT 6,E
|
||||||
|
JR Z,GEN_PAL_NOI2
|
||||||
|
LD A,CL1
|
||||||
|
GEN_PAL_NOI2:
|
||||||
|
BIT 3,E ; BLUE
|
||||||
|
JR Z,GEN_PP_NO4
|
||||||
|
LD C,A
|
||||||
|
GEN_PP_NO4:
|
||||||
|
BIT 4,E ; RED
|
||||||
|
JR Z,GEN_PP_NO5
|
||||||
|
LD L,A
|
||||||
|
GEN_PP_NO5:
|
||||||
|
BIT 5,E ; GREEN
|
||||||
|
JR Z,GEN_PP_NO6
|
||||||
|
LD B,A
|
||||||
|
GEN_PP_NO6:
|
||||||
|
|
||||||
|
LD A,C
|
||||||
|
AND A
|
||||||
|
RRA
|
||||||
|
ADD A,L
|
||||||
|
RRA
|
||||||
|
ADD A,B
|
||||||
|
RRA
|
||||||
|
LD H,A ; B/W mode
|
||||||
|
|
||||||
|
RET
|
||||||
|
|
||||||
|
;****************************************
|
||||||
|
|
||||||
|
; GENERATE_IBM:
|
||||||
|
|
||||||
|
; BIT 7,E
|
||||||
|
; JR Z,GEN_IBM_NO_FLH
|
||||||
|
; BIT 1,D
|
||||||
|
; JR Z,GEN_IBM_PAPER
|
||||||
|
|
||||||
|
; GEN_IBM_NO_FLH:
|
||||||
|
; BIT 0,D
|
||||||
|
; JR Z,GEN_IBM_PAPER
|
||||||
|
|
||||||
|
; GEN_IBM_INK:
|
||||||
|
|
||||||
|
; GEN_NO_INTENS:
|
||||||
|
; LD A,0A8h
|
||||||
|
; GEN_INTENS:
|
||||||
|
; BIT 0,E ; BLUE
|
||||||
|
; JR Z,GEN_PPI_NO4
|
||||||
|
; LD C,A
|
||||||
|
; GEN_PPI_NO4:
|
||||||
|
; BIT 2,E ; RED
|
||||||
|
; JR Z,GEN_PPI_NO5
|
||||||
|
; LD L,A
|
||||||
|
; GEN_PPI_NO5:
|
||||||
|
; BIT 1,E ; GREEN
|
||||||
|
; JR Z,GEN_PPI_NO6
|
||||||
|
; LD B,A
|
||||||
|
; GEN_PPI_NO6:
|
||||||
|
|
||||||
|
; LD A,E
|
||||||
|
; AND 0Fh
|
||||||
|
; CP 6
|
||||||
|
; JR NZ,no_correct
|
||||||
|
; LD B,54h
|
||||||
|
; no_correct:
|
||||||
|
|
||||||
|
; BIT 3,E
|
||||||
|
; JR Z,GEN_PP_NO6
|
||||||
|
|
||||||
|
; LD A,54h
|
||||||
|
; ADD A,C
|
||||||
|
; LD C,A
|
||||||
|
; LD A,54h
|
||||||
|
; ADD A,B
|
||||||
|
; LD B,A
|
||||||
|
; LD A,54h
|
||||||
|
; ADD A,L
|
||||||
|
; LD L,A
|
||||||
|
|
||||||
|
; JR GEN_PP_NO6
|
||||||
|
|
||||||
|
; GEN_IBM_PAPER:
|
||||||
|
; LD A,0A8h
|
||||||
|
; BIT 4,E ; BLUE
|
||||||
|
; JR Z,GEN_PPI_NO4X
|
||||||
|
; LD C,A
|
||||||
|
; GEN_PPI_NO4X:
|
||||||
|
; BIT 6,E ; RED
|
||||||
|
; JR Z,GEN_PPI_NO5X
|
||||||
|
; LD L,A
|
||||||
|
; GEN_PPI_NO5X:
|
||||||
|
; BIT 5,E ; GREEN
|
||||||
|
; JR Z,GEN_PPI_NO6X
|
||||||
|
; LD B,A
|
||||||
|
; GEN_PPI_NO6X:
|
||||||
|
|
||||||
|
; LD A,E
|
||||||
|
; AND 070h
|
||||||
|
; CP 60h
|
||||||
|
; JR NZ,no_correct2
|
||||||
|
; LD B,54h
|
||||||
|
; no_correct2:
|
||||||
|
|
||||||
|
; JR GEN_PP_NO6
|
||||||
|
|
||||||
|
;****************************************
|
||||||
|
;****************************************
|
||||||
|
;****************************************
|
||||||
|
|
||||||
|
SET_PAL_GRAF: ; D - ®¬¥à £à ä¨ç¥áª®© ¯ «¨âàë
|
||||||
|
PUSH IX
|
||||||
|
IN A,(RGADR)
|
||||||
|
PUSH AF
|
||||||
|
|
||||||
|
IN A,(PAGE3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,50H
|
||||||
|
OUT (PAGE3),A
|
||||||
|
|
||||||
|
|
||||||
|
LD IX,0C3E0H
|
||||||
|
LD A,D
|
||||||
|
AND 3
|
||||||
|
ADD A,A
|
||||||
|
ADD A,A
|
||||||
|
LD E,A
|
||||||
|
LD D,0
|
||||||
|
ADD IX,DE
|
||||||
|
|
||||||
|
LD E,0
|
||||||
|
|
||||||
|
XOR A
|
||||||
|
LD B,A
|
||||||
|
LD C,A
|
||||||
|
LD L,A
|
||||||
|
LD H,A
|
||||||
|
|
||||||
|
SET_PAL_GR1:
|
||||||
|
LD A,E
|
||||||
|
OUT (RGADR),A
|
||||||
|
|
||||||
|
LD (IX),L
|
||||||
|
LD (IX+1),B
|
||||||
|
LD (IX+2),C
|
||||||
|
LD (IX+3),H
|
||||||
|
|
||||||
|
CALL GENERATE_PAL3
|
||||||
|
|
||||||
|
INC E
|
||||||
|
LD A,E
|
||||||
|
CP 40
|
||||||
|
JR NZ,SET_PAL_GR1
|
||||||
|
|
||||||
|
XOR A
|
||||||
|
LD B,A
|
||||||
|
LD C,A
|
||||||
|
LD L,A
|
||||||
|
LD H,A
|
||||||
|
|
||||||
|
SET_PAL_GR2:
|
||||||
|
LD A,E
|
||||||
|
OUT (RGADR),A
|
||||||
|
|
||||||
|
LD (IX),L
|
||||||
|
LD (IX+1),B
|
||||||
|
LD (IX+2),C
|
||||||
|
LD (IX+3),H
|
||||||
|
|
||||||
|
CALL GENERATE_PAL2
|
||||||
|
|
||||||
|
INC E
|
||||||
|
JR NZ,SET_PAL_GR2
|
||||||
|
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE3),A
|
||||||
|
POP AF
|
||||||
|
OUT (RGADR),A
|
||||||
|
POP IX
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
;;*********************************
|
||||||
|
;
|
||||||
|
|
||||||
|
GENERATE_PAL3: ; gray-scale
|
||||||
|
LD A,B
|
||||||
|
ADD A,6
|
||||||
|
LD B,A
|
||||||
|
LD C,A
|
||||||
|
LD L,A
|
||||||
|
|
||||||
|
LD A,C
|
||||||
|
AND A
|
||||||
|
RRA
|
||||||
|
ADD A,L
|
||||||
|
RRA
|
||||||
|
ADD A,B
|
||||||
|
RRA
|
||||||
|
LD H,A
|
||||||
|
|
||||||
|
RET
|
||||||
|
|
||||||
|
GENERATE_PAL2: ; C - BLUE; L - RED; B - GREEN; H - INTENSITY
|
||||||
|
|
||||||
|
LD A,C
|
||||||
|
ADD A,50
|
||||||
|
LD C,A
|
||||||
|
JR NC,GEN_PAL2_L1
|
||||||
|
LD C,0
|
||||||
|
LD A,L
|
||||||
|
ADD A,50
|
||||||
|
LD L,A
|
||||||
|
JR NC,GEN_PAL2_L1
|
||||||
|
LD L,0
|
||||||
|
LD A,B
|
||||||
|
ADD A,50
|
||||||
|
LD B,A
|
||||||
|
JR NC,GEN_PAL2_L1
|
||||||
|
LD B,0
|
||||||
|
|
||||||
|
GEN_PAL2_L1:
|
||||||
|
LD A,C
|
||||||
|
AND A
|
||||||
|
RR A
|
||||||
|
ADD A,L
|
||||||
|
RR A
|
||||||
|
ADD A,B
|
||||||
|
RR A
|
||||||
|
LD H,A
|
||||||
|
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
;;*****************************************
|
||||||
|
|
||||||
|
|
||||||
|
SINC_DEF:
|
||||||
|
LD C,PAGE3
|
||||||
|
IN B,(C)
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (C),A
|
||||||
|
LD HL,(CONFIG_ALL)
|
||||||
|
OUT (C),B
|
||||||
|
LD DE,L_PENTAGON
|
||||||
|
AND A
|
||||||
|
SBC HL,DE
|
||||||
|
JR Z,PENT_SINC
|
||||||
|
LD IX,L_SCORPION
|
||||||
|
; AND A
|
||||||
|
; SBC HL,DE
|
||||||
|
; JR Z,SCOR_SINC
|
||||||
|
; ORIG_SINC:
|
||||||
|
; LD IX,L_ORIGINAL
|
||||||
|
; JR PROG_SCR
|
||||||
|
SCOR_SINC:
|
||||||
|
;LD IX,L_SCORPION
|
||||||
|
JR PROG_SCR
|
||||||
|
PENT_SINC:
|
||||||
|
LD IX,L_PENTAGON
|
||||||
|
JR PROG_SCR
|
||||||
|
FN_SINC:
|
||||||
|
AND A
|
||||||
|
JR Z,SINC_DEF
|
||||||
|
DEC A
|
||||||
|
LD IX,L_SCORPION
|
||||||
|
JR Z,PROG_SCR
|
||||||
|
DEC A
|
||||||
|
LD IX,L_PENTAGON
|
||||||
|
JR Z,PROG_SCR
|
||||||
|
; DEC A
|
||||||
|
; JR Z,ORIG_SINC
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
|
||||||
|
PROG_SCR:
|
||||||
|
IN A,(PAGE3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
EX AF,AF'
|
||||||
|
LD (COPY_PAGE3),A
|
||||||
|
IN A,(RGADR)
|
||||||
|
LD (COPY_RGADR),A
|
||||||
|
|
||||||
|
LD (CONFIG_ALL),IX
|
||||||
|
|
||||||
|
LD A,0
|
||||||
|
MM_LOOP7:
|
||||||
|
OUT (RGADR),A
|
||||||
|
EX AF,AF'
|
||||||
|
|
||||||
|
LD A,#50
|
||||||
|
OUT (PAGE3),A
|
||||||
|
|
||||||
|
LD HL,#C300
|
||||||
|
MM_LOOP6:
|
||||||
|
LD C,(IX)
|
||||||
|
MM_LOOP4:
|
||||||
|
LD E,(IX+1)
|
||||||
|
LD D,(IX+2)
|
||||||
|
MM_LOOP5:
|
||||||
|
LD A,(DE)
|
||||||
|
INC DE
|
||||||
|
AND A
|
||||||
|
JR Z,MM_EXIT_1
|
||||||
|
LD B,A
|
||||||
|
LD A,(DE)
|
||||||
|
INC DE
|
||||||
|
MM_LOOP3:
|
||||||
|
|
||||||
|
LD (HL),A
|
||||||
|
INC L
|
||||||
|
LD (HL),0
|
||||||
|
INC L
|
||||||
|
LD (HL),0
|
||||||
|
|
||||||
|
EX AF,AF'
|
||||||
|
INC A
|
||||||
|
OUT (RGADR),A
|
||||||
|
EX AF,AF'
|
||||||
|
|
||||||
|
LD (HL),0
|
||||||
|
DEC L
|
||||||
|
LD (HL),0
|
||||||
|
DEC L
|
||||||
|
LD (HL),A
|
||||||
|
|
||||||
|
EX AF,AF'
|
||||||
|
INC A
|
||||||
|
OUT (RGADR),A
|
||||||
|
EX AF,AF'
|
||||||
|
|
||||||
|
DJNZ MM_LOOP3
|
||||||
|
JR MM_LOOP5
|
||||||
|
|
||||||
|
MM_EXIT_1:
|
||||||
|
INC HL ; next line
|
||||||
|
INC HL
|
||||||
|
INC HL
|
||||||
|
INC HL
|
||||||
|
IN A,(RGADR)
|
||||||
|
AND 80H
|
||||||
|
OUT (RGADR),A
|
||||||
|
DEC C
|
||||||
|
JR NZ,MM_LOOP4
|
||||||
|
INC IX
|
||||||
|
INC IX
|
||||||
|
INC IX
|
||||||
|
LD A,(IX)
|
||||||
|
AND A
|
||||||
|
JR NZ,MM_LOOP6
|
||||||
|
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD IX,(CONFIG_ALL)
|
||||||
|
|
||||||
|
EX AF,AF'
|
||||||
|
ADD A,80H
|
||||||
|
JR NC,MM_LOOP7
|
||||||
|
|
||||||
|
LD A,(COPY_RGADR)
|
||||||
|
OUT (RGADR),A
|
||||||
|
LD A,(COPY_PAGE3)
|
||||||
|
OUT (PAGE3),A
|
||||||
|
|
||||||
|
RET
|
||||||
|
|
||||||
|
;L_SCR: DB 41,38H,3,3CH,4,3CH,7,3CH,9,38H,0
|
||||||
|
;L_INT: DB 42,3CH,1,3DH,5,3CH,7,3CH,9,3CH,0
|
||||||
|
;L_INT2: DB 41,38H,1,3DH,6,3CH,7,3CH,9,38H,0
|
||||||
|
;L_BLN: DB 41,3CH,3,3CH,4,3CH,7,3CH,9,3CH,0
|
||||||
|
;L_SNC: DB 41,3CH,3,3CH,4,3CH,7,3CH,9,3CH,0
|
||||||
|
;L_RES: DB 41,38H,3,3EH,4,3EH,7,3EH,9,38H,0
|
||||||
|
|
||||||
|
L_SCR: DB 41,0F8H,3,0FCH,4,0FCH,7,0FCH,9,0F8H,0
|
||||||
|
L_INT: DB 40,0FCH,2,0FDH,6,0FCH,7,0FCH,9,0FCH,0
|
||||||
|
L_INT2: DB 41,0F8H,1,0FDH,6,0FCH,7,0FCH,9,0F8H,0
|
||||||
|
L_BLN: DB 41,0FCH,3,0FCH,4,0FCH,7,0FCH,9,0FCH,0
|
||||||
|
L_SNC: DB 41,0FCH,3,0FCH,4,0FCH,7,0FCH,9,0FCH,0
|
||||||
|
L_RES: DB 41,0F8H,3,0FEH,4,0FEH,7,0FEH,9,0F8H,0
|
||||||
|
|
||||||
|
L_PENTAGON:
|
||||||
|
DB 33
|
||||||
|
DW L_SCR
|
||||||
|
DB 1
|
||||||
|
; DW L_BLN
|
||||||
|
DW L_INT
|
||||||
|
DB 3
|
||||||
|
DW L_SNC
|
||||||
|
DB 1
|
||||||
|
DW L_BLN
|
||||||
|
DB 1
|
||||||
|
DW L_SCR
|
||||||
|
DB 1
|
||||||
|
DW L_RES
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
L_SCORPION:
|
||||||
|
DB 31
|
||||||
|
DW L_SCR
|
||||||
|
DB 1
|
||||||
|
DW L_INT2
|
||||||
|
DB 1
|
||||||
|
DW L_SCR
|
||||||
|
DB 1
|
||||||
|
DW L_SNC
|
||||||
|
DB 3
|
||||||
|
DW L_SNC
|
||||||
|
DB 1
|
||||||
|
DW L_BLN
|
||||||
|
DB 2
|
||||||
|
DW L_RES
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; L_ORIGINAL:
|
||||||
|
; DB 33
|
||||||
|
; DW L_SCR
|
||||||
|
; DB 1
|
||||||
|
; DW L_SNC
|
||||||
|
; DB 1
|
||||||
|
; DW L_INT
|
||||||
|
; DB 2
|
||||||
|
; DW L_SNC
|
||||||
|
; DB 1
|
||||||
|
; DW L_BLN
|
||||||
|
; DB 1
|
||||||
|
; DW L_SCR
|
||||||
|
; DB 1
|
||||||
|
; DW L_RES
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
FLEX_END:
|
||||||
151
ZX_EXP/FONT.ASM
Normal file
151
ZX_EXP/FONT.ASM
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
ZG_ADRESS:
|
||||||
|
DB 000h,07Eh,07Eh,06Ch,010h,038h,010h,000h,0FFh,000h,0FFh,00Fh,03Ch,03Fh,07Fh,018h
|
||||||
|
DB 080h,002h,018h,066h,07Fh,03Eh,000h,018h,018h,018h,000h,000h,000h,000h,000h,000h
|
||||||
|
DB 000h,030h,06Ch,06Ch,030h,000h,038h,060h,018h,060h,000h,000h,000h,000h,000h,006h
|
||||||
|
DB 07Ch,030h,078h,078h,01Ch,0FCh,038h,0FCh,078h,078h,000h,000h,018h,000h,060h,078h
|
||||||
|
DB 07Ch,030h,0FCh,03Ch,0F8h,0FEh,0FEh,03Ch,0CCh,078h,01Eh,0E6h,0F0h,0C6h,0C6h,038h
|
||||||
|
DB 0FCh,078h,0FCh,078h,0FCh,0CCh,0CCh,0C6h,0C6h,0CCh,0FEh,078h,0C0h,078h,010h,000h
|
||||||
|
DB 030h,000h,0E0h,000h,01Ch,000h,038h,000h,0E0h,030h,00Ch,0E0h,070h,000h,000h,000h
|
||||||
|
DB 000h,000h,000h,000h,010h,000h,000h,000h,000h,000h,000h,01Ch,018h,0E0h,076h,000h
|
||||||
|
DB 00Eh,0FCh,0F8h,0FCh,07Eh,0FCh,0DBh,03Ch,0C6h,0D6h,0C6h,006h,0C6h,0C6h,07Ch,0FEh
|
||||||
|
DB 0FCh,07Ch,0FCh,0C6h,018h,0C3h,0CCh,0C6h,0D6h,0D6h,0F0h,0C2h,0C0h,07Ch,0CEh,07Eh
|
||||||
|
DB 000h,004h,000h,000h,000h,000h,000h,000h,000h,030h,000h,000h,000h,000h,000h,000h
|
||||||
|
DB 022h,055h,0DBh,010h,010h,010h,014h,000h,000h,014h,014h,000h,014h,014h,010h,000h
|
||||||
|
DB 010h,010h,000h,010h,000h,010h,010h,014h,014h,000h,014h,000h,014h,000h,014h,010h
|
||||||
|
DB 014h,000h,000h,014h,010h,000h,000h,014h,010h,010h,000h,0FFh,000h,0F0h,00Fh,0FFh
|
||||||
|
DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
|
||||||
|
DB 048h,048h,060h,018h,008h,010h,030h,000h,060h,000h,000h,01Fh,0A0h,060h,000h,000h
|
||||||
|
DB 000h,081h,0FFh,0FEh,038h,07Ch,010h,000h,0FFh,03Ch,0C3h,007h,066h,033h,063h,0DBh
|
||||||
|
DB 0E0h,00Eh,03Ch,066h,0DBh,063h,000h,03Ch,03Ch,018h,018h,030h,000h,024h,018h,0FFh
|
||||||
|
DB 000h,078h,06Ch,06Ch,07Ch,0C6h,06Ch,060h,030h,030h,066h,030h,000h,000h,000h,00Ch
|
||||||
|
DB 0C6h,070h,0CCh,0CCh,03Ch,0C0h,060h,0CCh,0CCh,0CCh,030h,030h,030h,000h,030h,0CCh
|
||||||
|
DB 0C6h,078h,066h,066h,06Ch,062h,062h,066h,0CCh,030h,00Ch,066h,060h,0EEh,0E6h,06Ch
|
||||||
|
DB 066h,0CCh,066h,0CCh,0B4h,0CCh,0CCh,0C6h,0C6h,0CCh,0C6h,060h,060h,018h,038h,000h
|
||||||
|
DB 030h,000h,060h,000h,00Ch,000h,06Ch,000h,060h,000h,000h,060h,030h,000h,000h,000h
|
||||||
|
DB 000h,000h,000h,000h,030h,000h,000h,000h,000h,000h,000h,030h,018h,030h,0DCh,010h
|
||||||
|
DB 01Eh,0C0h,0CCh,0C0h,066h,0C0h,0DBh,066h,0C6h,0C6h,0CCh,00Eh,0EEh,0C6h,0C6h,0C6h
|
||||||
|
DB 0C6h,0C6h,030h,0C6h,07Eh,066h,0CCh,0C6h,0D6h,0D6h,030h,0C2h,0C0h,0C6h,0DBh,0C6h
|
||||||
|
DB 000h,078h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
|
||||||
|
DB 088h,0AAh,077h,010h,010h,010h,014h,000h,000h,014h,014h,000h,014h,014h,010h,000h
|
||||||
|
DB 010h,010h,000h,010h,000h,010h,010h,014h,014h,000h,014h,000h,014h,000h,014h,010h
|
||||||
|
DB 014h,000h,000h,014h,010h,000h,000h,014h,010h,010h,000h,0FFh,000h,0F0h,00Fh,0FFh
|
||||||
|
DB 000h,000h,000h,000h,018h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
|
||||||
|
DB 0FCh,000h,030h,030h,014h,010h,030h,000h,090h,000h,000h,010h,0D0h,090h,000h,000h
|
||||||
|
DB 000h,0A5h,0DBh,0FEh,07Ch,038h,038h,018h,0E7h,066h,099h,00Fh,066h,03Fh,07Fh,03Ch
|
||||||
|
DB 0F8h,03Eh,07Eh,066h,0DBh,038h,000h,07Eh,07Eh,018h,00Ch,060h,0C0h,066h,03Ch,0FFh
|
||||||
|
DB 000h,078h,06Ch,0FEh,0C0h,0CCh,038h,0C0h,060h,018h,03Ch,030h,000h,000h,000h,018h
|
||||||
|
DB 0CEh,030h,00Ch,00Ch,06Ch,0F8h,0C0h,00Ch,0CCh,0CCh,030h,030h,060h,0FCh,018h,00Ch
|
||||||
|
DB 0DEh,0CCh,066h,0C0h,066h,068h,068h,0C0h,0CCh,030h,00Ch,06Ch,060h,0FEh,0F6h,0C6h
|
||||||
|
DB 066h,0CCh,066h,060h,030h,0CCh,0CCh,0C6h,06Ch,0CCh,08Ch,060h,030h,018h,06Ch,000h
|
||||||
|
DB 018h,078h,060h,078h,00Ch,078h,060h,076h,06Ch,070h,00Ch,066h,030h,0CCh,0F8h,078h
|
||||||
|
DB 0DCh,076h,0DCh,07Ch,07Ch,0CCh,0CCh,0C6h,0C6h,0CCh,0FCh,030h,018h,030h,000h,038h
|
||||||
|
DB 036h,0C0h,0CCh,0C0h,066h,0C0h,07Eh,006h,0CEh,0CEh,0D8h,01Eh,0FEh,0C6h,0C6h,0C6h
|
||||||
|
DB 0C6h,0C0h,030h,0C6h,0DBh,03Ch,0CCh,0C6h,0D6h,0D6h,030h,0C2h,0C0h,006h,0DBh,0C6h
|
||||||
|
DB 078h,0C0h,0F8h,0FCh,07Eh,078h,0DBh,078h,0CCh,0CCh,0CCh,00Eh,0C6h,0CCh,078h,0FCh
|
||||||
|
DB 022h,055h,0DBh,010h,010h,0F0h,014h,000h,0F0h,0F4h,014h,0FCh,0F4h,014h,0F0h,000h
|
||||||
|
DB 010h,010h,000h,010h,000h,010h,01Fh,014h,017h,01Fh,0F7h,0FFh,017h,0FFh,0F7h,0FFh
|
||||||
|
DB 014h,0FFh,000h,014h,01Fh,01Fh,000h,014h,0FFh,010h,000h,0FFh,000h,0F0h,00Fh,0FFh
|
||||||
|
DB 0F8h,078h,0FCh,0CCh,07Eh,0C6h,0CCh,0CCh,0D6h,0D6h,0F0h,0C2h,0C0h,07Ch,0CEh,07Ch
|
||||||
|
DB 0C0h,078h,018h,060h,010h,010h,000h,064h,090h,000h,000h,010h,090h,020h,03Ch,000h
|
||||||
|
DB 000h,081h,0FFh,0FEh,0FEh,0FEh,07Ch,03Ch,0C3h,042h,0BDh,07Dh,066h,030h,063h,0E7h
|
||||||
|
DB 0FEh,0FEh,018h,066h,07Bh,06Ch,000h,018h,018h,018h,0FEh,0FEh,0C0h,0FFh,07Eh,07Eh
|
||||||
|
DB 000h,030h,000h,06Ch,078h,018h,076h,000h,060h,018h,0FFh,0FCh,000h,0FCh,000h,030h
|
||||||
|
DB 0DEh,030h,038h,038h,0CCh,00Ch,0F8h,018h,078h,07Ch,000h,000h,0C0h,000h,00Ch,018h
|
||||||
|
DB 0DEh,0CCh,07Ch,0C0h,066h,078h,078h,0C0h,0FCh,030h,00Ch,078h,060h,0FEh,0DEh,0C6h
|
||||||
|
DB 07Ch,0CCh,07Ch,030h,030h,0CCh,0CCh,0D6h,038h,078h,018h,060h,018h,018h,0C6h,000h
|
||||||
|
DB 000h,00Ch,07Ch,0CCh,07Ch,0CCh,0F0h,0CCh,076h,030h,00Ch,06Ch,030h,0FEh,0CCh,0CCh
|
||||||
|
DB 066h,0CCh,076h,0C0h,030h,0CCh,0CCh,0D6h,06Ch,0CCh,098h,0E0h,000h,01Ch,000h,06Ch
|
||||||
|
DB 066h,0FCh,0FCh,0C0h,066h,0F8h,018h,03Ch,0DEh,0DEh,0F8h,036h,0D6h,0FEh,0C6h,0C6h
|
||||||
|
DB 0FCh,0C0h,030h,07Eh,0DBh,018h,0CCh,07Eh,0D6h,0D6h,03Eh,0F2h,0FCh,01Eh,0FBh,07Eh
|
||||||
|
DB 00Ch,0F8h,0CCh,0C0h,066h,0CCh,07Eh,0CCh,0CCh,0CCh,0D8h,01Eh,0EEh,0CCh,0CCh,0CCh
|
||||||
|
DB 088h,0AAh,0EEh,010h,010h,010h,014h,000h,010h,004h,014h,004h,004h,014h,010h,000h
|
||||||
|
DB 010h,010h,000h,010h,000h,010h,010h,014h,010h,010h,000h,000h,010h,000h,000h,000h
|
||||||
|
DB 014h,000h,000h,014h,010h,010h,000h,014h,010h,010h,000h,0FFh,000h,0F0h,00Fh,0FFh
|
||||||
|
DB 0CCh,0CCh,030h,0CCh,0DBh,06Ch,0CCh,0CCh,0D6h,0D6h,030h,0C2h,0C0h,0C6h,0DBh,0CCh
|
||||||
|
DB 0F8h,0CCh,030h,030h,010h,010h,0FCh,098h,060h,030h,000h,090h,090h,040h,03Ch,000h
|
||||||
|
DB 000h,0BDh,0C3h,07Ch,07Ch,0FEh,0FEh,03Ch,0C3h,042h,0BDh,0CCh,03Ch,030h,063h,0E7h
|
||||||
|
DB 0F8h,03Eh,018h,066h,01Bh,06Ch,07Eh,07Eh,018h,07Eh,00Ch,060h,0C0h,066h,0FFh,03Ch
|
||||||
|
DB 000h,030h,000h,0FEh,00Ch,030h,0DCh,000h,060h,018h,03Ch,030h,000h,000h,000h,060h
|
||||||
|
DB 0F6h,030h,060h,00Ch,0FEh,00Ch,0CCh,030h,0CCh,00Ch,000h,000h,060h,000h,018h,030h
|
||||||
|
DB 0DEh,0FCh,066h,0C0h,066h,068h,068h,0CEh,0CCh,030h,0CCh,06Ch,062h,0D6h,0CEh,0C6h
|
||||||
|
DB 060h,0DCh,06Ch,018h,030h,0CCh,0CCh,0FEh,038h,030h,032h,060h,00Ch,018h,000h,000h
|
||||||
|
DB 000h,07Ch,066h,0C0h,0CCh,0FCh,060h,0CCh,066h,030h,00Ch,078h,030h,0FEh,0CCh,0CCh
|
||||||
|
DB 066h,0CCh,066h,078h,030h,0CCh,0CCh,0FEh,038h,0CCh,030h,030h,018h,030h,000h,0C6h
|
||||||
|
DB 0FEh,0C6h,0C6h,0C0h,066h,0C0h,07Eh,006h,0F6h,0F6h,0CCh,066h,0C6h,0C6h,0C6h,0C6h
|
||||||
|
DB 0C0h,0C0h,030h,006h,0DBh,03Ch,0CCh,006h,0D6h,0D6h,033h,0DAh,0C6h,006h,0DBh,036h
|
||||||
|
DB 07Ch,0CCh,0F8h,0C0h,066h,0FCh,018h,018h,0DCh,0DCh,0F0h,036h,0D6h,0FCh,0CCh,0CCh
|
||||||
|
DB 022h,055h,0DBh,010h,0F0h,0F0h,0F4h,0FCh,0F0h,0F4h,014h,0F4h,0FCh,0FCh,0F0h,0F0h
|
||||||
|
DB 01Fh,0FFh,0FFh,01Fh,0FFh,0FFh,01Fh,017h,01Fh,017h,0FFh,0F7h,017h,0FFh,0F7h,0FFh
|
||||||
|
DB 0FFh,0FFh,0FFh,01Fh,01Fh,01Fh,01Fh,0FFh,0FFh,0F0h,01Fh,0FFh,0FFh,0F0h,00Fh,000h
|
||||||
|
DB 0CCh,0C0h,030h,07Ch,0DBh,038h,0CCh,07Ch,0D6h,0D6h,03Eh,0F2h,0F8h,01Eh,0FBh,07Ch
|
||||||
|
DB 0C0h,0FCh,060h,018h,010h,010h,000h,000h,000h,030h,030h,050h,090h,0F0h,03Ch,000h
|
||||||
|
DB 000h,099h,0E7h,038h,038h,0D6h,07Ch,018h,0E7h,066h,099h,0CCh,018h,070h,067h,03Ch
|
||||||
|
DB 0E0h,00Eh,07Eh,000h,01Bh,038h,07Eh,03Ch,018h,03Ch,018h,030h,0FEh,024h,0FFh,018h
|
||||||
|
DB 000h,000h,000h,06Ch,0F8h,066h,0CCh,000h,030h,030h,066h,030h,030h,000h,030h,0C0h
|
||||||
|
DB 0E6h,030h,0CCh,0CCh,00Ch,0CCh,0CCh,030h,0CCh,018h,030h,030h,030h,0FCh,030h,000h
|
||||||
|
DB 0C0h,0CCh,066h,066h,06Ch,062h,060h,066h,0CCh,030h,0CCh,066h,066h,0C6h,0C6h,06Ch
|
||||||
|
DB 060h,078h,066h,0CCh,030h,0CCh,078h,0EEh,06Ch,030h,066h,060h,006h,018h,000h,000h
|
||||||
|
DB 000h,0CCh,066h,0CCh,0CCh,0C0h,060h,07Ch,066h,030h,0CCh,06Ch,030h,0D6h,0CCh,0CCh
|
||||||
|
DB 07Ch,07Ch,060h,00Ch,034h,0CCh,078h,0FEh,06Ch,07Ch,064h,030h,018h,030h,000h,0C6h
|
||||||
|
DB 0C6h,0C6h,0C6h,0C0h,066h,0C0h,0DBh,0C6h,0E6h,0E6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h
|
||||||
|
DB 0C0h,0C6h,030h,0C6h,07Eh,066h,0CCh,006h,0D6h,0D6h,033h,0DAh,0C6h,0C6h,0DBh,066h
|
||||||
|
DB 0CCh,0CCh,0C6h,0C0h,066h,0C0h,07Eh,0CCh,0ECh,0ECh,0CCh,066h,0C6h,0CCh,0CCh,0CCh
|
||||||
|
DB 088h,0AAh,077h,010h,010h,010h,014h,014h,010h,014h,014h,014h,000h,000h,000h,010h
|
||||||
|
DB 000h,000h,010h,010h,000h,010h,010h,014h,000h,014h,000h,014h,014h,000h,014h,000h
|
||||||
|
DB 000h,010h,014h,000h,000h,010h,014h,014h,010h,000h,010h,0FFh,0FFh,0F0h,00Fh,000h
|
||||||
|
DB 0F8h,0CCh,030h,00Ch,07Eh,06Ch,0CCh,00Ch,0D6h,0D6h,033h,0DAh,0CCh,0C6h,0DBh,06Ch
|
||||||
|
DB 0C0h,0C0h,000h,000h,010h,050h,030h,064h,000h,000h,000h,030h,000h,000h,03Ch,000h
|
||||||
|
DB 000h,081h,0FFh,010h,010h,010h,010h,000h,0FFh,03Ch,0C3h,0CCh,07Eh,0F0h,0E6h,0DBh
|
||||||
|
DB 080h,002h,03Ch,066h,01Bh,0CCh,07Eh,018h,018h,018h,000h,000h,000h,000h,000h,000h
|
||||||
|
DB 000h,030h,000h,06Ch,030h,0C6h,076h,000h,018h,060h,000h,000h,030h,000h,030h,080h
|
||||||
|
DB 07Ch,0FCh,0FCh,078h,01Eh,078h,078h,030h,078h,070h,030h,030h,018h,000h,060h,030h
|
||||||
|
DB 078h,0CCh,0FCh,03Ch,0F8h,0FEh,0F0h,03Eh,0CCh,078h,078h,0E6h,0FEh,0C6h,0C6h,038h
|
||||||
|
DB 0F0h,01Ch,0E6h,078h,078h,0FCh,030h,0C6h,0C6h,078h,0FEh,078h,002h,078h,000h,000h
|
||||||
|
DB 000h,076h,0DCh,078h,076h,078h,0F0h,00Ch,0E6h,078h,0CCh,0E6h,078h,0C6h,0CCh,078h
|
||||||
|
DB 060h,00Ch,0F0h,0F8h,018h,076h,030h,06Ch,0C6h,00Ch,0FCh,01Ch,018h,0E0h,000h,0FEh
|
||||||
|
DB 0C6h,0FCh,0FCh,0C0h,0FFh,0FEh,0DBh,07Ch,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,07Ch,0C6h
|
||||||
|
DB 0C0h,07Ch,030h,07Ch,018h,0C3h,0FEh,006h,0FEh,0FFh,03Eh,0F2h,0FCh,07Ch,0CEh,0C6h
|
||||||
|
DB 07Eh,078h,0FCh,0C0h,0FFh,07Ch,0DBh,078h,0CCh,0CCh,0CCh,0C6h,0C6h,0CCh,078h,0CCh
|
||||||
|
DB 022h,055h,0DBh,010h,010h,010h,014h,014h,010h,014h,014h,014h,000h,000h,000h,010h
|
||||||
|
DB 000h,000h,010h,010h,000h,010h,010h,014h,000h,014h,000h,014h,014h,000h,014h,000h
|
||||||
|
DB 000h,010h,014h,000h,000h,010h,014h,014h,010h,000h,010h,0FFh,0FFh,0F0h,00Fh,000h
|
||||||
|
DB 0C0h,078h,030h,0CCh,018h,0C6h,0FEh,00Ch,0FEh,0FFh,03Eh,0F2h,0F8h,07Ch,0CEh,0CCh
|
||||||
|
DB 0FEh,07Ch,078h,078h,010h,020h,030h,098h,000h,000h,000h,010h,000h,000h,000h,000h
|
||||||
|
DB 000h,07Eh,07Eh,000h,000h,038h,038h,000h,0FFh,000h,0FFh,078h,018h,0E0h,0C0h,018h
|
||||||
|
DB 000h,000h,018h,000h,000h,078h,000h,0FFh,000h,000h,000h,000h,000h,000h,000h,000h
|
||||||
|
DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,060h,000h,000h,000h
|
||||||
|
DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,060h,000h,000h,000h,000h
|
||||||
|
DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
|
||||||
|
DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,0FFh
|
||||||
|
DB 000h,000h,000h,000h,000h,000h,000h,0F8h,000h,000h,078h,000h,000h,000h,000h,000h
|
||||||
|
DB 0F0h,01Eh,000h,000h,000h,000h,000h,000h,000h,0F8h,000h,000h,000h,000h,000h,000h
|
||||||
|
DB 000h,000h,000h,000h,0C3h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
|
||||||
|
DB 000h,000h,000h,000h,000h,000h,006h,000h,000h,003h,000h,000h,000h,000h,000h,000h
|
||||||
|
DB 000h,000h,000h,000h,0C3h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
|
||||||
|
DB 088h,0AAh,0EEh,010h,010h,010h,014h,014h,010h,014h,014h,014h,000h,000h,000h,010h
|
||||||
|
DB 000h,000h,010h,010h,000h,010h,010h,014h,000h,014h,000h,014h,014h,000h,014h,000h
|
||||||
|
DB 000h,010h,014h,000h,000h,010h,014h,014h,010h,000h,010h,0FFh,0FFh,0F0h,00Fh,000h
|
||||||
|
DB 0C0h,000h,000h,078h,018h,000h,006h,000h,000h,003h,000h,000h,000h,000h,000h,000h
|
||||||
|
DB 000h,000h,000h,000h,010h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
789
ZX_EXP/SERVICE.ASM
Normal file
789
ZX_EXP/SERVICE.ASM
Normal file
@ -0,0 +1,789 @@
|
|||||||
|
;.PRINTX "Service."
|
||||||
|
|
||||||
|
SERVICE:
|
||||||
|
LD HL,SR_TAB
|
||||||
|
LD DE,SR_MENU
|
||||||
|
LD BC,SR_LEN
|
||||||
|
PUSH HL
|
||||||
|
CALL RUN_MENU ;09f3
|
||||||
|
POP HL
|
||||||
|
CALL EXEC_PNT
|
||||||
|
JR SERVICE
|
||||||
|
|
||||||
|
SR_TAB:
|
||||||
|
DW UTILIT
|
||||||
|
DW SR_48R
|
||||||
|
DW SR_48
|
||||||
|
DW TURBO_OFF_1
|
||||||
|
DW TURBO_ON_1
|
||||||
|
DW CLEAR_RAM
|
||||||
|
DW RET_FROM_M
|
||||||
|
|
||||||
|
; DC - every last character of a string will have bit 7 set
|
||||||
|
SR_MENU:
|
||||||
|
BYTE 8 ; ª®«¨ç¥á⢮ ¯ãªâ®¢
|
||||||
|
BYTE 'Options ',#FF ; § £®«®¢®ª ¬¥î
|
||||||
|
DC 'RUN disk.trd'
|
||||||
|
DC '128 TR-DOS'
|
||||||
|
DC '48 TR-DOS'
|
||||||
|
DC 'TURBO OFF '
|
||||||
|
DC 'TURBO ON '
|
||||||
|
DC 'Clear RAM'
|
||||||
|
DC 'RETURN'
|
||||||
|
DC ' ' ; ¬ àª¥à ª®æ
|
||||||
|
|
||||||
|
SR_LEN EQU $-SR_MENU
|
||||||
|
|
||||||
|
;*****************************
|
||||||
|
|
||||||
|
SR_48R:
|
||||||
|
LD A,10H
|
||||||
|
JR SR_48A
|
||||||
|
;*****************************
|
||||||
|
|
||||||
|
SR_48:
|
||||||
|
LD A,30H
|
||||||
|
SR_48A:
|
||||||
|
LD BC,7FFDH
|
||||||
|
OUT (C),A ; ‘⮯®à PORT_128 !!!
|
||||||
|
LD BC,0 ; <20>€ 0 !!
|
||||||
|
PUSH BC
|
||||||
|
LD BC,3D2Fh ; ‚ DOS !
|
||||||
|
PUSH BC
|
||||||
|
JP SW_ROM
|
||||||
|
|
||||||
|
;*******************************
|
||||||
|
IFDEF ZX_BIOS
|
||||||
|
TURBO_OFF_1:
|
||||||
|
LD A,BIOS.FN_TURBO.OFF
|
||||||
|
LD C,BIOS.FN_TURBO
|
||||||
|
JP ToBIOS_18
|
||||||
|
TURBO_ON_1:
|
||||||
|
LD A,BIOS.FN_TURBO.ON
|
||||||
|
LD C,BIOS.FN_TURBO
|
||||||
|
JP ToBIOS_18
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
;
|
||||||
|
TURBO_OFF_1:
|
||||||
|
DI
|
||||||
|
CALL DOS_ON
|
||||||
|
IN A,(PAGE3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD A,(CONFIG_DE)
|
||||||
|
AND 0FCH
|
||||||
|
OR 2
|
||||||
|
LD (CONFIG_DE),A
|
||||||
|
OUT (CNF_PORT),A
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE3),A
|
||||||
|
CALL DOS_OFF
|
||||||
|
EI
|
||||||
|
RET
|
||||||
|
TURBO_ON_1:
|
||||||
|
DI
|
||||||
|
CALL DOS_ON
|
||||||
|
IN A,(PAGE3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD A,(CONFIG_DE)
|
||||||
|
AND 0FCH
|
||||||
|
OR 3
|
||||||
|
LD (CONFIG_DE),A
|
||||||
|
OUT (CNF_PORT),A
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE3),A
|
||||||
|
EI
|
||||||
|
CALL DOS_OFF
|
||||||
|
RET
|
||||||
|
|
||||||
|
ENDIF
|
||||||
|
;*******************************
|
||||||
|
|
||||||
|
CLEAR_RAM:
|
||||||
|
DI
|
||||||
|
LD C,9Fh
|
||||||
|
RST 18h
|
||||||
|
IFDEF ZX_BIOS
|
||||||
|
; ¯à¨ ®ç¨á⪥ ¯ ¬ï⨠¨§ ¬¥î ᯥªâà㬠¯®«®¬ ¥âáï ¢®§¢à â ¢ DSS ¯® CAD, ¯®í⮬㠮⪫îç ¥¬ ¢®§¢à â
|
||||||
|
LD A,#EE ;!HARDCODE Conf_port.RET_PORT
|
||||||
|
LD BC,0*256 + #F8 ;!HARDCODE BIOS.SET_PORTS
|
||||||
|
CALL #3D13 ;!HARDCODE ToBIOS_3D13
|
||||||
|
ENDIF
|
||||||
|
EI
|
||||||
|
RET
|
||||||
|
|
||||||
|
;SR_CL_MEM:
|
||||||
|
; DI
|
||||||
|
; LD A,10H
|
||||||
|
;SR_CL_R2:
|
||||||
|
; LD BC,1FFDH
|
||||||
|
; OUT (C),A
|
||||||
|
; EX AF,AF'
|
||||||
|
; XOR A
|
||||||
|
;SR_CL_R1:
|
||||||
|
; LD BC,7FFDH
|
||||||
|
; OUT (C),A
|
||||||
|
; LD HL,0C000H
|
||||||
|
; LD DE,0C001H
|
||||||
|
; LD BC,03FFFH
|
||||||
|
; LD (HL),L
|
||||||
|
; LDIR
|
||||||
|
; INC A
|
||||||
|
; CP 48H
|
||||||
|
; JR NZ,SR_CL_R1
|
||||||
|
; EX AF,AF'
|
||||||
|
; CP 0
|
||||||
|
; JP Z,BASIC_128 ; ¢ë室 á¡à®á BASIC 128
|
||||||
|
; LD A,0
|
||||||
|
; JR SR_CL_R2
|
||||||
|
|
||||||
|
;*****************************
|
||||||
|
; *** MENU IS-DOS ***
|
||||||
|
;*****************************
|
||||||
|
|
||||||
|
ISDOS:
|
||||||
|
LD HL,IS_TAB
|
||||||
|
LD DE,IS_MENU
|
||||||
|
LD BC,IS_MENU.Size
|
||||||
|
PUSH HL
|
||||||
|
CALL RUN_MENU
|
||||||
|
POP HL
|
||||||
|
CALL EXEC_PNT
|
||||||
|
JR ISDOS
|
||||||
|
|
||||||
|
IS_TAB:
|
||||||
|
; DW TR_DOS
|
||||||
|
; DW SP_DOS
|
||||||
|
DW SPRINTER_1X
|
||||||
|
DW AY8910_X
|
||||||
|
DW PENTAGON
|
||||||
|
DW SCORPION
|
||||||
|
DW PENTAGON512
|
||||||
|
DW SPRINTER_2X
|
||||||
|
DW RET_FROM_M
|
||||||
|
|
||||||
|
; DC - every last character of a string will have bit 7 set
|
||||||
|
IS_MENU:
|
||||||
|
BYTE 8 ; ª®«¨ç¥á⢮ ¯ãªâ®¢
|
||||||
|
BYTE 'Hardware',#FF ; § £®«®¢®ª ¬¥î
|
||||||
|
DC 'Sprinter ZX '
|
||||||
|
DC 'ZX Spectrum'
|
||||||
|
DC 'Pentagon 128'
|
||||||
|
DC 'Scorpion 256'
|
||||||
|
DC 'Pentagon 512'
|
||||||
|
DC 'Restart '
|
||||||
|
DC 'RETURN'
|
||||||
|
DC ' ' ; ¬ àª¥à ª®æ
|
||||||
|
.Size EQU $-IS_MENU
|
||||||
|
|
||||||
|
;******************************
|
||||||
|
;SP_DOS:
|
||||||
|
; LD B,#E2
|
||||||
|
; LD A,#E1
|
||||||
|
; JR TR_DOS1
|
||||||
|
;TR_DOS:
|
||||||
|
; LD B,#EA
|
||||||
|
; LD A,#E1
|
||||||
|
;TR_DOS1:
|
||||||
|
; CALL DOS_ON
|
||||||
|
; CALL SET_ROM_PAGES
|
||||||
|
; CALL DOS_OFF
|
||||||
|
; RET
|
||||||
|
;******************************
|
||||||
|
|
||||||
|
|
||||||
|
;**************************************************
|
||||||
|
|
||||||
|
AY8910_X:
|
||||||
|
CALL AY8910
|
||||||
|
JR SPRINTER_2XX
|
||||||
|
|
||||||
|
SPRINTER_1X:
|
||||||
|
CALL SPRINTER_1
|
||||||
|
; JR SPRINTER_2XX
|
||||||
|
SPRINTER_2XX:
|
||||||
|
CALL SPRINTER_
|
||||||
|
CALL DOS_OFF
|
||||||
|
CALL CLS
|
||||||
|
RET
|
||||||
|
|
||||||
|
SPRINTER_2X:
|
||||||
|
CALL SPRINTER_2
|
||||||
|
CALL DOS_OFF
|
||||||
|
XOR A
|
||||||
|
JP RESET_1 ; á¡à®á ¡¥§ ¯¥à¥§ £à㧪¨
|
||||||
|
|
||||||
|
AY8910:
|
||||||
|
LD D,#35
|
||||||
|
CALL CMOS_RD
|
||||||
|
OR 1
|
||||||
|
CALL CMOS_WR
|
||||||
|
|
||||||
|
LD BC,204Eh ; port all_mode
|
||||||
|
IN A,(C)
|
||||||
|
AND #FE
|
||||||
|
OUT (C),A ; ACC_OFF
|
||||||
|
|
||||||
|
LD A,PG_AY
|
||||||
|
JR SPRINTER_ALL
|
||||||
|
|
||||||
|
SPRINTER_1:
|
||||||
|
LD D,35H
|
||||||
|
CALL CMOS_RD
|
||||||
|
AND 0FEh
|
||||||
|
CALL CMOS_WR
|
||||||
|
|
||||||
|
LD BC,204Eh
|
||||||
|
IN A,(C)
|
||||||
|
AND 0FEh
|
||||||
|
OUT (C),A ; ACC_OFF
|
||||||
|
|
||||||
|
LD A,PG_SP1
|
||||||
|
JR SPRINTER_ALL
|
||||||
|
;
|
||||||
|
SPRINTER_2:
|
||||||
|
LD BC,204Eh
|
||||||
|
IN A,(C)
|
||||||
|
OR 01h ; ACC_ON
|
||||||
|
OUT (C),A
|
||||||
|
LD A,PG_SP2
|
||||||
|
|
||||||
|
SPRINTER_ALL:
|
||||||
|
|
||||||
|
; RET
|
||||||
|
|
||||||
|
EX AF,AF'
|
||||||
|
DI
|
||||||
|
; CALL DOS_ON
|
||||||
|
LD A,CNF_0
|
||||||
|
OUT (CNF_PORT),A
|
||||||
|
|
||||||
|
XOR A
|
||||||
|
LD BC,1FFDH
|
||||||
|
OUT (C),A
|
||||||
|
LD A,10H
|
||||||
|
LD B,7FH
|
||||||
|
OUT (C),A
|
||||||
|
|
||||||
|
LD C,PAGE3
|
||||||
|
IN B,(C)
|
||||||
|
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (C),A
|
||||||
|
|
||||||
|
LD DE,CNF_0+D_TBON
|
||||||
|
LD HL,L_PENTAGON
|
||||||
|
LD (CONFIG_ALL),HL
|
||||||
|
LD (CONFIG_DE),DE
|
||||||
|
|
||||||
|
LD A,B
|
||||||
|
LD (COPY_PAGE3),A
|
||||||
|
|
||||||
|
EX AF,AF'
|
||||||
|
|
||||||
|
; LD HL,CONFIG_BYTE
|
||||||
|
;
|
||||||
|
; CP (HL)
|
||||||
|
; JR NZ,SET_CONFIG1
|
||||||
|
; INC HL
|
||||||
|
; LD A,(HL)
|
||||||
|
; AND A
|
||||||
|
; JP Z,NO_SET_CONFIG
|
||||||
|
;
|
||||||
|
; DEC HL
|
||||||
|
; LD A,(HL)
|
||||||
|
;SET_CONFIG1:
|
||||||
|
;
|
||||||
|
; LD (HL),A
|
||||||
|
; INC HL
|
||||||
|
; LD (HL),0
|
||||||
|
|
||||||
|
LD (SYS_SP),SP
|
||||||
|
|
||||||
|
LD SP,SYS_SP-2
|
||||||
|
|
||||||
|
PUSH IY
|
||||||
|
PUSH IX
|
||||||
|
|
||||||
|
PUSH HL
|
||||||
|
PUSH DE
|
||||||
|
PUSH BC
|
||||||
|
PUSH AF
|
||||||
|
|
||||||
|
EXX
|
||||||
|
EX AF,AF'
|
||||||
|
|
||||||
|
PUSH HL
|
||||||
|
PUSH DE
|
||||||
|
PUSH BC
|
||||||
|
PUSH AF
|
||||||
|
|
||||||
|
EXX
|
||||||
|
; EX AF,AF'
|
||||||
|
; EX AF,AF'
|
||||||
|
|
||||||
|
LD A,R
|
||||||
|
PUSH AF
|
||||||
|
LD A,I
|
||||||
|
PUSH AF
|
||||||
|
|
||||||
|
LD (SP_SAVE),SP
|
||||||
|
|
||||||
|
IN A,(PAGE2)
|
||||||
|
LD (COPY_PAGE2),A
|
||||||
|
IN A,(PAGE1)
|
||||||
|
LD (COPY_PAGE1),A
|
||||||
|
IN A,(PAGE0)
|
||||||
|
LD (COPY_PAGE0),A
|
||||||
|
|
||||||
|
; LD A,1
|
||||||
|
; OUT (PAGE2),A
|
||||||
|
|
||||||
|
; LD HL,0BFE0H
|
||||||
|
; LD DE,0C0A0H
|
||||||
|
; LD BC,20H
|
||||||
|
; LDIR
|
||||||
|
|
||||||
|
; LD HL,PROG_RETS
|
||||||
|
; LD DE,0BFE0H
|
||||||
|
; LD BC,20H
|
||||||
|
; LDIR
|
||||||
|
|
||||||
|
; LD A,40H
|
||||||
|
; OUT (PAGE2),A
|
||||||
|
|
||||||
|
; LD HL,0BFE0H
|
||||||
|
; LD DE,0C080H
|
||||||
|
; LD BC,20H
|
||||||
|
; LDIR
|
||||||
|
|
||||||
|
; LD HL,PROG_RETS
|
||||||
|
; LD DE,0BFE0H
|
||||||
|
; LD BC,20H
|
||||||
|
; LDIR
|
||||||
|
|
||||||
|
; JP RESTART_RETS_X
|
||||||
|
|
||||||
|
LD HL,(CONFIG_BYTE)
|
||||||
|
LD IX,(CONFIG_BYTE)
|
||||||
|
|
||||||
|
LD A,0FFH
|
||||||
|
OUT (PAGE2),A
|
||||||
|
|
||||||
|
LD A,10H
|
||||||
|
LD BC,1FFDH
|
||||||
|
OUT (C),A ; 8-ï áâà ¨æ !!
|
||||||
|
|
||||||
|
IN A,(PAGE3)
|
||||||
|
EX AF,AF'
|
||||||
|
|
||||||
|
CP PG_SP1
|
||||||
|
LD DE,0FFFEh
|
||||||
|
JR Z,INT_PLD
|
||||||
|
CP PG_SP2
|
||||||
|
LD DE,0FFFDh
|
||||||
|
JR Z,INT_PLD
|
||||||
|
CP PG_AY
|
||||||
|
LD DE,0FFFCh
|
||||||
|
JR Z,INT_PLD
|
||||||
|
|
||||||
|
OUT (PAGE3),A ; ROM á ¯à®è¨¢ª®©
|
||||||
|
LD DE,(0C090H)
|
||||||
|
INT_PLD:
|
||||||
|
EX AF,AF'
|
||||||
|
|
||||||
|
OUT (PAGE3),A
|
||||||
|
|
||||||
|
LD XH,D
|
||||||
|
LD XL,E
|
||||||
|
|
||||||
|
AND A
|
||||||
|
SBC HL,DE
|
||||||
|
JP Z,RESTART_RETS_X
|
||||||
|
JP RESTART_RETS_X
|
||||||
|
|
||||||
|
;================================
|
||||||
|
|
||||||
|
; CALL DOS_ON
|
||||||
|
|
||||||
|
; XOR A
|
||||||
|
; OUT (0FH),A
|
||||||
|
|
||||||
|
; CALL DOS_OFF
|
||||||
|
|
||||||
|
; EX AF,AF'
|
||||||
|
; OUT (PAGE3),A
|
||||||
|
|
||||||
|
; LD HL,0C000H
|
||||||
|
; LD DE,08000H
|
||||||
|
; LD BC,4000H
|
||||||
|
; LDIR ; not Configs for Sp-2000!!!
|
||||||
|
|
||||||
|
; LD A,0FFH ; CASH !!
|
||||||
|
; OUT (PAGE3),A
|
||||||
|
|
||||||
|
; LD HL,08000H
|
||||||
|
; LD DE,0C000H
|
||||||
|
; LD BC,4000H
|
||||||
|
; LDIR ; not Config for Sp-2000!!!
|
||||||
|
|
||||||
|
RESET_ALL:
|
||||||
|
LD A,10H
|
||||||
|
LD BC,1FFDH
|
||||||
|
OUT (C),A ; 8-ï áâà ¨æ !!
|
||||||
|
|
||||||
|
LD A,0A0H
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD A,D_TBOFF
|
||||||
|
OUT (CNF_PORT),A
|
||||||
|
RESET_L:
|
||||||
|
LD (0C000H),A ; RESET !!!
|
||||||
|
JR RESET_L
|
||||||
|
DI
|
||||||
|
HALT
|
||||||
|
|
||||||
|
;=================================
|
||||||
|
|
||||||
|
PROG_RETS:
|
||||||
|
LD HL,RESTARTS ; 3
|
||||||
|
LD B,16 ; 2
|
||||||
|
REST_LOOPS:
|
||||||
|
LD (HL),0 ; 2
|
||||||
|
INC HL ; 1
|
||||||
|
DJNZ REST_LOOPS ; 2
|
||||||
|
NOP ; 1
|
||||||
|
NOP ; 1
|
||||||
|
LD A,1 ; 2
|
||||||
|
OUT (PAGE3),A ; 2
|
||||||
|
|
||||||
|
JP RESTART_RETS
|
||||||
|
|
||||||
|
RESTART_RETS_X:
|
||||||
|
|
||||||
|
|
||||||
|
RESTART_RETS:
|
||||||
|
XOR A
|
||||||
|
OUT (0EFH),A ; § ã«¥¨¥ WAIT-®¢
|
||||||
|
|
||||||
|
LD BC,1FFDH
|
||||||
|
OUT (C),A
|
||||||
|
LD A,10H
|
||||||
|
LD B,7FH
|
||||||
|
OUT (C),A
|
||||||
|
|
||||||
|
IN A,(PAGE3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD (CONFIG_BYTE),IX
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE3),A
|
||||||
|
EX AF,AF'
|
||||||
|
|
||||||
|
LD A,XL
|
||||||
|
CP #FF
|
||||||
|
LD A,128
|
||||||
|
JR Z,YES_CBL
|
||||||
|
XOR A
|
||||||
|
YES_CBL:
|
||||||
|
LD BC,78
|
||||||
|
OUT (C),A
|
||||||
|
|
||||||
|
LD A,XL
|
||||||
|
OR #FE
|
||||||
|
LD BC,204Eh ;ALL_MODE
|
||||||
|
OUT (C),A
|
||||||
|
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
|
||||||
|
; LD A,1
|
||||||
|
; OUT (PAGE2),A
|
||||||
|
; LD DE,0BFE0H
|
||||||
|
; LD HL,0C0A0H
|
||||||
|
; LD BC,20H
|
||||||
|
; LDIR
|
||||||
|
|
||||||
|
; LD A,40H
|
||||||
|
; OUT (PAGE2),A
|
||||||
|
|
||||||
|
; LD DE,0BFE0H
|
||||||
|
; LD HL,0C080H
|
||||||
|
; LD BC,20H
|
||||||
|
; LDIR
|
||||||
|
|
||||||
|
LD A,(COPY_PAGE0)
|
||||||
|
OUT (PAGE0),A
|
||||||
|
LD A,(COPY_PAGE1)
|
||||||
|
OUT (PAGE1),A
|
||||||
|
LD A,(COPY_PAGE2)
|
||||||
|
OUT (PAGE2),A
|
||||||
|
|
||||||
|
LD SP,(SP_SAVE)
|
||||||
|
|
||||||
|
POP AF
|
||||||
|
LD I,A
|
||||||
|
POP AF
|
||||||
|
LD R,A
|
||||||
|
EXX
|
||||||
|
EX AF,AF'
|
||||||
|
|
||||||
|
POP AF
|
||||||
|
POP BC
|
||||||
|
POP DE
|
||||||
|
POP HL
|
||||||
|
|
||||||
|
EXX
|
||||||
|
EX AF,AF'
|
||||||
|
|
||||||
|
POP AF
|
||||||
|
POP BC
|
||||||
|
POP DE
|
||||||
|
POP HL
|
||||||
|
|
||||||
|
POP IX
|
||||||
|
POP IY
|
||||||
|
|
||||||
|
LD SP,(SYS_SP)
|
||||||
|
IM 1
|
||||||
|
|
||||||
|
LD A,(BORDER)
|
||||||
|
RRCA
|
||||||
|
RRCA
|
||||||
|
RRCA
|
||||||
|
AND 7
|
||||||
|
OUT (0FEH),A
|
||||||
|
|
||||||
|
CALL DOS_ON
|
||||||
|
|
||||||
|
LD A,3CH
|
||||||
|
OUT (0FFH),A
|
||||||
|
|
||||||
|
CALL DOS_OFF
|
||||||
|
|
||||||
|
NO_SET_CONFIG:
|
||||||
|
|
||||||
|
LD A,(COPY_PAGE3)
|
||||||
|
OUT (PAGE3),A
|
||||||
|
AND A
|
||||||
|
; CALL DOS_ON
|
||||||
|
EI
|
||||||
|
RET
|
||||||
|
|
||||||
|
;*****************************
|
||||||
|
;PROG_SINC:
|
||||||
|
; DI
|
||||||
|
; LD C,PAGE1
|
||||||
|
; IN A,(C)
|
||||||
|
; LD B,0FFH
|
||||||
|
; OUT (C),B
|
||||||
|
; LD (7FFEH),BC
|
||||||
|
; LD (7FFCH),SP
|
||||||
|
; LD SP,7FF0H
|
||||||
|
; CALL PROG_SCR
|
||||||
|
; LD SP,(7FFCH)
|
||||||
|
; LD BC,(7FFEH)
|
||||||
|
; OUT (C),B
|
||||||
|
; EI
|
||||||
|
; RET
|
||||||
|
|
||||||
|
|
||||||
|
CNF_SC_312:
|
||||||
|
DI
|
||||||
|
CALL DOS_ON
|
||||||
|
LD A,CNF_0
|
||||||
|
OUT (CNF_PORT),A
|
||||||
|
LD A,61H ; set 312 lines
|
||||||
|
OUT (0BDh),A
|
||||||
|
CALL DOS_OFF
|
||||||
|
LD HL,L_SCORPION
|
||||||
|
RET
|
||||||
|
|
||||||
|
CNF_PN_320:
|
||||||
|
DI
|
||||||
|
CALL DOS_ON
|
||||||
|
LD A,CNF_0
|
||||||
|
OUT (CNF_PORT),A
|
||||||
|
LD A,41H ; set 320 lines
|
||||||
|
OUT (0BDh),A
|
||||||
|
CALL DOS_OFF
|
||||||
|
LD HL,L_PENTAGON
|
||||||
|
RET
|
||||||
|
|
||||||
|
SPRINTER_:
|
||||||
|
CALL CNF_PN_320
|
||||||
|
LD DE,CNF_0+D_TBON
|
||||||
|
JR CONFIG_SET1
|
||||||
|
|
||||||
|
SCORPION:
|
||||||
|
CALL CNF_SC_312
|
||||||
|
LD DE,CNF_1+D_TBON
|
||||||
|
JR CONFIG_SET1
|
||||||
|
|
||||||
|
PENTAGON:
|
||||||
|
CALL CNF_PN_320
|
||||||
|
LD DE,CNF_2+D_TBON
|
||||||
|
JR CONFIG_SET1
|
||||||
|
|
||||||
|
PENTAGON512:
|
||||||
|
CALL CNF_PN_320
|
||||||
|
LD DE,CNF_2+D_TBON+CNF_512
|
||||||
|
; JR CONFIG_SET1
|
||||||
|
|
||||||
|
CONFIG_SET1:
|
||||||
|
CALL DOS_ON
|
||||||
|
CALL CONFIG_SET
|
||||||
|
CALL DOS_OFF
|
||||||
|
EI
|
||||||
|
RET
|
||||||
|
|
||||||
|
CONFIG_SET:
|
||||||
|
EI
|
||||||
|
HALT
|
||||||
|
DI
|
||||||
|
|
||||||
|
IN A,(PAGE3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (PAGE3),A
|
||||||
|
LD (CONFIG_ALL),HL
|
||||||
|
LD (CONFIG_DE),DE
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (PAGE3),A
|
||||||
|
|
||||||
|
PUSH DE
|
||||||
|
|
||||||
|
CALL SINC_DEF
|
||||||
|
|
||||||
|
LD HL,4104H
|
||||||
|
LD E,0
|
||||||
|
LD B,4
|
||||||
|
CALL LP_OPEN_S
|
||||||
|
|
||||||
|
LD HL,5104H
|
||||||
|
LD E,0
|
||||||
|
LD B,4
|
||||||
|
CALL LP_OPEN_S
|
||||||
|
|
||||||
|
POP DE
|
||||||
|
LD A,E
|
||||||
|
OUT (CNF_PORT),A
|
||||||
|
|
||||||
|
RET
|
||||||
|
|
||||||
|
; LD A,CNF_0
|
||||||
|
; OUT (CNF_PORT),A
|
||||||
|
; CALL DOS_OFF
|
||||||
|
; JP 0
|
||||||
|
|
||||||
|
;*****************************
|
||||||
|
; *** MENU UTILITES ***
|
||||||
|
;*****************************
|
||||||
|
|
||||||
|
UTILIT:
|
||||||
|
LD HL,C_DISK_C
|
||||||
|
CALL CALL_DOS1
|
||||||
|
|
||||||
|
CALL DOS_ON
|
||||||
|
LD A,0 ; DETECT_HDD
|
||||||
|
CALL HDD_EXE
|
||||||
|
CALL DOS_OFF
|
||||||
|
|
||||||
|
JR C,DISK_UTILIT
|
||||||
|
|
||||||
|
LD HL,C_DISK_C3
|
||||||
|
CALL CALL_DOS1
|
||||||
|
|
||||||
|
UTIL_DISK:
|
||||||
|
LD A,0
|
||||||
|
CALL EMM_FN3
|
||||||
|
|
||||||
|
LD HL,C_DEMO6
|
||||||
|
CALL CALL_DOS1
|
||||||
|
|
||||||
|
LD A,0
|
||||||
|
CALL GET_RAMD_ST
|
||||||
|
JR C,UTIL_DISK_L1
|
||||||
|
JR Z,UTIL_DISK_L1
|
||||||
|
|
||||||
|
LD HL,C_DISK_C1
|
||||||
|
CALL CALL_DOS1
|
||||||
|
LD HL,C_DISK_C2
|
||||||
|
CALL CALL_DOS1
|
||||||
|
RET
|
||||||
|
|
||||||
|
UTIL_DISK_L1:
|
||||||
|
LD A,(OPER_DISK)
|
||||||
|
INC A
|
||||||
|
CP 2
|
||||||
|
JR Z,DISK_UTIL_RET
|
||||||
|
LD HL,C_DISK_C5
|
||||||
|
CALL CALL_DOS1
|
||||||
|
JR UTIL_DISK
|
||||||
|
|
||||||
|
DISK_UTIL_RET:
|
||||||
|
LD HL,C_DISK_C6
|
||||||
|
CALL CALL_DOS1
|
||||||
|
RET
|
||||||
|
|
||||||
|
DISK_UTILIT:
|
||||||
|
LD HL,C_DISK_C4
|
||||||
|
CALL CALL_DOS1
|
||||||
|
JR UTIL_DISK
|
||||||
|
|
||||||
|
C_DEMO6: DB C_DEMO6_L,ZX_Token.rem,':/disk.trd',13,80
|
||||||
|
C_DEMO6_L EQU $-C_DEMO6-1
|
||||||
|
|
||||||
|
;***************************************
|
||||||
|
|
||||||
|
;VERSION: DEFB 22,21,0
|
||||||
|
; DEFB 16,2,"Expansion 3.02 1997 ELSY Co.",16,1,0FFh
|
||||||
|
|
||||||
|
;**********************************************
|
||||||
|
|
||||||
|
DOS_RUN:
|
||||||
|
LD HL,C_DISK_C1
|
||||||
|
CALL CALL_DOS1
|
||||||
|
|
||||||
|
LD HL,C_DISK_C2
|
||||||
|
CALL CALL_DOS1
|
||||||
|
RET
|
||||||
|
|
||||||
|
START_TRD:
|
||||||
|
LD HL,C_DISK_C
|
||||||
|
CALL CALL_DOS1
|
||||||
|
LD HL,C_DISK_C0
|
||||||
|
CALL CALL_DOS1
|
||||||
|
LD HL,C_DISK_C3
|
||||||
|
CALL CALL_DOS1
|
||||||
|
RET
|
||||||
|
|
||||||
|
C_DISK_C: DB C_DISK_CL,ZX_Token.rem,':',13,80
|
||||||
|
C_DISK_CL EQU $-C_DISK_C-1
|
||||||
|
|
||||||
|
C_DISK_C0: DB C_DISK_C0L,ZX_Token.rem,':/CLEAR E',13,80
|
||||||
|
C_DISK_C0L EQU $-C_DISK_C0-1
|
||||||
|
|
||||||
|
C_DISK_C1: DB C_DISK_C1L,ZX_Token.rem,':/RMD E',13,80
|
||||||
|
C_DISK_C1L EQU $-C_DISK_C1-1
|
||||||
|
|
||||||
|
C_DISK_C2: DB C_DISK_C2L,ZX_Token.rem,':RUN',13,80
|
||||||
|
C_DISK_C2L EQU $-C_DISK_C2-1
|
||||||
|
|
||||||
|
C_DISK_C3: DB C_DISK_C3L,ZX_Token.rem,':/HDD',13,80
|
||||||
|
C_DISK_C3L EQU $-C_DISK_C3-1
|
||||||
|
|
||||||
|
C_DISK_C4: DB C_DISK_C4L,ZX_Token.rem,':/FDD',13,80
|
||||||
|
C_DISK_C4L EQU $-C_DISK_C4-1
|
||||||
|
|
||||||
|
C_DISK_C5: DB C_DISK_C5L,ZX_Token.rem,':/B:',13,80
|
||||||
|
C_DISK_C5L EQU $-C_DISK_C5-1
|
||||||
|
|
||||||
|
C_DISK_C6: DB C_DISK_C6L,ZX_Token.rem,':/A:',13,80
|
||||||
|
C_DISK_C6L EQU $-C_DISK_C6-1
|
||||||
|
;
|
||||||
340
ZX_EXP/TEST.ASM
Normal file
340
ZX_EXP/TEST.ASM
Normal file
@ -0,0 +1,340 @@
|
|||||||
|
; "MENU PROGRAMS."
|
||||||
|
;*********************************
|
||||||
|
; FOR INCLUDE !!!
|
||||||
|
;*********************************
|
||||||
|
; Ž¡á«ã¦¨¢ ¨¥ Œ…<C592>ž
|
||||||
|
; HL - ¤à¥á â ¡«¨æë ¯à®£à ¬¬
|
||||||
|
; A - ®¬¥à ¢ â ¡«¨æ¥
|
||||||
|
; ¥á«¨ A=-1, â® ¢®§¢à â,
|
||||||
|
; ¨ ç¥ ¢ë¯®«¥¨¥
|
||||||
|
;*****************************
|
||||||
|
EXEC_PNT:
|
||||||
|
INC A
|
||||||
|
RET Z
|
||||||
|
EXEC_PNT_LOOP:
|
||||||
|
DEC A
|
||||||
|
JR Z,EXEC_HL
|
||||||
|
INC HL
|
||||||
|
INC HL
|
||||||
|
JR EXEC_PNT_LOOP
|
||||||
|
EXEC_HL:
|
||||||
|
LD E,(HL)
|
||||||
|
INC HL
|
||||||
|
LD D,(HL)
|
||||||
|
INC HL
|
||||||
|
EX DE,HL
|
||||||
|
JP (HL)
|
||||||
|
RET_FROM_M:
|
||||||
|
POP HL
|
||||||
|
RET
|
||||||
|
|
||||||
|
;****************************************
|
||||||
|
; <20>€<EFBFBD>Ž’€ ‘ MENU_128
|
||||||
|
;****************************************
|
||||||
|
; ‚•Ž„: - DE - ¤à¥á ¬¥î
|
||||||
|
; BC - ¤«¨ ¬¥î
|
||||||
|
; ‚›•Ž„: A - ¢ë¡à ë© ¯ãªâ
|
||||||
|
;****************************************
|
||||||
|
|
||||||
|
RUN_MENU:
|
||||||
|
PUSH IX
|
||||||
|
PUSH DE ; DE - MENU
|
||||||
|
PUSH BC ; BC - len_menu
|
||||||
|
|
||||||
|
LD A,(DE)
|
||||||
|
DEC A ; ç¨á«® CMD
|
||||||
|
CP 9
|
||||||
|
JR C,RUN_M_1
|
||||||
|
RUN_MN_ERR:
|
||||||
|
POP BC
|
||||||
|
POP DE
|
||||||
|
LD A,0FFh ; ¢¥àãâìáï á ®¬¥à®¬ 255 - ®è¨¡ª
|
||||||
|
POP IX
|
||||||
|
RET
|
||||||
|
RUN_M_1:
|
||||||
|
LD A,(5B00H)
|
||||||
|
CP #F5 ; ‘<>€‚<E282AC>ˆ’œ € ‘ ŠŽ„ŽŒ PUSH AF
|
||||||
|
JR NZ,RUN_MN_ERR
|
||||||
|
|
||||||
|
|
||||||
|
LD HL,LEN_P_M
|
||||||
|
ADD HL,BC ; HL - ã¦ ï ¤«¨ ¯ ¬ïâ¨
|
||||||
|
LD B,H ; HL -> BC
|
||||||
|
LD C,L
|
||||||
|
LD HL,(5C61h) ; HL - ç «® à ¡ ®¡«
|
||||||
|
|
||||||
|
PUSH BC
|
||||||
|
PUSH HL
|
||||||
|
|
||||||
|
CALL C_1655 ; ¯®«ãç¨âì à ¡®çãî ¯ ¬ïâì
|
||||||
|
|
||||||
|
POP DE
|
||||||
|
PUSH DE ; ç «® à ¡ ®¡«
|
||||||
|
|
||||||
|
LD BC,LEN_P_M ; ¤«¨ ¯à®£à ¬¬ë ¬¥î
|
||||||
|
LD HL,MENU_128 ; á ¬ ¯à®£à ¬¬
|
||||||
|
LDIR ; ¯à®£à ¬¬ ¯¥à¥¬¥é¥ . DE - ¬¥áâ® ¤«ï MENU
|
||||||
|
POP BC
|
||||||
|
PUSH BC ; ç «® ¯à®£à ¬¬ë
|
||||||
|
|
||||||
|
PUSH DE ; á®åà ¨âì ¬¥áâ® ¤«ï MENU
|
||||||
|
LD DE,MN_128_S ; ¤ ë¥ ¤«ï shifter
|
||||||
|
CALL SHIFTER ; ¨§¬¥¨âì ¤ ë¥ ¢ ᮮ⢥âá⢨¨ á ¯®«®¦¥¨¥¬ ¢ MEM
|
||||||
|
POP DE ; ¢¥àãâì ¬¥áâ® ¤«ï MENU
|
||||||
|
|
||||||
|
POP HL ; ç «® ¯à®£à ¬¬ë
|
||||||
|
POP IX ; ¤«¨ ¤ ëå
|
||||||
|
POP BC ; ¤«¨ ¬¥î
|
||||||
|
EX (SP),HL ; HL - ¬¥î
|
||||||
|
LDIR ; ¯¥à¥¬¥áâ¨âì ¤ ë¥ MENU
|
||||||
|
|
||||||
|
POP HL ; ¤à¥á ¯à®£à ¬¬ë MENU
|
||||||
|
PUSH HL
|
||||||
|
PUSH IX ; ¤«¨ à ¡. ®¡«
|
||||||
|
CALL JP_HL ; ¢ë§®¢ ¯à®£à ¬¬ë MENU
|
||||||
|
POP BC ; ¢¥àãâì ¤«¨ã à ¡ ®¡«
|
||||||
|
POP HL ; ¨ ç « ¯à®£à ¬¬ë
|
||||||
|
|
||||||
|
PUSH AF ; á®åà ¨âì ®¬¥à ¢ë¡®à
|
||||||
|
CALL C_19E8 ; ®á¢®¡®¤¨âì ¯ ¬ïâì !!
|
||||||
|
POP AF ; ¢¥àãâì ®¬¥à ¢ë¡®à
|
||||||
|
POP IX
|
||||||
|
RET ; ¢®§¢à â ¨§ ¯à®£à ¬¬ë RUN_MENU
|
||||||
|
|
||||||
|
;**************************************
|
||||||
|
; 128k MENU
|
||||||
|
;**************************************
|
||||||
|
MENU_PROG EQU 25B9h
|
||||||
|
SWAP_ROM EQU 5B00h
|
||||||
|
NEW_SP EQU 1F45h
|
||||||
|
RET_SP EQU 1F20h
|
||||||
|
|
||||||
|
;**************************************
|
||||||
|
; <20>à®£à ¬¬ ¢ë§®¢ MENU_128 ¨§ އ“.
|
||||||
|
;**************************************
|
||||||
|
MN_128_S:
|
||||||
|
DB SH_1-MENU_128+1
|
||||||
|
DB SH_2-MENU_128+1
|
||||||
|
DB SH_3-MENU_128+1
|
||||||
|
DB SH_4-MENU_128+1
|
||||||
|
DB SH_5-MENU_128
|
||||||
|
DB SH_6-MENU_128
|
||||||
|
DB SH_7-MENU_128
|
||||||
|
DB SH_8-MENU_128
|
||||||
|
DB SH_9-MENU_128
|
||||||
|
DB SH_A-MENU_128
|
||||||
|
DB SH_B-MENU_128
|
||||||
|
DB SH_C-MENU_128
|
||||||
|
DB 0
|
||||||
|
;**************************************
|
||||||
|
; <20>â ¯à®£à ¬¬ ¯¥à¥¬¥é ¥âáï ¢ ®§ã
|
||||||
|
;**************************************
|
||||||
|
MENU_128:
|
||||||
|
LD A,0
|
||||||
|
OUT (SYS_PORT_OFF),A
|
||||||
|
CALL SWAP_ROM
|
||||||
|
CALL NEW_SP
|
||||||
|
|
||||||
|
SH_1: LD DE,MENU_DAT-MENU_128
|
||||||
|
LD HL,0F6EAh
|
||||||
|
LD BC,4
|
||||||
|
LDIR
|
||||||
|
|
||||||
|
SH_2: LD HL,MENU_128_E-MENU_128
|
||||||
|
LD (0F6EAh),HL
|
||||||
|
SH_3: LD HL,MENU_128_E2-MENU_128
|
||||||
|
LD (0F6ECh),HL
|
||||||
|
JP MENU_PROG
|
||||||
|
|
||||||
|
RET_M EQU $-MENU_128
|
||||||
|
SH_4: LD HL,MENU_DAT-MENU_128
|
||||||
|
LD DE,0F6EAh
|
||||||
|
LD BC,4
|
||||||
|
LDIR
|
||||||
|
|
||||||
|
CALL RET_SP
|
||||||
|
CALL SWAP_ROM
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,0
|
||||||
|
OUT (CNF_PORT),A
|
||||||
|
EX AF,AF'
|
||||||
|
RET
|
||||||
|
MENU_DAT:
|
||||||
|
DW 0,0
|
||||||
|
MENU_128_E:
|
||||||
|
DB 8
|
||||||
|
DB 0
|
||||||
|
SH_5: DW RET_M
|
||||||
|
DB 1
|
||||||
|
SH_6: DW RET_M
|
||||||
|
DB 2
|
||||||
|
SH_7: DW RET_M
|
||||||
|
DB 3
|
||||||
|
SH_8: DW RET_M
|
||||||
|
DB 4
|
||||||
|
SH_9: DW RET_M
|
||||||
|
DB 5
|
||||||
|
SH_A: DW RET_M
|
||||||
|
DB 6
|
||||||
|
SH_B: DW RET_M
|
||||||
|
DB 7
|
||||||
|
SH_C: DW RET_M
|
||||||
|
MENU_128_E2:
|
||||||
|
|
||||||
|
LEN_P_M EQU $-MENU_128
|
||||||
|
|
||||||
|
;**************************************
|
||||||
|
; RST 30 - ¯®«ã票¥ BC SPACES á ¤à¥á HL
|
||||||
|
; 19E8h - ®á¢®¡®¦¤¥¨¥ BC spaces á ¤à¥á HL
|
||||||
|
|
||||||
|
; HL - à ¡. ï祩ª
|
||||||
|
; BC - ¤à¥á ¯à®£à ¬¬ë
|
||||||
|
; DE - ¤à¥á ¤ ëå ¤«ï ¯¥à¥¬¥é¥¨ï
|
||||||
|
|
||||||
|
SHIFTER:
|
||||||
|
LD A,(DE) ; (DE) - SHIFT IN PROG
|
||||||
|
AND A
|
||||||
|
RET Z
|
||||||
|
INC DE
|
||||||
|
LD L,A
|
||||||
|
LD H,0
|
||||||
|
|
||||||
|
ADD HL,BC ; HL - ADRESS FOR SHIFT
|
||||||
|
LD A,(HL) ; (HL)=(HL)+BC
|
||||||
|
ADD A,C
|
||||||
|
LD (HL),A
|
||||||
|
INC HL
|
||||||
|
LD A,(HL)
|
||||||
|
ADC A,B
|
||||||
|
LD (HL),A
|
||||||
|
JR SHIFTER
|
||||||
|
|
||||||
|
;*******************************************
|
||||||
|
; Œ…<C592>ž : ¡ ©â 1 - ¤«ï १ã«ìâ â
|
||||||
|
; ¡ ©â 2 - ç¨á«® ¯ãªâ®¢ +1
|
||||||
|
; §¢ ¨¥ ¬¥î, ª®¤ 0FFh ( COPY )
|
||||||
|
; ¯ãªâë ¬¥î ®ª®ç ¨¥ ¡ ©â®¬ á
|
||||||
|
; ãáâ, 7-¬ ¡¨â®¬ + ¯ãáâ ï áâப !!
|
||||||
|
;*******************************************
|
||||||
|
BASIC_MENU:
|
||||||
|
; LD A,(HL)
|
||||||
|
; CP 'S'
|
||||||
|
; JP Z,SET_SYSTEM
|
||||||
|
|
||||||
|
LD DE,(CH_ADR)
|
||||||
|
PUSH DE
|
||||||
|
LD (CH_ADR),HL
|
||||||
|
CALL_48X 1C8Ch ; SYMBOL VAR
|
||||||
|
CALL_48X 2BF1h ; input txt !!!
|
||||||
|
; DE - adr
|
||||||
|
; BC - len
|
||||||
|
PUSH DE
|
||||||
|
PUSH BC
|
||||||
|
INC DE
|
||||||
|
CALL TST_M
|
||||||
|
JR C,NO_EXE_M
|
||||||
|
CALL RUN_MENU
|
||||||
|
LD (IY+0),255
|
||||||
|
NO_EXE_M:
|
||||||
|
POP BC
|
||||||
|
POP DE
|
||||||
|
LD (DE),A
|
||||||
|
POP HL
|
||||||
|
LD (CH_ADR),HL
|
||||||
|
JP SW_ROM
|
||||||
|
TST_M:
|
||||||
|
PUSH DE
|
||||||
|
PUSH BC
|
||||||
|
EX DE,HL
|
||||||
|
LD D,(HL)
|
||||||
|
INC D
|
||||||
|
LD A,255
|
||||||
|
CPIR
|
||||||
|
JR NZ,ERR_TST_M
|
||||||
|
LOOP_TST_M:
|
||||||
|
LD A,B
|
||||||
|
OR C
|
||||||
|
JR Z,ERR_TST_M
|
||||||
|
|
||||||
|
BIT 7,(HL)
|
||||||
|
INC HL
|
||||||
|
DEC BC
|
||||||
|
JR Z,LOOP_TST_M
|
||||||
|
DEC D
|
||||||
|
JR NZ,LOOP_TST_M
|
||||||
|
POP BC
|
||||||
|
POP DE
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
ERR_TST_M:
|
||||||
|
POP BC
|
||||||
|
POP DE
|
||||||
|
LD A,255
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
|
||||||
|
;**************************************
|
||||||
|
|
||||||
|
CALL_DOS_MOVE:
|
||||||
|
LD DE,5C00H-DOS_PROG_LEN
|
||||||
|
LD HL,DOS_PROG
|
||||||
|
LD BC,DOS_PROG_LEN
|
||||||
|
LDIR
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
; HL - ¤à¥á ª®¬ ¤ë, BC - ¤«¨ ª®¬ ¤ë
|
||||||
|
CALL_DOS1:
|
||||||
|
LD C,(HL)
|
||||||
|
INC HL
|
||||||
|
LD B,0
|
||||||
|
LD DE,(5C59H)
|
||||||
|
LD (5C5DH),DE
|
||||||
|
LDIR
|
||||||
|
LD (5C61H),DE
|
||||||
|
LD (5C63H),DE
|
||||||
|
LD (5C65H),DE
|
||||||
|
CALL CALL_DOS_MOVE
|
||||||
|
JP 5C00H-DOS_PROG_LEN
|
||||||
|
CALL_DOS:
|
||||||
|
PUSH HL
|
||||||
|
PUSH DE
|
||||||
|
PUSH BC
|
||||||
|
PUSH AF
|
||||||
|
CALL CALL_DOS_MOVE
|
||||||
|
LD A,13H
|
||||||
|
LD (5C00H-DOS_PROG_LEN+DOS_PROG_A),A
|
||||||
|
POP AF
|
||||||
|
POP BC
|
||||||
|
POP DE
|
||||||
|
POP HL
|
||||||
|
JP 5C00H-DOS_PROG_LEN
|
||||||
|
|
||||||
|
DOS_PROG:
|
||||||
|
PUSH AF
|
||||||
|
XOR A
|
||||||
|
OUT (SYS_PORT_OFF),A
|
||||||
|
POP AF
|
||||||
|
CALL 3D03H
|
||||||
|
DOS_PROG_A EQU $-DOS_PROG-1
|
||||||
|
PUSH AF
|
||||||
|
LD A,0
|
||||||
|
OUT (CNF_PORT),A
|
||||||
|
POP AF
|
||||||
|
RET
|
||||||
|
DOS_PROG_LEN EQU $-DOS_PROG
|
||||||
|
|
||||||
|
CONT_PROG:
|
||||||
|
LD HL,1AFDH
|
||||||
|
PUSH HL
|
||||||
|
LD HL,5B00H
|
||||||
|
PUSH HL
|
||||||
|
LD DE,5C71H
|
||||||
|
LD BC,1
|
||||||
|
LD A,0E8H
|
||||||
|
LD (DE),A
|
||||||
|
JP SW_ROM
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
87
ZX_EXP2.ASM
Normal file
87
ZX_EXP2.ASM
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
;
|
||||||
|
; EXPANSION VER 3.00 (C) 1997 ELSY Co.
|
||||||
|
DEVICE ZXSPECTRUM128
|
||||||
|
ORG 0
|
||||||
|
|
||||||
|
INCLUDE 'INC/SPRINT00.INC' ; ª®áâ âë, ¬ ªà®áë..
|
||||||
|
;******************************
|
||||||
|
; ***** BEGIN EXPANSION *****
|
||||||
|
;******************************
|
||||||
|
START:
|
||||||
|
DI
|
||||||
|
HALT
|
||||||
|
;***************************
|
||||||
|
BLOCK #10-$,255
|
||||||
|
RET
|
||||||
|
;***************************
|
||||||
|
BLOCK #38-$,255
|
||||||
|
EI
|
||||||
|
RETI
|
||||||
|
;***************************
|
||||||
|
BLOCK #66-$,#C9
|
||||||
|
RETN
|
||||||
|
|
||||||
|
;***************************
|
||||||
|
BLOCK #100-$,255
|
||||||
|
INCLUDE 'EXP/EXP_HDD.ASM'
|
||||||
|
; INCLUDE 'EXP_KBD.ASZ'
|
||||||
|
|
||||||
|
;GLOBAL_RESET:
|
||||||
|
;GLOBAL_RESET_ALL:
|
||||||
|
; LD A,0
|
||||||
|
; OUT (0FDH),A
|
||||||
|
; LD A,40H
|
||||||
|
; OUT (0FDH),A
|
||||||
|
; LD A,0
|
||||||
|
; OUT (CNF_PORT),A
|
||||||
|
; LD HL,0
|
||||||
|
; PUSH HL
|
||||||
|
; DI
|
||||||
|
; RET
|
||||||
|
|
||||||
|
BLOCK #3FD0-$,255
|
||||||
|
|
||||||
|
PUSH AF
|
||||||
|
LD A,D_ROM16OFF
|
||||||
|
OUT (SYS_PORT_ON),A
|
||||||
|
POP AF
|
||||||
|
HD_CMD_XR_RET:
|
||||||
|
RET
|
||||||
|
|
||||||
|
HD_CMD_XR:
|
||||||
|
JP HD_CMD
|
||||||
|
|
||||||
|
;************************
|
||||||
|
BLOCK #3FE0-$,255
|
||||||
|
SND_TEST_RET:
|
||||||
|
LD A,D_ROM16OFF
|
||||||
|
OUT (SYS_PORT_OFF),A
|
||||||
|
JP SND_TEST_RET
|
||||||
|
|
||||||
|
;***************************
|
||||||
|
BLOCK #3FE8-$,255
|
||||||
|
HD_EXP_RET:
|
||||||
|
PUSH AF
|
||||||
|
LD A,D_ROM16OFF
|
||||||
|
OUT (SYS_PORT_ON),A
|
||||||
|
JP HD_EXP_EXE
|
||||||
|
|
||||||
|
BLOCK #3FF0-$,255
|
||||||
|
|
||||||
|
HD_DOS_RET:
|
||||||
|
PUSH AF
|
||||||
|
DI
|
||||||
|
LD A,D_ROM16OFF
|
||||||
|
OUT (SYS_PORT_OFF),A
|
||||||
|
JR HD_CMD_XR
|
||||||
|
|
||||||
|
EXP_FNS_RET:
|
||||||
|
PUSH AF
|
||||||
|
LD A,D_ROM16OFF
|
||||||
|
OUT (SYS_PORT_OFF),A
|
||||||
|
JP HD_CMD_XR_RET
|
||||||
|
|
||||||
|
;******************************************
|
||||||
|
BLOCK #4000-$,255
|
||||||
|
;
|
||||||
|
;
|
||||||
618
inc/SPRINT00.INC
Normal file
618
inc/SPRINT00.INC
Normal file
@ -0,0 +1,618 @@
|
|||||||
|
; ; .LION EQU 0
|
||||||
|
; ; .FLEX EQU 1
|
||||||
|
; ; .IBMK EQU 1
|
||||||
|
; ; .PROJ1 EQU 0
|
||||||
|
; ; .PROJ2 EQU 0
|
||||||
|
; ; .PROJ3 EQU 1
|
||||||
|
; ; .PROJ4 EQU 1
|
||||||
|
; ; .PAL EQU 1
|
||||||
|
|
||||||
|
; FastRAM_ON EQU #FB ; ‚ª«î票¥ ªíè IN A,(FastRAM_ON) - ¯à¨¡¨â® £¢®§¤ï¬¨ ¢ ª®ä¥
|
||||||
|
; FastRAM_OFF EQU #7B ; Žâª«î票¥ ªíè IN A,(FastRAM_OFF) - ¯à¨¡¨â® £¢®§¤ï¬¨ ¢ ª®ä¥
|
||||||
|
; FastRam_BANK0 EQU #5C ; <20>¥à¥ª«î票¥ áâà ¨æ ªíè ¯à¨ FastRAM_ON ¢ ã«¥¢®¬ ®ª¥ (bit0..1)
|
||||||
|
; ROM_BANK0 EQU #5C ; <20>¥à¥ª«î票¥ áâà ¨æ <20>‡“ ¯à¨ FastRAM_OFF ¢ ã«¥¢®¬ ®ª¥ (bit0..3)
|
||||||
|
; ; ; bit4 - Write-Enable (0 - no Write; 1 - Write)
|
||||||
|
|
||||||
|
; ;ELCOM256 EQU 1 ; ०¨¬ ELCOM-256
|
||||||
|
|
||||||
|
; ;IF ELCOM256 = 1
|
||||||
|
; Spec_Page EQU #41 ; áâà ¨æ ¤«ï ¯¥à¥å¢ â à¥á¥â ¨ ¥éñ 祣®-â®
|
||||||
|
DCP_PAGE EQU #40 ; áâà ¨æ ¯®à⮢
|
||||||
|
; Port_All_Mode EQU #204E
|
||||||
|
; PORT_JOYSTICK EQU 0FFh
|
||||||
|
|
||||||
|
D_TBON EQU 3 ; ¤ ë¥ ¤«ï ¢ª«î票ï TURBO
|
||||||
|
D_TBOFF EQU 2 ; ¤ ë¥ ¤«ï ¢ª«î票ï TURBO
|
||||||
|
D_ROM16ON EQU 1
|
||||||
|
D_ROM16OFF EQU 0
|
||||||
|
CNF_0 EQU 04h
|
||||||
|
CNF_1 EQU 0Ch
|
||||||
|
CNF_2 EQU 14h
|
||||||
|
; CNF_3 EQU 1Ch
|
||||||
|
CNF_512 EQU 80h ; ¢ª«î票¥ Pentagon 128
|
||||||
|
|
||||||
|
CBL_DIR EQU 78 ; ¯®àâ ã¯à ¢«¥¨ï COVOX-Blaster
|
||||||
|
; ; bit 7 - 1 ¢ª«îç¨âì CBL
|
||||||
|
; COVOX_PORT EQU 79
|
||||||
|
|
||||||
|
; ;ELSE
|
||||||
|
; ;D_TBON EQU 03h ; ¤ ë¥ ¤«ï ¢ª«î票ï TURBO
|
||||||
|
; ;D_TBOFF EQU 02h ; ¤ ë¥ ¤«ï ¢ª«î票ï TURBO
|
||||||
|
; ;D_ROM16ON EQU 40h
|
||||||
|
; ;D_ROM16OFF EQU 00h
|
||||||
|
; ;CNF_0 EQU 04h
|
||||||
|
; ;CNF_1 EQU 0Ch
|
||||||
|
; ;CNF_2 EQU 14h
|
||||||
|
; ;CNF_3 EQU 1Ch
|
||||||
|
; ;ENDIF
|
||||||
|
|
||||||
|
; SPRINTER EQU 4 ; ‚…<E2809A>‘ˆŸ !!!
|
||||||
|
; ISD_WARM EQU 3
|
||||||
|
; ISD_COLD EQU 0
|
||||||
|
; IS_KEY EQU 40h ; „€<E2809E><E282AC>›… „‹Ÿ ‚›‚Ž„€ ‚ <20>Ž<EFBFBD>’ <20><>ˆ ‚Š‹ž—…<E28094>ˆˆ IS-DOS
|
||||||
|
; IS_RAM_ADR EQU 5BC0h ; €„<E282AC>…‘ ‡€ƒ<E282AC>“‡Šˆ <20><>Žƒ<C5BD>€ŒŒ› <20>…<EFBFBD>…•Ž„€ ‚ IS-DOS
|
||||||
|
; TB_WAITES EQU 00H ; WAITë ¤«ï TURBO-MODE
|
||||||
|
; NTB_WAITES EQU 00H ; WAITë ¤«ï neTURBO-MODE
|
||||||
|
; IS_WAITES EQU 00H ; WAITë ¤«ï IS-DOS
|
||||||
|
; ;****************************************
|
||||||
|
; ;SYS_PORT_ON EQU 07DH
|
||||||
|
; ;SYS_PORT_OFF EQU 03DH
|
||||||
|
;SYS_PORT_ON EQU CNF_PORT ;07CH
|
||||||
|
SYS_PORT_ON EQU #7C
|
||||||
|
SYS_PORT_OFF EQU #3C
|
||||||
|
; Port_VSYNC EQU #BD ; #61 - 320Lines/49Hz, #41 - 312Lines/50Hz
|
||||||
|
; .SET_320L EQU #41
|
||||||
|
; .SET_312L EQU #61
|
||||||
|
|
||||||
|
|
||||||
|
; PAL_V_PAGE EQU 09EH
|
||||||
|
; PAL_SCP EQU 01EH
|
||||||
|
|
||||||
|
; ;CNF_PAGE EQU 040H
|
||||||
|
SYS_PAGE EQU 0FEH
|
||||||
|
; MODE_PAGE EQU 0FCH
|
||||||
|
; ;SCR_PAGE EQU 0FDH
|
||||||
|
; ;PAL_PAGE EQU 0FDH
|
||||||
|
|
||||||
|
; KBD_COM EQU 1Bh
|
||||||
|
; KBD_DAT EQU 1Ah
|
||||||
|
|
||||||
|
COM_B EQU 1Bh
|
||||||
|
; DAT_B EQU 1Ah
|
||||||
|
COM_A EQU 19h
|
||||||
|
; DAT_A EQU 18h
|
||||||
|
|
||||||
|
LPT1_D EQU 1CH
|
||||||
|
LPT1_C EQU 1DH
|
||||||
|
LPT2_D EQU 1EH
|
||||||
|
LPT2_C EQU 1FH
|
||||||
|
|
||||||
|
STC0_C EQU 10H
|
||||||
|
; STC1_C EQU 11H
|
||||||
|
; STC2_C EQU 12H
|
||||||
|
; STC3_C EQU 13H
|
||||||
|
|
||||||
|
; RAMD_LET EQU ('R'-'A')
|
||||||
|
|
||||||
|
; P_KBD_OUT EQU 0F8H
|
||||||
|
; P_KBD_IN EQU 0FEH
|
||||||
|
|
||||||
|
; RESET_PAGE EQU #A0
|
||||||
|
; ;----------[CMOS Registers]-------------
|
||||||
|
; CMOSREGS.ScreenSET EQU #1A
|
||||||
|
; ; %0000 1111 - COLOR STYLE For Setup
|
||||||
|
; ; %0011 0000 - Frame Int (Default/Pentagon/Scorpion/Original)
|
||||||
|
; ; %1100 0000 - Screen V-Sinc (Default/312 lines 50 HZ/320 Lines 49 Hz)
|
||||||
|
; SCREEN_HZ EQU #C0
|
||||||
|
; SCREEN_INT EQU #30
|
||||||
|
; ;---------------------------------------
|
||||||
|
; ;***************************************
|
||||||
|
; ;HD_HEADS EQU 5
|
||||||
|
; HD_CS EQU 0A0H
|
||||||
|
|
||||||
|
; ;HD_S_P_T EQU 17
|
||||||
|
; ;HD_S_X_H EQU (HD_S_P_T * HD_HEADS) ; ??? ç¨á«® ᥪâ®à®¥ 樫¨¤à¥
|
||||||
|
|
||||||
|
P_DATS EQU 050H ; READ/WRITE INIR/OTIR
|
||||||
|
|
||||||
|
P_ERR EQU 051H ; READ
|
||||||
|
; P_PREC EQU 151H ; WRITE
|
||||||
|
|
||||||
|
P_S_CNT EQU 152H ;
|
||||||
|
P_S_NUM EQU 153H
|
||||||
|
P_C_LOW EQU 154H
|
||||||
|
P_C_HIG EQU 155H ;<-\
|
||||||
|
P_HD_CS EQU 4152H ;<-/
|
||||||
|
|
||||||
|
P_HDST EQU 4053H ; READ
|
||||||
|
P_CMD EQU 4153H ; WRITE
|
||||||
|
|
||||||
|
; P_HD3F6 EQU 4154H ; WRITE 3F6
|
||||||
|
; P_HD3F7 EQU 4055H ; READ 3F7
|
||||||
|
|
||||||
|
; ;***************************************
|
||||||
|
CMOS_DRD equ 0FFBDh
|
||||||
|
CMOS_DWR equ 0BFBDh
|
||||||
|
CMOS_AWR equ 0DFBDh
|
||||||
|
ISA_PORT equ 09FBDh
|
||||||
|
|
||||||
|
; ;***************************************
|
||||||
|
SEC_SIZE EQU 11
|
||||||
|
CLAST_SIZE EQU 13
|
||||||
|
RESERV_SECS EQU 14
|
||||||
|
FATS_NUM EQU 16
|
||||||
|
FLS_NUM EQU 17
|
||||||
|
; S_P_D EQU 19
|
||||||
|
FORM_CODE EQU 21
|
||||||
|
S_P_F EQU 22
|
||||||
|
S_P_T EQU 24
|
||||||
|
H_P_S EQU 26
|
||||||
|
SPECIAL_SECS EQU 28
|
||||||
|
FAT_ID EQU 36H
|
||||||
|
; ;***************************************
|
||||||
|
|
||||||
|
; SYSTEM_ID EQU 0C020H
|
||||||
|
|
||||||
|
SYS_SP EQU 0C0FEH ; „Ž<E2809E>Ž‹<C5BD>ˆ’…‹œ<E280B9>›‰ ‘’…Š
|
||||||
|
DISK_TYPE EQU 0C100H ; ¯¥à¥ ¤à¥á æ¨ï ¤¨áª®¢
|
||||||
|
COPY_PAGE0 EQU 0C104H ; ª®¯¨¨ § 票© ¯®à⮢ áâà ¨æ
|
||||||
|
COPY_PAGE1 EQU 0C105H
|
||||||
|
COPY_PAGE2 EQU 0C106H
|
||||||
|
COPY_PAGE3 EQU 0C107H
|
||||||
|
; RAMD_VARS EQU 0C108H ; ¯¥à¥¬¥ë¥ RAM-¤¨áª®¢
|
||||||
|
; A_RAMD_VARS EQU 0C118H ; ⥪ã騩 RAM-Disk
|
||||||
|
SP_SAVE EQU 0C11AH ; ¬¥áâ® ¤«ï á®åà ¥¨ï ¤à¥á á⥪
|
||||||
|
; ERR_SAVE EQU 0C11CH
|
||||||
|
COPY_RGADR EQU 0C11DH
|
||||||
|
; RAM_MSD EQU 0C11EH ; áâà ¨æ ¤«ï à ¡®âë ¢ MS-DOS
|
||||||
|
MSD_SECS EQU 0C11FH ; —¨á«® ᥪâ®à®¢ ¢ MS-DOS
|
||||||
|
; MSD_NAME EQU 0C120H ; €¤à¥á ¨¬¥¨ ©¤¥®£® ä ©«
|
||||||
|
; MSD_FAT_SEC EQU 0C122H ; ç «ìë© á¥ªâ®à FAT
|
||||||
|
; INT_ADRESS EQU #C124 ; ¤à¥á ®¡à ¡®â稪 ¯à¥àë¢ ¨ï
|
||||||
|
; INT_PAGE EQU #C126 ; áâà ¨æ á ®¡à ¡®â稪®¬ ¯à¥àë¢ ¨ï
|
||||||
|
; INT_ID EQU #C127 ; ¥á«¨ = #AA - § ç¨âì ®¡à ¡®â稪 ãáâ ®¢«¥
|
||||||
|
DS_1440 EQU 0C128H ; ä« £¨ ¯¥à¥ª«î票ï 720/1440
|
||||||
|
F_P_S EQU 0C129H ; ç¨á«® ä ©«®¢ëå § ¯¨á¥© ¢ ᥪâ®à¥
|
||||||
|
S_P_C EQU 0C12AH ; ç¨á«® ᥪâ®à®¢ ª â «®£
|
||||||
|
COUNT_FL EQU 0C12BH ; áç¥â稪 ä ©«®¢ ¢ ᥪâ®à¥
|
||||||
|
COUNT_SEC EQU 0C12CH ; áç¥â稪 ᥪâ®à®¢ ¢ ª â «®£¥
|
||||||
|
; C_P_B EQU 0C12DH ; ç¨á«® ª« áâ¥à®¢ ¡«®ª އ“
|
||||||
|
; ;CLASTER_LEN EQU 0C12EH ; ¤«¨ ª« áâ¥à ¢ ¡ ©â å
|
||||||
|
FAT_FLAG EQU 0C130H ; FAT ä« £ + FAT sector
|
||||||
|
MSD_CONT_SEC EQU 0C132H ; ⥪ã騩 ᥪâ®à ¤«ï MS-DOS
|
||||||
|
MSD_CONT_SEC2 EQU 0C134H
|
||||||
|
S_X_H EQU 0C136H ; ª®«¨ç¥á⢮ ᥪâ®à®¢ 樫¨¤à¥
|
||||||
|
CONFIG_ALL EQU 0C138H ; ®¯¨á â¥«ì ª®ä¨£ãà æ¨¨ 2 ¡ ©â
|
||||||
|
CONFIG_DE EQU 0C13AH ; ®¯¨á â¥«ì ª®ä¨£ãà æ¨¨ 2 ¡ ©â
|
||||||
|
CONFIG_BYTE EQU 0C13EH ; ¡ ©â ª®ä¨£ãà æ¨¨
|
||||||
|
|
||||||
|
WIN_MAP_SC EQU 0C140H
|
||||||
|
; WIN_TAB_SC EQU 0C142H
|
||||||
|
; WIN_SAV_HL EQU 0C144H
|
||||||
|
; WIN_SAV_DE EQU 0C146H
|
||||||
|
; WIN_SAV_BC EQU 0C148H
|
||||||
|
WIN_ZG EQU 0C14AH
|
||||||
|
; WIN_PLACE_WIN EQU 0C14CH
|
||||||
|
; WIN_GR_MAP EQU 0C14EH
|
||||||
|
|
||||||
|
SYS_WORK1 EQU 0C150H
|
||||||
|
; SYS_WORK2 EQU 0C152H
|
||||||
|
; SYS_WORK3 EQU 0C154H
|
||||||
|
; SYS_WORK4 EQU 0C156H
|
||||||
|
|
||||||
|
; WIN_MAP_LAB1 EQU 0C158H
|
||||||
|
WIN_MODE_SH EQU 0C15CH
|
||||||
|
WIN_MODE_SC EQU 0C15EH
|
||||||
|
|
||||||
|
MSD_FAT_SEC EQU 0C160H ; ç «ìë© á¥ªâ®à FAT
|
||||||
|
MSD_FAT_SEC2 EQU 0C162H ; ç «ìë© á¥ªâ®à FAT
|
||||||
|
MSD_CAT_SEC EQU 0C164H ; ç «ìë© á¥ªâ®à CAT
|
||||||
|
MSD_CAT_SEC2 EQU 0C166H ; ç «ìë© á¥ªâ®à CAT
|
||||||
|
MSD_DAT_SEC EQU 0C168H ; ç «ìë© á¥ªâ®à DAT
|
||||||
|
MSD_DAT_SEC2 EQU 0C16AH ; ç «ìë© á¥ªâ®à DAT
|
||||||
|
CLASTER_LEN EQU 0C16CH ; ¤«¨ ª« áâ¥à ¢ ¡ ©â å
|
||||||
|
CLASTER_LEN2 EQU 0C16EH ; ¤«¨ ª« áâ¥à ¢ ¡ ©â å
|
||||||
|
|
||||||
|
; ;---------------------------------------------
|
||||||
|
; ; vsync:
|
||||||
|
; ; bit0 1 - 320L, 0 - 312L
|
||||||
|
; ; bit1 1 - no waits, 0 - original waits
|
||||||
|
; VSyncAndWaits EQU #C170
|
||||||
|
; ;---------------------------------------------
|
||||||
|
; ;CMOS_FLAG_1 EQU 0C170H
|
||||||
|
|
||||||
|
; GR_BIT_END EQU 7
|
||||||
|
|
||||||
|
; S_BIT_END EQU 7
|
||||||
|
; S_BIT_LIN EQU 6
|
||||||
|
; S_BIT_MOD EQU 5
|
||||||
|
|
||||||
|
; BIT_1440 EQU 1
|
||||||
|
BIT_MASK_1440 EQU 00000010B
|
||||||
|
|
||||||
|
RAMD_KEYS EQU 0C180H ; ª«îç¨ RAM-Disks
|
||||||
|
RAMD_KEY_NUM EQU 16
|
||||||
|
|
||||||
|
; LIB_TABLE EQU 0C1A0H ; â ¡«¨æë librares 32 ¡ ©â
|
||||||
|
; ; +0 ¡¨¡«¨®â¥ª DOS
|
||||||
|
; ;
|
||||||
|
; HDD_INI_TABLE EQU 0C1C0H ; â ¡«¨æë ¤«ï ide ãáâனá⢠32 ¡ ©â
|
||||||
|
; ; 0 - ª®¯¨ï DRV_HEAD
|
||||||
|
; ; 1 - ᥪâ®à®¢ ¤®à®¦ª¥
|
||||||
|
; ; 2 - ç¨á«® £®«®¢®ª
|
||||||
|
; ; 3 - ª®«¨ç¥á⢮ 樫¨¤à®¢ ¬«.
|
||||||
|
; ; 4 - ª®«¨ç¥á⢮ 樫¨¤à®¢ áâ à訩.
|
||||||
|
; ; 5 - ᥪâ®à®¢ 樫¨¤à ¬«.
|
||||||
|
; ; 6 - ᥪâ®à®¢ 樫¨¤à áâ àè.
|
||||||
|
; ; 7 - reserv - type
|
||||||
|
; ;
|
||||||
|
; FDD_INI_TABLE EQU 0C1E0H ; â ¡«¨æë ¤«ï FDD ãáâனá⢠32 ¡ ©â
|
||||||
|
|
||||||
|
RAMD_FAT EQU 0C200H ; à ᯮ«®¦¥¨¥ ¡«®ª®¢ RAM-Disk-®¢
|
||||||
|
|
||||||
|
MS_BPB EQU 0C400H ; ¡ãä¥à BPB
|
||||||
|
MS_DIR EQU 0C800H ; ¡ãä¥à DIR sector
|
||||||
|
MS_FAT EQU 0CC00H ; ¡ãä¥à FAT sector
|
||||||
|
; MS_BUF EQU 0D000H ; ¡ãä¥à DAT sector
|
||||||
|
HD_IDF_ADR EQU #C600
|
||||||
|
; .heads EQU HD_IDF_ADR+6
|
||||||
|
; .sectors EQU HD_IDF_ADR+12
|
||||||
|
; .sec_cyl EQU HD_IDF_ADR+4
|
||||||
|
|
||||||
|
|
||||||
|
WIN_MAP_IX EQU 0E000H ; ¤ ë¥ ª àâ ®ª®
|
||||||
|
|
||||||
|
TASK_DATA EQU 0EC00H ; ¤ ë¥ ¤«ï § ¤ ç
|
||||||
|
|
||||||
|
; ; ***** - Žª®ë¥ ¯¥à¥¬¥ë¥ - *****
|
||||||
|
|
||||||
|
WIN_SIZE_H EQU 0 ; £®à¨§®â «ìë© à §¬¥à ¢ § ª®¬¥áâ å
|
||||||
|
WIN_SIZE_V EQU 1 ; ¢¥à⨪ «ìë© à §¬¥à ¢ § ª®¬¥áâ å
|
||||||
|
WIN_PLACE_H EQU 2 ; ¯®«®¦¥¨¥ ¯® £®à¨§®à «¨, ¢ § ª®¬¥áâ å
|
||||||
|
WIN_PLACE_V EQU 3 ; ¯®«®¦¥¨¥ ¯® ¢¥à⨪ «¨ ¢ § ª®¬¥áâ å
|
||||||
|
WIN_MODE EQU 4 ; ०¨¬ § ª®¬¥áâ
|
||||||
|
WIN_MODE_S EQU 5 ; ¤®¯®«¨â¥«ìë© à¥¦¨¬
|
||||||
|
; ; ¡¨â 0 - Sp-SCR,
|
||||||
|
WIN_GR_X EQU 6 ; ¯®«®¦¥¨¥ ¯® X ¢ ¯®«¥ £à 䨪¨ (¯® § ª®¬¥áâ)
|
||||||
|
WIN_GR_Y EQU 7 ; ¯®«®¦¥¨¥ ¯® Y ¢ ¯®«¥ £à 䨪¨ (¯® § ª®¬¥áâ)
|
||||||
|
|
||||||
|
WIN_HL EQU 8 ; á®åà ¥¨¥ HL
|
||||||
|
WIN_BC EQU 10 ; á®åà ¥¨¥ BC
|
||||||
|
WIN_DE EQU 12 ; á®åà ¥¨¥ DE
|
||||||
|
WIN_V_BEG EQU 14 ; ç «® ®ª ¯® ¢¥à⨪ «¨
|
||||||
|
WIN_V_END EQU 15 ; ª®¥æ ®ª ¯® ¢¥à⨪ «¨
|
||||||
|
WIN_H_BEG EQU 16 ; ç «® ®ª ¯® £®à¨§®â «¨
|
||||||
|
WIN_H_END EQU 17 ; ª®¥æ ®ª ¯® £®à¨§®â «¨
|
||||||
|
WIN_SIZE_REL EQU 18 ; ॠ«ìë© à §¬¥à ¢ ᨬ¢®« å
|
||||||
|
WIN_MODE_E EQU 19 ; ¤®¯®«¨â¥«ìë© à¥¦¨¬ íªà
|
||||||
|
WIN_WORK_1 EQU 20 ; à ¡®ç ï ¯¥à¥¬¥ ï 1
|
||||||
|
WIN_WORK_2 EQU 21 ; à ¡®ç ï ¯¥à¥¬¥ ï 2
|
||||||
|
WIN_GRAF_X EQU 24 ; ç «ì ï ª®®à¤¨ â ¯® X
|
||||||
|
WIN_GRAF_Y EQU 26 ; ç «ì ï ª®®à¤¨ â ¯® Y
|
||||||
|
|
||||||
|
; USER_VARS EQU 0F000h ; ¯¥à¥¬¥ë¥ ¯®«ì§®¢ ⥫¥©
|
||||||
|
|
||||||
|
; ;SW_ROM EQU 3CF9H
|
||||||
|
|
||||||
|
; ; IF .PROJ4
|
||||||
|
; ;RGADR EQU 0D0H
|
||||||
|
; ;RGSCR EQU 0D1H
|
||||||
|
; ;RGMOD EQU 0D2H
|
||||||
|
; ;RGACC EQU 0D3H
|
||||||
|
; ;PGACC EQU 0FCH
|
||||||
|
|
||||||
|
; ;PAGE0 EQU 0C0H
|
||||||
|
; ;PAGE1 EQU 0C5H
|
||||||
|
; ;PAGE2 EQU 0C2H
|
||||||
|
; ;PAGE3 EQU 0C0H
|
||||||
|
|
||||||
|
; ; ELSE
|
||||||
|
|
||||||
|
; ; ENDIF
|
||||||
|
|
||||||
|
PAGE0 EQU 082H
|
||||||
|
PAGE1 EQU 0A2H
|
||||||
|
PAGE2 EQU 0C2H
|
||||||
|
PAGE3 EQU 0E2H
|
||||||
|
|
||||||
|
; ;RGADR EQU 089H
|
||||||
|
; ;RGSCR EQU 0A9H
|
||||||
|
; ;RGMOD EQU 099H
|
||||||
|
; ;RGACC EQU 0B9H
|
||||||
|
RGADR EQU #89
|
||||||
|
; PORT_Y EQU #89
|
||||||
|
; ;RGSCR EQU 0E9H
|
||||||
|
RGMOD EQU 0C9H
|
||||||
|
; ;RGACC EQU 0A9H
|
||||||
|
; ;PGACC EQU 0FCH
|
||||||
|
|
||||||
|
CNF_PORT EQU 74h
|
||||||
|
|
||||||
|
ALTERA EQU 1400H
|
||||||
|
|
||||||
|
WG_COM EQU 00FH
|
||||||
|
WG_TRK EQU 03FH
|
||||||
|
WG_SEC EQU 05FH
|
||||||
|
WG_DATA EQU 07FH
|
||||||
|
P_DOS_FF EQU 0FFH
|
||||||
|
|
||||||
|
; BUFER_RD EQU 5D25H
|
||||||
|
|
||||||
|
PR_BUFER EQU 05B00H
|
||||||
|
AUTO_5B08 EQU 05B08H
|
||||||
|
AUTO_5B5C EQU 05B5CH
|
||||||
|
; COPY_P128 EQU 05B5CH
|
||||||
|
AUTO_5BFF EQU 05BFFH
|
||||||
|
K_STATE EQU 05C00H
|
||||||
|
KEY_TIME EQU 05C09H
|
||||||
|
REP_K_TYME EQU 05C10H
|
||||||
|
ZG EQU 05C36H
|
||||||
|
ERR_BEEP EQU 05C38H
|
||||||
|
; KEY_BEEP EQU 05C39H
|
||||||
|
ERR_NR EQU 05C3AH
|
||||||
|
FLAGS EQU 05C3BH
|
||||||
|
TV_FLAG EQU 05C3CH
|
||||||
|
ERR_SP EQU 05C3DH
|
||||||
|
; LIST_SP EQU 05C3FH
|
||||||
|
; MODE EQU 05C41H
|
||||||
|
NEW_PPC EQU 05C42H
|
||||||
|
NEW_S_PPC EQU 05C44H
|
||||||
|
PPC EQU 05C45H
|
||||||
|
; SUB_PPC EQU 05C47H
|
||||||
|
BORDER EQU 05C48H
|
||||||
|
; EDIT_PPC EQU 05C49H
|
||||||
|
BAS_VARS EQU 05C4BH
|
||||||
|
; WORK_VAR EQU 05C4DH
|
||||||
|
CHANS EQU 05C4FH
|
||||||
|
CUR_CHL EQU 05C51H
|
||||||
|
BAS_PROG EQU 05C53H
|
||||||
|
; NEXT_LINE EQU 05C55H
|
||||||
|
DATA_ADR EQU 05C57H
|
||||||
|
E_LINE EQU 05C59H
|
||||||
|
K_CUR EQU 05C5BH
|
||||||
|
CH_ADR EQU 05C5DH
|
||||||
|
; SINT_ER_AD EQU 05C5FH
|
||||||
|
WORK_SP EQU 05C61H
|
||||||
|
STK_BOT EQU 05C63H
|
||||||
|
STK_END EQU 05C65H
|
||||||
|
; B_REG EQU 05C67H
|
||||||
|
; MEM_CALC EQU 05C68H
|
||||||
|
; FLAGS_2 EQU 05C6AH
|
||||||
|
L_SCR_SIZE EQU 05C6BH
|
||||||
|
; AUTO_LST_L EQU 05C6CH
|
||||||
|
; OLD_PPC EQU 05C6EH
|
||||||
|
; OLD_S_PPC EQU 05C70H
|
||||||
|
; FLG_INPUT EQU 05C71H
|
||||||
|
; S_VAR_LEN EQU 05C72H
|
||||||
|
; SINT_TB_ADR EQU 05C74H
|
||||||
|
; RAND_SEED EQU 05C76H
|
||||||
|
; FRAMES EQU 05C78H
|
||||||
|
UDG EQU 05C7BH
|
||||||
|
; X_Y_COORD EQU 05C7DH
|
||||||
|
; PRN_POS EQU 05C7FH
|
||||||
|
; ADR_PR_BUF EQU 05C80H
|
||||||
|
; ECHO_E EQU 05C82H
|
||||||
|
; SCR_PL_M EQU 05C84H
|
||||||
|
SCR_PL_L EQU 05C86H
|
||||||
|
; SCR_POS_M EQU 05C88H
|
||||||
|
SCR_POS_L EQU 05C8AH
|
||||||
|
; SCROLL_ST EQU 05C8CH
|
||||||
|
ATTR_P EQU 05C8DH
|
||||||
|
; MASK_P EQU 05C8EH
|
||||||
|
ATTR_T EQU 05C8FH
|
||||||
|
; MASK_E EQU 05C90H
|
||||||
|
; FLAGS_ATR EQU 05C91H
|
||||||
|
MEM_BOT EQU 05C92H
|
||||||
|
AUTO_5C9A EQU 05C9AH
|
||||||
|
; NMI_ADR EQU 05CB0H
|
||||||
|
TOP_CLEAR EQU 05CB2H
|
||||||
|
P_RAMTOP EQU 05CB4H
|
||||||
|
BEG_ADRESS EQU 05CB6H
|
||||||
|
RET_INS EQU 05CC2H
|
||||||
|
AUTO_5CC3 EQU 05CC3H
|
||||||
|
DISK_A EQU 05CC8H
|
||||||
|
DISK_B EQU 05CC9H
|
||||||
|
DISK_C EQU 05CCAH
|
||||||
|
DISK_D EQU 05CCBH
|
||||||
|
CAT_SEC EQU 05CCCH
|
||||||
|
DRV_READY EQU 05CCDH
|
||||||
|
RD_WR_COM EQU 05CCEH
|
||||||
|
VAR_1 EQU 05CCFH
|
||||||
|
AUTO_5CD1 EQU 05CD1H
|
||||||
|
AUTO_5CD2 EQU 05CD2H
|
||||||
|
AUTO_5CD3 EQU 05CD3H
|
||||||
|
AUTO_5CD5 EQU 05CD5H
|
||||||
|
DOS_ERROR EQU 05CD6H
|
||||||
|
MED_START EQU 05CD7H
|
||||||
|
DOS_CH_ADR EQU 05CD9H
|
||||||
|
MED_LEN EQU 05CDBH
|
||||||
|
FL_NAME EQU 05CDDH
|
||||||
|
FL_N_2 EQU 05CDFH
|
||||||
|
FL_N_4 EQU 05CE1H
|
||||||
|
FL_N_6 EQU 05CE3H
|
||||||
|
FL_N_7 EQU 05CE4H
|
||||||
|
FL_TYPE EQU 05CE5H
|
||||||
|
FL_START EQU 05CE6H
|
||||||
|
|
||||||
|
FL_LEN EQU 05CE8H
|
||||||
|
START_CLASTER EQU FL_LEN
|
||||||
|
|
||||||
|
FL_SIZE EQU 05CEAH
|
||||||
|
FL_PLACE EQU 05CEBH
|
||||||
|
VAR_2 EQU 05CEDH
|
||||||
|
INTERF_I EQU 05CEFH
|
||||||
|
VAR_2_0 EQU 05CF1H
|
||||||
|
VAR_2_1 EQU 05CF2H
|
||||||
|
CONT_SEC EQU 05CF4H
|
||||||
|
CONT_TRK EQU 05CF5H
|
||||||
|
OPER_DISK EQU 05CF6H
|
||||||
|
DOS_FLAG EQU 05CF7H
|
||||||
|
DISK_1_FLG EQU 05CF8H
|
||||||
|
DISK_2_FLG EQU 05CF9H
|
||||||
|
TIME_A EQU 05CFAH
|
||||||
|
TIME_B EQU 05CFBH
|
||||||
|
TIME_C EQU 05CFCH
|
||||||
|
TIME_D EQU 05CFDH
|
||||||
|
COMAND_WG EQU 05CFEH
|
||||||
|
SEC_NUM EQU 05CFFH
|
||||||
|
CONT_BUF_ADR EQU 05D00H
|
||||||
|
WORK_2 EQU 05D02H
|
||||||
|
WORK_4 EQU 05D04H
|
||||||
|
S_NAME_NUM EQU 05D06H
|
||||||
|
N_DEL_FLS EQU 05D07H
|
||||||
|
FST_SYM_NAME EQU 05D08H
|
||||||
|
VAR_3 EQU 05D09H
|
||||||
|
BUF_FLAG EQU 05D0CH
|
||||||
|
BAS_DOS_FLG EQU 05D0EH
|
||||||
|
DOS_ERR_2 EQU 05D0FH
|
||||||
|
ERR_3D00 EQU 05D10H
|
||||||
|
ADR_DOS_COM EQU 05D11H
|
||||||
|
ERR_SP_COPY EQU 05D13H
|
||||||
|
MSG_FLAG EQU 05D15H
|
||||||
|
PDOS_COPY EQU 05D16H
|
||||||
|
FLAG_BOOT EQU 05D17H
|
||||||
|
INT_1_VAR EQU 05D18H
|
||||||
|
CONT_DISK EQU 05D19H
|
||||||
|
ADR_RET EQU 05D1AH
|
||||||
|
DOS_SP EQU 05D1CH
|
||||||
|
FL_NUMBER EQU 05D1EH
|
||||||
|
COM_LN_COPY EQU 05D20H
|
||||||
|
L_5D23 EQU 05D23H
|
||||||
|
BUFER EQU 05D25H
|
||||||
|
AUTO_5D33 EQU 05D33H
|
||||||
|
CLEAR_SEC EQU 05E06H
|
||||||
|
CLEAR_TRK EQU 05E07H
|
||||||
|
TYPE_DISK EQU 05E08H
|
||||||
|
N_FILES EQU 05E09H
|
||||||
|
FREE_SEC EQU 05E0AH
|
||||||
|
CODE_10H EQU 05E0CH
|
||||||
|
DISK_MRK_1 EQU 05E0FH
|
||||||
|
DISK_ALT_NM EQU 05E10H
|
||||||
|
N_DEL_FL EQU 05E19H
|
||||||
|
DISK_NAME EQU 05E1AH
|
||||||
|
|
||||||
|
|
||||||
|
; ;RET_PAGE0 MACRO
|
||||||
|
; ; LD A,0
|
||||||
|
; ; OUT (PAGE0),A
|
||||||
|
; ; ENDM
|
||||||
|
; ;RET_PAGE1 MACRO
|
||||||
|
; ; LD A,5
|
||||||
|
; ; OUT (PAGE1),A
|
||||||
|
; ; ENDM
|
||||||
|
; ;RET_PAGE2 MACRO
|
||||||
|
; ; LD A,2
|
||||||
|
; ; OUT (PAGE2),A
|
||||||
|
; ; ENDM
|
||||||
|
; ;RET_PAGE3 MACRO
|
||||||
|
; ; LD A,0
|
||||||
|
; ; OUT (PAGE3),A
|
||||||
|
; ; ENDM
|
||||||
|
|
||||||
|
; MACRO DSS adr,dt
|
||||||
|
; BLOCK adr-$,dt
|
||||||
|
; ENDM
|
||||||
|
|
||||||
|
MACRO CALL_48 adr
|
||||||
|
|
||||||
|
PUSH HL
|
||||||
|
LD HL,.ADR_R
|
||||||
|
PUSH HL
|
||||||
|
LD HL,SW_ROM
|
||||||
|
PUSH HL
|
||||||
|
LD HL,adr
|
||||||
|
JP JP_HL_48
|
||||||
|
.ADR_R:
|
||||||
|
POP HL
|
||||||
|
|
||||||
|
ENDM
|
||||||
|
|
||||||
|
MACRO CALL_48X adr
|
||||||
|
|
||||||
|
PUSH HL
|
||||||
|
LD HL,.ADR_R
|
||||||
|
EX (SP),HL
|
||||||
|
|
||||||
|
PUSH HL
|
||||||
|
LD HL,SW_ROM
|
||||||
|
EX (SP),HL
|
||||||
|
|
||||||
|
PUSH HL
|
||||||
|
LD HL,adr
|
||||||
|
EX (SP),HL
|
||||||
|
|
||||||
|
JP SW_ROM
|
||||||
|
.ADR_R:
|
||||||
|
ENDM
|
||||||
|
|
||||||
|
; MACRO RAMD_KEY
|
||||||
|
|
||||||
|
; SUB 4
|
||||||
|
; DI
|
||||||
|
; LD B,SYS_PAGE
|
||||||
|
; LD C,PAGE3
|
||||||
|
; OUT (C),B
|
||||||
|
; LD HL,RAMD_KEYS
|
||||||
|
; ADD A,L
|
||||||
|
; LD L,A
|
||||||
|
; DEC L
|
||||||
|
; LD (A_RAMD_VARS),HL
|
||||||
|
; INC L
|
||||||
|
; LD L,(HL)
|
||||||
|
; RET_PAGE3
|
||||||
|
; EI
|
||||||
|
; LD A,L
|
||||||
|
|
||||||
|
; ENDM
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ; <20>®pâë Sprinter. (¡ ©âë PORT_X)<<
|
||||||
|
; ; 0 - port FF<<
|
||||||
|
; ; 1 - port keyboard<<
|
||||||
|
; ; 2 - port BORDER<<
|
||||||
|
; ; 3 - port 1FFDh<<
|
||||||
|
; ; 4 - port 7FFDh<<
|
||||||
|
; ; 5 - port 3FFDh<<
|
||||||
|
; ; 6 - port Start-ROM<<
|
||||||
|
; ; 7 - port Start-ROM-ALT<<
|
||||||
|
; ; 8 - port ROM-BASIC48<<
|
||||||
|
; ; 9 - port ROM-BASIC128<<
|
||||||
|
; ; 10 - port ROM-TR-DOS<<
|
||||||
|
; ; 11 - port ROM-EXPANSION<<
|
||||||
|
; ; 12 - port ROM-BASIC48-ALT<<
|
||||||
|
; ; 13 - port ROM-BASIC128-ALT<<
|
||||||
|
; ; 14 - port ROM-TR-DOS-ALT<<
|
||||||
|
; ; 15 - port ROM-EXPANSION-ALT<<
|
||||||
|
; ; 16 Ä¿<<
|
||||||
|
; ; .. Ä´<<
|
||||||
|
; ; 31 ÄÁÄports RAM-PAGES - ¯®pâë 㪠§ë¢ î騥, ª ª ï áâp ¨æ އ“<<
|
||||||
|
; ;¯®¤ª«îç¥ ¢ ª ç¥á⢥ áâp ¨æë 0..F ¢ ª®ä¨£ãp 樨 Scorpion.<<
|
||||||
|
; ; 33 - port RAM-0 áâp ¨æ އ“ ¯®¤ª«îç ¥¬ ï ¢ ã«¥¢®¥ ®ª® ¯p®æ¥áá®p <<
|
||||||
|
; ; 34 - port RAM-5 áâp ¨æ އ“ ¯®¤ª«îç ¥¬ ï ¢ ¯¥p¢®¥ ®ª® ¯p®æ¥áá®p <<
|
||||||
|
; ; 35 - port RAM-2 áâp ¨æ އ“ ¯®¤ª«îç ¥¬ ï ¢® ¢â®p®¥ ®ª® ¯p®æ¥áá®p <<
|
||||||
|
; ; 36 - port CONFIG<<
|
||||||
|
; ; 37 - port COVOX-1<<
|
||||||
|
; ; 38 - port COVOX-2<<
|
||||||
|
; ; 39 - port AY-3-8910-adr<<
|
||||||
|
; ; 40 - port AY-3-8910-dat<<
|
||||||
|
; ; 41 - port KEMPSTON<<
|
||||||
|
; ; 42 - port ISA-interface<<
|
||||||
|
; ; 43 Ŀreserv<<
|
||||||
|
; ; .. Ä´<<
|
||||||
|
; ; 47 ÄÙ<<
|
||||||
|
; ; 48 - 51 ¯®pâë ‚ƒ93<<
|
||||||
|
; ; 52 - ¯®pâ DOS-1<<
|
||||||
|
; ; 53 - ¯®pâ DOS-2<<
|
||||||
|
; ; 54 Ä¿ á«ã¦¥¡ë¥ ¯®pâë<<
|
||||||
|
; ; .. Ä´<<
|
||||||
|
; ; 63 ÄÙ<<
|
||||||
|
; ; 64 Ä¿ ¯®pâë IDE interface<<
|
||||||
|
; ; .. Ä´<<
|
||||||
|
; ; 79 ÄÙ<<
|
||||||
|
; ; 80..127 - p¥§¥p¢.<<
|
||||||
|
; ; 128..143 - ¯®pâë ¨¤¥â¨ä¨ª â®p ¬ è¨ë ( ⮫쪮 ¤«ï ç⥨ï.)<<
|
||||||
|
; ; 144..254 - p¥§¥p¢<<
|
||||||
|
; ; 255 - ã«ì-¯®pâ - ®âª«î祮¥ á®áâ®ï¨¥.<<
|
||||||
|
; ;
|
||||||
203
inc/char_codes.inc
Normal file
203
inc/char_codes.inc
Normal file
@ -0,0 +1,203 @@
|
|||||||
|
; ZX Spectrum char codes
|
||||||
|
; By Marcos Cruz (programandala.net)
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------
|
||||||
|
; Characters (new format)
|
||||||
|
ZX_Char:
|
||||||
|
; Not used equ 0x00
|
||||||
|
; Not used equ 0x01
|
||||||
|
; Not used equ 0x02
|
||||||
|
; Not used equ 0x03
|
||||||
|
; Not used equ 0x04
|
||||||
|
; Not used equ 0x05
|
||||||
|
.caps equ 0x06 ; toggle caps lock
|
||||||
|
.print_comma equ 0x06 ; (when printed)
|
||||||
|
.edit equ 0x07 ; edit
|
||||||
|
.esc equ 0x07 ; escape
|
||||||
|
.cursor_left equ 0x08
|
||||||
|
.backspace equ 0x08
|
||||||
|
.right equ 0x09 ; cursor right
|
||||||
|
.cursor_down equ 0x0A
|
||||||
|
.cursor_up equ 0x0B
|
||||||
|
.delete_left equ 0x0C ; delete (backspace)
|
||||||
|
.form_feed equ 0x0C ; used for printing
|
||||||
|
.carriage_return equ 0x0D ; enter key
|
||||||
|
.extended_mode equ 0x0E ;
|
||||||
|
.number equ 0x0E ;
|
||||||
|
.graphics equ 0x0F ; toggle graphics mode
|
||||||
|
.ink equ 0x10
|
||||||
|
.paper equ 0x11
|
||||||
|
.flash equ 0x12
|
||||||
|
.bright equ 0x13
|
||||||
|
.inverse equ 0x14
|
||||||
|
.over equ 0x15
|
||||||
|
.at equ 0x16
|
||||||
|
.tab equ 0x17 ; tab (screen only)
|
||||||
|
; Not used equ 0x18
|
||||||
|
; Not used equ 0x19
|
||||||
|
; Not used equ 0x1A
|
||||||
|
; Not used equ 0x1B
|
||||||
|
; Not used equ 0x1C
|
||||||
|
; Not used equ 0x1D
|
||||||
|
; Not used equ 0x1E
|
||||||
|
; Not used equ 0x1F
|
||||||
|
.space equ 0x20
|
||||||
|
|
||||||
|
; Standart symbols
|
||||||
|
; #21 ! #22 " #23 # #24 $ #25 % #26 & #27 , #28 (
|
||||||
|
; #29 ) #2A * #2B + #2C , #2D - #2F . #2F / #30 0
|
||||||
|
; #31 1 #32 2 #33 3 #34 4 #35 5 #36 6 #37 7 #38 8
|
||||||
|
; #39 9 #3A : #3B ; #3C < #3D = #3E > #3F ? #40 @
|
||||||
|
; #41 A #42 B #43 C #44 D #45 E #46 F #47 G #48 H
|
||||||
|
; #49 I #4A J #4B K #4C L #4D M #4E N #4F O #50 P
|
||||||
|
; #51 Q #52 R #53 S #54 T #55 U #56 V #57 W #58 X
|
||||||
|
; #59 Y #5A Z #5B [ #5C / #5D ] #5E ^ #5F _ #60 ?
|
||||||
|
; #61 a #62 b #63 c #64 d #65 e #66 f #67 g #68 h
|
||||||
|
; #69 i #6A j #6B k #6C l #6D m #6E n #6F o #70 p
|
||||||
|
; #71 q #72 r #73 s #74 t #75 u #76 v #77 w #78 x
|
||||||
|
; #79 y #7A z #7B { #7C | #7D } #7E ~
|
||||||
|
.copyright equ 0x7F ; copyright sign
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------
|
||||||
|
; User Defined Graphics
|
||||||
|
; 0 1 2 3 4 5 6 7
|
||||||
|
;| | | #| |# | |# #| | | | #| |# | |# #|
|
||||||
|
;| | | | | | | | | #| | #| | #| | #|
|
||||||
|
; 8 9 A B C D E F
|
||||||
|
;| | | #| |# | |# #| | | | #| |# | |# #|
|
||||||
|
;|# | |# | |# | |# | |# #| |# #| |# #| |# #|
|
||||||
|
ZX_UDG:
|
||||||
|
.block_0 equ 0x80
|
||||||
|
.block_1 equ 0x81
|
||||||
|
.block_2 equ 0x82
|
||||||
|
.block_3 equ 0x83
|
||||||
|
.block_4 equ 0x84
|
||||||
|
.block_5 equ 0x85
|
||||||
|
.block_6 equ 0x86
|
||||||
|
.block_7 equ 0x87
|
||||||
|
.block_8 equ 0x88
|
||||||
|
.block_9 equ 0x89
|
||||||
|
.block_A equ 0x8A
|
||||||
|
.block_B equ 0x8B
|
||||||
|
.block_C equ 0x8C
|
||||||
|
.block_D equ 0x8D
|
||||||
|
.block_E equ 0x8E
|
||||||
|
.block_F equ 0x8F
|
||||||
|
.a equ 0x90
|
||||||
|
.b equ 0x91
|
||||||
|
.c equ 0x92
|
||||||
|
.d equ 0x93
|
||||||
|
.e equ 0x94
|
||||||
|
.f equ 0x95
|
||||||
|
.g equ 0x96
|
||||||
|
.h equ 0x97
|
||||||
|
.i equ 0x98
|
||||||
|
.j equ 0x99
|
||||||
|
.k equ 0x9A
|
||||||
|
.l equ 0x9B
|
||||||
|
.m equ 0x9C
|
||||||
|
.n equ 0x9D
|
||||||
|
.o equ 0x9E
|
||||||
|
.p equ 0x9F
|
||||||
|
.q equ 0xA0
|
||||||
|
.r equ 0xA1
|
||||||
|
.s equ 0xA2
|
||||||
|
.t equ 0xA3 ; token SPECTRUM in 128 basic
|
||||||
|
.u equ 0xA4 ; token PLAY in 128 basic
|
||||||
|
; ---------------------------------------------------------------------
|
||||||
|
; Tokens
|
||||||
|
ZX_Token
|
||||||
|
.spectrum equ 0xA3 ; UDG T in 48 basic
|
||||||
|
.play equ 0xA4 ; UDG U in 48 basic
|
||||||
|
.rnd equ 0xA5
|
||||||
|
.inkey_dollar equ 0xA6
|
||||||
|
.pi equ 0xA7
|
||||||
|
.fn equ 0xA8
|
||||||
|
.point equ 0xA9
|
||||||
|
.screen_dollar equ 0xAA
|
||||||
|
.attr equ 0xAB
|
||||||
|
.at equ 0xAC
|
||||||
|
.tab equ 0xAD
|
||||||
|
.val_dollar equ 0xAE
|
||||||
|
.code equ 0xAF
|
||||||
|
.val equ 0xB0
|
||||||
|
.len equ 0xB1
|
||||||
|
.sin equ 0xB2
|
||||||
|
.cos equ 0xB3
|
||||||
|
.tan equ 0xB4
|
||||||
|
.asn equ 0xB5
|
||||||
|
.acs equ 0xB6
|
||||||
|
.atn equ 0xB7
|
||||||
|
.ln equ 0xB8
|
||||||
|
.exp equ 0xB9
|
||||||
|
.int equ 0xBA
|
||||||
|
.sqr equ 0xBB
|
||||||
|
.sgn equ 0xBC
|
||||||
|
.abs equ 0xBD
|
||||||
|
.peek equ 0xBE
|
||||||
|
.in equ 0xBF
|
||||||
|
.usr equ 0xC0
|
||||||
|
.str_dollar equ 0xC1
|
||||||
|
.chr_dollar equ 0xC2
|
||||||
|
.not equ 0xC3
|
||||||
|
.bin equ 0xC4
|
||||||
|
.or equ 0xC5
|
||||||
|
.and equ 0xC6
|
||||||
|
.less_or_equal equ 0xC7
|
||||||
|
.greater_or_equal equ 0xC8
|
||||||
|
.not_equal equ 0xC9
|
||||||
|
.line equ 0xCA
|
||||||
|
.then equ 0xCB
|
||||||
|
.to equ 0xCC
|
||||||
|
.step equ 0xCD
|
||||||
|
.def_fn equ 0xCE
|
||||||
|
.cat equ 0xCF
|
||||||
|
.format equ 0xD0
|
||||||
|
.move equ 0xD1
|
||||||
|
.erase equ 0xD2
|
||||||
|
.open_channel equ 0xD3
|
||||||
|
.close_channel equ 0xD4
|
||||||
|
.merge equ 0xD5
|
||||||
|
.verify equ 0xD6
|
||||||
|
.beep equ 0xD7
|
||||||
|
.circle equ 0xD8
|
||||||
|
.ink equ 0xD9
|
||||||
|
.paper equ 0xDA
|
||||||
|
.flash equ 0xDB
|
||||||
|
.bright equ 0xDC
|
||||||
|
.inverse equ 0xDD
|
||||||
|
.over equ 0xDE
|
||||||
|
.out equ 0xDF
|
||||||
|
.lprint equ 0xE0
|
||||||
|
.llist equ 0xE1
|
||||||
|
.stop equ 0xE2
|
||||||
|
.read equ 0xE3
|
||||||
|
.data equ 0xE4
|
||||||
|
.restore equ 0xE5
|
||||||
|
.new equ 0xE6
|
||||||
|
.border equ 0xE7
|
||||||
|
.continue equ 0xE8
|
||||||
|
.dim equ 0xE9
|
||||||
|
.rem equ 0xEA
|
||||||
|
.for equ 0xEB
|
||||||
|
.go_to equ 0xEC
|
||||||
|
.go_sub equ 0xED
|
||||||
|
.input equ 0xEE
|
||||||
|
.load equ 0xEF
|
||||||
|
.list equ 0xF0
|
||||||
|
.let equ 0xF1
|
||||||
|
.pause equ 0xF2
|
||||||
|
.next equ 0xF3
|
||||||
|
.poke equ 0xF4
|
||||||
|
.print equ 0xF5
|
||||||
|
.plot equ 0xF6
|
||||||
|
.run equ 0xF7
|
||||||
|
.save equ 0xF8
|
||||||
|
.randomize equ 0xF9
|
||||||
|
.if equ 0xFA
|
||||||
|
.cls equ 0xFB
|
||||||
|
.draw equ 0xFC
|
||||||
|
.clear equ 0xFD
|
||||||
|
.return equ 0xFE
|
||||||
|
.copy equ 0xFF
|
||||||
|
; ---------------------------------------------------------------------
|
||||||
1160
inc/rom_routines.inc
Normal file
1160
inc/rom_routines.inc
Normal file
File diff suppressed because it is too large
Load Diff
309
inc/system_variables.inc
Normal file
309
inc/system_variables.inc
Normal file
@ -0,0 +1,309 @@
|
|||||||
|
; ZX Spectrum system variables
|
||||||
|
|
||||||
|
; By Marcos Cruz (programandala.net)
|
||||||
|
|
||||||
|
; Last modified: 201803231837
|
||||||
|
; See change log at the end of the file
|
||||||
|
|
||||||
|
; ==============================================================
|
||||||
|
; ZX Spectrum +3
|
||||||
|
|
||||||
|
sys_nmiadd: equ 23728 ; (2)
|
||||||
|
|
||||||
|
; The system variable at 5CB0h (23728) was documented on previous models of the
|
||||||
|
; Spectrum as 'Not used'. It is now used on the +3 as an NMI jump vector. If an
|
||||||
|
; NMI occurs, this address is checked. If it contains a 0, then no action is
|
||||||
|
; taken. However, for any other (non-zero) value, a jump will be made to the
|
||||||
|
; address given by this variable. NMIs must not occur while the disk system is
|
||||||
|
; active.
|
||||||
|
|
||||||
|
SWAP_ROM: equ 23296 ; (0x5B00) (R16)
|
||||||
|
; Paging subroutine.
|
||||||
|
sys_stoo: equ 23312 ; (0x5B10) (R17)
|
||||||
|
; Paging subroutine. Entered with
|
||||||
|
; interrupts already disabled and AF, BC
|
||||||
|
; on the stack.
|
||||||
|
sys_younger: equ 23329 ; (0x5B21) (R9)
|
||||||
|
; Paging subroutine.
|
||||||
|
sys_regnuoy: equ 23338 ; (0x5B2A) (R16)
|
||||||
|
; Paging subroutine.
|
||||||
|
sys_onerr: equ 23354 ; (0x5B3A) (R24)
|
||||||
|
; Paging subroutine.
|
||||||
|
sys_oldhl: equ 23378 ; (0x5B52) (X2)
|
||||||
|
; Temporary register store while
|
||||||
|
; switching ROMs.
|
||||||
|
sys_oldbc: equ 23380 ; (0x5B54) (X2)
|
||||||
|
; Temporary register store while
|
||||||
|
; switching ROMs.
|
||||||
|
sys_oldaf: equ 23382 ; (0x5B56) (X2)
|
||||||
|
; Temporary register store while
|
||||||
|
; switching ROMs.
|
||||||
|
sys_target: equ 23384 ; (0x5B58) (N2)
|
||||||
|
; Subroutine address in ROM 3.
|
||||||
|
sys_retaddr: equ 23386 ; (0x5B5A) (X2)
|
||||||
|
; Return address in ROM 1.
|
||||||
|
sys_bankm: equ 23388 ; (0x5B5C) (X1)
|
||||||
|
; Copy of last byte output to I/O
|
||||||
|
; port 7FFDh (32765). This port
|
||||||
|
; is used to control the RAM
|
||||||
|
; paging (bits 0..2: page 0..7),
|
||||||
|
; screen selection (bit 3:
|
||||||
|
; 0=normal, 1=shadow),
|
||||||
|
; 'horizontal' ROM switch (bit 4:
|
||||||
|
; 0=128k editor, 1=48k BASIC) and
|
||||||
|
; added I/O disabling (bit 5).
|
||||||
|
; the This byte must be kept up
|
||||||
|
; to date with the last value
|
||||||
|
; output to the port if
|
||||||
|
; interrupts are enabled.
|
||||||
|
sys_ramrst: equ 23389 ; (0x5B5D) (X1)
|
||||||
|
; RST 8 instruction. Used by ROM 1 to
|
||||||
|
; report old errors to ROM 3.
|
||||||
|
sys_ramerr: equ 23390 ; (0x5B5E) (N1)
|
||||||
|
; Error number passed from ROM 1 to ROM
|
||||||
|
; 3. Also used by SAVE/LOAD as temporary
|
||||||
|
; drive store.
|
||||||
|
sys_baud: equ 23391 ; (0x5B5F) (2)
|
||||||
|
; RS232 bit period in T states/26. Set
|
||||||
|
; by FORMAT LINE.
|
||||||
|
sys_serfl: equ 23393 ; (0x5B61) (N2)
|
||||||
|
; Second-character-received-flag, and
|
||||||
|
; data.
|
||||||
|
sys_col: equ 23395 ; (0x5B63) (N1)
|
||||||
|
; Current column from 1 to width.
|
||||||
|
sys_width: equ 23396 ; (0x5B64) (1)
|
||||||
|
; Paper column width. Defaults to 80.
|
||||||
|
sys_tvpars: equ 23397 ; (0x5B65) (1)
|
||||||
|
; Number of inline parameters expected
|
||||||
|
; by RS232
|
||||||
|
|
||||||
|
sys_flags3: equ 23398 ; (0x5B66) (1)
|
||||||
|
; Various flags. Bits 0, 1, 6 and 7
|
||||||
|
; unlikely to be useful. Bit 2 is set
|
||||||
|
; when tokens are to be expanded on
|
||||||
|
; printing. Bit 3 is set if print output
|
||||||
|
; is RS232. The default (at reset) is
|
||||||
|
; Centronics. Bit 4 is set if a disk
|
||||||
|
; interface is present. Bit 5 is set if
|
||||||
|
; drive B: is present.
|
||||||
|
sys_bank678: equ 23399 ; (0x5B67) (X1)
|
||||||
|
; Copy of last byte output to I/O port
|
||||||
|
; 1FFDh (8189). This port is used to
|
||||||
|
; control the +3 extended RAM and ROM
|
||||||
|
; switching (bits 0..2 - if bit 0 is 0
|
||||||
|
; then bit 2 controls the 'vertical' ROM
|
||||||
|
; switch 02 and 13), the disk
|
||||||
|
; motor (bit 3) and Centronics strobe
|
||||||
|
; (bit 4). This byte must be kept up to
|
||||||
|
; date with the last value output to the
|
||||||
|
; port if interrupts are enabled.
|
||||||
|
sys_xloc: equ 23400 ; (0x5B68) (N1)
|
||||||
|
; Holds X location when using the
|
||||||
|
; unexpanded COPY command.
|
||||||
|
sys_yloc: equ 23401 ; (0x5B69) (N1)
|
||||||
|
; Holds Y location when using the
|
||||||
|
; unexpanded COPY command.
|
||||||
|
sys_oldsp: equ 23402 ; (0x5B6A) (X2)
|
||||||
|
; Old SP (stack pointer) when TSTACK is
|
||||||
|
; in use.
|
||||||
|
sys_synret: equ 23404 ; (0x5B6C) (X2)
|
||||||
|
; Return address for ONERR.
|
||||||
|
sys_lastv: equ 23406 ; (0x5B6E) (5)
|
||||||
|
; Last value printed by calculator.
|
||||||
|
sys_rcline: equ 23411 ; (0x5B73) (2)
|
||||||
|
; Current line being renumbered.
|
||||||
|
sys_rcstart: equ 23413 ; (0x5B75) (2)
|
||||||
|
; Starting line number for
|
||||||
|
; renumbering. The default value is 10.
|
||||||
|
sys_rcstep: equ 23415 ; (0x5B77) (2)
|
||||||
|
; Incremental value for renumbering. The
|
||||||
|
; default is 10.
|
||||||
|
sys_loddrv: equ 23417 ; (0x5B79) (1)
|
||||||
|
; Holds 'T' if LOAD, VERIFY, MERGE are
|
||||||
|
; from tape, otherwise holds 'A', 'B'
|
||||||
|
; or 'M'.
|
||||||
|
sys_savdrv: equ 23418 ; (0x5B7A) (1)
|
||||||
|
; Holds 'T' if SAVE is to tape,
|
||||||
|
; otherwise holds 'A', 'B' or 'M'.
|
||||||
|
sys_dumplf: equ 23419 ; (0x5B7B) (1)
|
||||||
|
; Holds the number of 1/216ths user for
|
||||||
|
; line feeds in 'COPY EXP'. This is
|
||||||
|
; normally set to 9. If problems are
|
||||||
|
; experienced fitting a dump onto a
|
||||||
|
; sheet of A4 paper, POKE this
|
||||||
|
; location with 8. This will reduce the
|
||||||
|
; size of the dump and improve the
|
||||||
|
; aspect ratio slightly. (The quality of
|
||||||
|
; the dump will be marginally degraded,
|
||||||
|
; however.)
|
||||||
|
sys_strip1: equ 23420 ; (0x5B7C) (N8)
|
||||||
|
; Stripe one bitmap.
|
||||||
|
sys_strip2: equ 23428 ; (0x5B84) (N8)
|
||||||
|
; Stripe two bitmap. This extends to
|
||||||
|
; 5B8Bh (23436).
|
||||||
|
sys_tstack: equ 23551 ; (0x5BFF) (X115)
|
||||||
|
; Temporary stack grows down from
|
||||||
|
; here. Used when RAM page 7 is switched
|
||||||
|
; in at top of memory (while executing
|
||||||
|
; the editor or calling +3DOS). it may
|
||||||
|
; safely go down to 5B8Ch (and across
|
||||||
|
; STRIP1 and STRIP2 if necessary). This
|
||||||
|
; guarantees at least 115 bytes of stack
|
||||||
|
; when BASIC calls +3DOS.
|
||||||
|
|
||||||
|
; ==============================================================
|
||||||
|
; ZX Spectrum 48K
|
||||||
|
|
||||||
|
sys_printer_buffer: equ 23296 ; (0x5B00)
|
||||||
|
|
||||||
|
sys_kstate: equ 23552 ; (n8) Used in reading the keyboard.
|
||||||
|
sys_kstate.1: equ 23553
|
||||||
|
sys_kstate.2: equ 23554
|
||||||
|
sys_kstate.3: equ 23555
|
||||||
|
sys_kstate.4: equ 23556
|
||||||
|
sys_kstate.5: equ 23557
|
||||||
|
sys_kstate.6: equ 23558
|
||||||
|
sys_kstate.7: equ 23559
|
||||||
|
sys_last_k: equ 23560 ; (nl) Stores newly pressed key.
|
||||||
|
sys_last_key: equ 23560
|
||||||
|
sys_repdel: equ 23561 ; (1) Time (in 50ths of a second
|
||||||
|
; in 60ths of a second in N. America) that a key must
|
||||||
|
; be held down before it repeats.
|
||||||
|
; This starts off at 35, but you can POKE in other values.
|
||||||
|
sys_repper: equ 23562 ; (1) Delay (in 50ths of a second in 60ths of a second
|
||||||
|
; in N. America) between successive repeats
|
||||||
|
; of a key held down: initially 5.
|
||||||
|
sys_defadd: equ 23563 ; (n2) Address of arguments of user defined function
|
||||||
|
; if one is being evaluated; otherwise 0.
|
||||||
|
sys_k_data: equ 23565 ; (nl) Stores 2nd byte of colour controls
|
||||||
|
; entered from keyboard.
|
||||||
|
sys_tvdata: equ 23566 ; (n2) Stores bytes of colour, AT and TAB controls
|
||||||
|
; going to television.
|
||||||
|
sys_tvdata2: equ 23567
|
||||||
|
sys_tvdata.high: equ 23567
|
||||||
|
sys_strms: equ 23568 ; (x38) Addresses of channels attached to streams.
|
||||||
|
sys_chars: equ 23606 ; (2) 256 less than address of character set
|
||||||
|
sys_rasp: equ 23608 ; (1) Length of warning buzz.
|
||||||
|
sys_pip: equ 23609 ; (1) Length of keyboard click.
|
||||||
|
|
||||||
|
; sys_err_nr is pointed by IY
|
||||||
|
|
||||||
|
sys_err_nr: equ 23610 ; (1) 1 less than the report code.
|
||||||
|
; Starts off at 255 (for 1) so PEEK 23610 gives 255.
|
||||||
|
sys_flags: equ 23611 ; (x1) Various flags to control the BASIC system.
|
||||||
|
sys_tv_flag: equ 23612 ; (x1) Flags associated with the television.
|
||||||
|
sys_err_sp: equ 23613 ; (x2) Address of item on machine stack
|
||||||
|
; to be used as error return.
|
||||||
|
sys_list_sp: equ 23615 ; (n2) Address of return address from automatic listing.
|
||||||
|
sys_mode: equ 23617 ; (n1) Specifies K, L, C. E or G cursor.
|
||||||
|
sys_newppc: equ 23618 ; (2) Line to be jumped to.
|
||||||
|
sys_nsppc: equ 23620 ; (1) Statement number in line to be jumped to.
|
||||||
|
; Poking first NEWPPC and then NSPPC
|
||||||
|
; forces a jump to a specified statement in a line.
|
||||||
|
sys_ppc: equ 23621 ; (2) Line number of statement currently being executed.
|
||||||
|
sys_subppc: equ 23623 ; (1) Number within line of statement being executed.
|
||||||
|
sys_bordcr: equ 23624 ; (1) Border colour * 8; also contains the attributes
|
||||||
|
; normally used for the lower half of the screen.
|
||||||
|
sys_e_ppc: equ 23625 ; (2) Number of current line (with program cursor).
|
||||||
|
sys_vars: equ 23627 ; (x2) Address of variables.
|
||||||
|
sys_dest: equ 23629 ; (n2) Address of variable in assignment.
|
||||||
|
sys_chans: equ 23631 ; (x2) Address of channel data.
|
||||||
|
sys_curchl: equ 23633 ; (x2) Address of information currently being used
|
||||||
|
; for input and output.
|
||||||
|
sys_prog: equ 23635 ; (x2) Address of BASIC program.
|
||||||
|
sys_nxtlin: equ 23637 ; (x2) Address of next line in program.
|
||||||
|
sys_datadd: equ 23639 ; (x2) Address of terminator of last DATA item.
|
||||||
|
sys_e_line: equ 23641 ; (x2) Address of command being typed in.
|
||||||
|
sys_k_cur: equ 23643 ; (2) Address of cursor.
|
||||||
|
sys_ch_add: equ 23645 ; (x2) Address of the next character to be interpreted.
|
||||||
|
sys_x_ptr: equ 23647 ; (2) Address of the character after the ? marker.
|
||||||
|
sys_worksp: equ 23649 ; (x2) Address of temporary work space.
|
||||||
|
sys_stkbot: equ 23651 ; (x2) Address of bottom of calculator stack.
|
||||||
|
sys_stkend: equ 23653 ; (x2) Address of start of spare space.
|
||||||
|
sys_breg: equ 23655 ; (n1) Calculator's b register.
|
||||||
|
sys_mem: equ 23656 ; (n2) Address of area used for calculator's memory.
|
||||||
|
; (Usually MEMBOT, but not always.)
|
||||||
|
sys_flags2: equ 23658 ; (1) More flags.
|
||||||
|
sys_df_sz: equ 23659 ; (x1) The number of lines (including one blank line)
|
||||||
|
; in the lower part of the screen.
|
||||||
|
sys_s_top: equ 23660 ; (2) The number of the top program line in automatic listings.
|
||||||
|
sys_oldppc: equ 23662 ; (2) Line number to which CONTINUE jumps.
|
||||||
|
sys_ospcc: equ 23664 ; (1) Number within line of statement
|
||||||
|
; to which CONTINUE jumps.
|
||||||
|
sys_flagx: equ 23665 ; (n1) Various flags.
|
||||||
|
sys_strlen: equ 23666 ; (n2) Length of string type destination in assignment.
|
||||||
|
sys_t_addr: equ 23668 ; (n2) Address of next item in syntax table
|
||||||
|
; (very unlikely to be useful).
|
||||||
|
sys_seed: equ 23670 ; (2) The seed for RND.
|
||||||
|
; This is the variable that is set by RANDOMIZE.
|
||||||
|
sys_frames: equ 23672 ; (3) 3 byte (least significant first), frame counter.
|
||||||
|
; Incremented every 20ms.
|
||||||
|
sys_udg: equ 23675 ; (2) Address of 1st user defined graphic.
|
||||||
|
sys_coords: equ 23677 ; (2) coordinates of last point plotted.
|
||||||
|
sys_coordx: equ 23677 ; (1) x-coordinate of last point plotted.
|
||||||
|
sys_coordy: equ 23678 ; (1) y-coordinate of last point plotted.
|
||||||
|
sys_p_posn: equ 23679 ; (1) 33 column number of printer position
|
||||||
|
sys_pr_cc: equ 23680 ; (1) Less significant byte of address
|
||||||
|
; of next position for LPRINT to print at
|
||||||
|
; (in printer buffer).
|
||||||
|
sys_unused0: equ 23681 ; (1) Not used.
|
||||||
|
sys_echo_e: equ 23682 ; (2) 33 column number and 24 line number
|
||||||
|
; (in lower half) of end of input buffer.
|
||||||
|
sys_df_cc: equ 23684 ; (2) Address in display file of PRINT position.
|
||||||
|
sys_dfccl: equ 23686 ; (2) Like DF CC for lower part of screen.
|
||||||
|
sys_s_posn: equ 23688 ; (x2) 33 column and 24 line number for PRINT position
|
||||||
|
sys_s_posx: equ 23688 ; (x1) 33 column number for PRINT position
|
||||||
|
sys_s_posy: equ 23689 ; (x1) 24 line number for PRINT position.
|
||||||
|
sys_s_posn2: equ 23689
|
||||||
|
sys_sposnl: equ 23690 ; (x2) Like S POSN for lower part
|
||||||
|
sys_scr_ct: equ 23692 ; (1) Counts scrolls:
|
||||||
|
; it is always 1 more than the number of scrolls that
|
||||||
|
; will be done before stopping with scroll? If you keep
|
||||||
|
; poking this with a number bigger than 1 (say 255), the
|
||||||
|
; screen will scroll on and on without asking you.
|
||||||
|
sys_attr_p: equ 23693 ; (1) Permanent current colours, etc
|
||||||
|
; (as set up by colour statements).
|
||||||
|
sys_mask_p: equ 23694 ; (1) Used for transparent colours, etc.
|
||||||
|
; Any bit that is 1 shows that the corresponding
|
||||||
|
; attribute bit is taken not from ATTR P, but from what
|
||||||
|
; is already on the screen.
|
||||||
|
sys_attr_t: equ 23695 ; (n1) Temporary current colours, etc
|
||||||
|
; (as set up by colour items).
|
||||||
|
sys_mask_t: equ 23696 ; (n1) Like MASK P, but temporary.
|
||||||
|
sys_p_flag: equ 23697 ; (1) More flags.
|
||||||
|
sys_membot: equ 23698 ; (n30) Calculator's memory area;
|
||||||
|
; used to store numbers that cannot
|
||||||
|
; conveniently be put on the calculator stack.
|
||||||
|
sys_unused1: equ 23728 ; (1) Not used.
|
||||||
|
sys_unused2: equ 23729 ; (1) Not used.
|
||||||
|
sys_ramtop: equ 23730 ; (2) Address of last byte of BASIC system area.
|
||||||
|
sys_p_ramt: equ 23732 ; (2) Address of last byte of physical RAM.
|
||||||
|
sys_p_ramt.high: equ 23733
|
||||||
|
|
||||||
|
; ==============================================================
|
||||||
|
; Change log
|
||||||
|
|
||||||
|
; 2014-12-17: Converted from the HTML version of the ZX Spectrum manual, with
|
||||||
|
; the help of Vim. Regulary improved afterwards.
|
||||||
|
;
|
||||||
|
; 2015-01-12: New: first two ZX Spectrum +3 variables.
|
||||||
|
;
|
||||||
|
; 2015-01-15: New: 'sys_flags3'.
|
||||||
|
;
|
||||||
|
; 2015-01-16: New: all ZX Spectrum +3 variables.
|
||||||
|
;
|
||||||
|
; 2015-05-24: Changes to make the file usable as symbols input file by
|
||||||
|
; z80dasm.
|
||||||
|
;
|
||||||
|
; 2015-09-06: Offset extracted to <zx_spectrum_system_variables_offsets.z80s>,
|
||||||
|
; because the z80dasm disassembler does not accept calculations in its input
|
||||||
|
; symbols file.
|
||||||
|
;
|
||||||
|
; 2016-08-05: Remove useless comment.
|
||||||
|
;
|
||||||
|
; 2016-08-15: Add individual bytes of sys_k_state; the second one is addressed
|
||||||
|
; by TR-DOS 5.03.
|
||||||
|
;
|
||||||
|
; 2018-03-09: Add `sys_printer_buffer`.
|
||||||
|
;
|
||||||
|
; 2018-03-23: Add `sys_tvdata.high`.
|
||||||
29
inc/trdos.inc
Normal file
29
inc/trdos.inc
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
; ZX Spectrum TR-DOS
|
||||||
|
|
||||||
|
; By Marcos Cruz (programandala.net)
|
||||||
|
|
||||||
|
; --------------------------------------------------------------
|
||||||
|
; History
|
||||||
|
|
||||||
|
; 2016-08-13: Start, from information compiled for Solo Forth
|
||||||
|
; (http://programandala.net/en.program.solo_forth.html).
|
||||||
|
;
|
||||||
|
; 2016-09-01: Add drive step rate variables.
|
||||||
|
;
|
||||||
|
; 2016-10-01: Complete the variables and entry points. Identify
|
||||||
|
; unknown variable 23817.
|
||||||
|
;
|
||||||
|
; 2017-02-05: Update name of variable 23766, which is used for
|
||||||
|
; two different things. Add symbols for error codes.
|
||||||
|
;
|
||||||
|
; 2017-02-10: Add synonymous of command 0x0E. Fix typo in
|
||||||
|
; symbol. Add first draft of sector buffer addresses.
|
||||||
|
;
|
||||||
|
; 2017-02-10: Split the file in two: addresses and codes. The
|
||||||
|
; reason is to be able to use only the addresses as input in
|
||||||
|
; the TR-DOS disassembled project.
|
||||||
|
|
||||||
|
; --------------------------------------------------------------
|
||||||
|
|
||||||
|
include "inc/zx_spectrum_trdos_addresses.z80s"
|
||||||
|
include "inc/zx_spectrum_trdos_codes.z80s"
|
||||||
184
inc/trdos_addresses.inc
Normal file
184
inc/trdos_addresses.inc
Normal file
@ -0,0 +1,184 @@
|
|||||||
|
; ZX Spectrum TR-DOS addresses
|
||||||
|
|
||||||
|
; By Marcos Cruz (programandala.net)
|
||||||
|
|
||||||
|
; --------------------------------------------------------------
|
||||||
|
; History
|
||||||
|
|
||||||
|
; 2017-02-10: Extract from the main file: entry points,
|
||||||
|
; variables and sector buffer addresses.
|
||||||
|
;
|
||||||
|
; 2017-03-08: Rename `trdos_variable.file_size` to
|
||||||
|
; `trdos_variable.stream_or_file_size`.
|
||||||
|
;
|
||||||
|
; 2017-03-09: Improve name of variable 23814.
|
||||||
|
|
||||||
|
; --------------------------------------------------------------
|
||||||
|
; TR-DOS entry points
|
||||||
|
|
||||||
|
trdos_entry.enter_trdos_from_basic: equ 15616 ; 0x3D00
|
||||||
|
|
||||||
|
trdos_entry.interpret_rem_command: equ 15619 ; 0x3D03
|
||||||
|
; Interpret a TR-DOS REM-command pointed by the system variable CH
|
||||||
|
; ADD (23645).
|
||||||
|
;
|
||||||
|
; XXX REMARK -- The Beta Disk and Beta 128 Disk manuals use address
|
||||||
|
; 15363 in the assembly examples, but it's a mistake. In fact 15363
|
||||||
|
; (0x3C03) is out of the range of addresses that make the TR-DOS
|
||||||
|
; memory page in (0x3D00..0x3DFF). Probably the confusion was caused
|
||||||
|
; by a typo in hex (0x3D03 and 0x3C03).
|
||||||
|
|
||||||
|
trdos_entry.execute_command_in_c: equ 15635 ; 0x3D13
|
||||||
|
; Execute a TR-DOS command, whose code is in the C register.
|
||||||
|
|
||||||
|
entry.init_dos: equ 15649 ; 0x3D21
|
||||||
|
|
||||||
|
trdos_entry.call_pushed_address: equ 15663 ; 0x3D2F
|
||||||
|
; Execute the TR-DOS routine whose address is on top of stack.
|
||||||
|
|
||||||
|
; trdos_entry.XXX equ 15622 ; 0x3D06
|
||||||
|
; trdos_entry.XXX equ 15629 ; 0x3D0D
|
||||||
|
; trdos_entry.XXX equ 15632 ; 0x3D10
|
||||||
|
; trdos_entry.XXX equ 15652 ; 0x3D24
|
||||||
|
|
||||||
|
; --------------------------------------------------------------
|
||||||
|
; TR-DOS variables
|
||||||
|
|
||||||
|
trdos_variable.interface_1_zone: equ 23734
|
||||||
|
trdos_variable.0xc9: equ 23746
|
||||||
|
trdos_variable.unknown_23747: equ 23747
|
||||||
|
trdos_variable.drive_a_mode: equ 23752
|
||||||
|
trdos_variable.drive_b_mode: equ 23753
|
||||||
|
trdos_variable.drive_c_mode: equ 23754
|
||||||
|
trdos_variable.drive_d_mode: equ 23755
|
||||||
|
trdos_variable.cat_current_sector: equ 23756
|
||||||
|
trdos_variable.disk_drive_ready: equ 23757
|
||||||
|
trdos_variable.sector_rw_flag: equ 23758
|
||||||
|
trdos_variable.stack_sp_copy: equ 23759
|
||||||
|
trdos_variable.basic_program_autostart: equ 23761
|
||||||
|
trdos_variable.basic_program_autostart.high: equ 23762
|
||||||
|
trdos_variable.unknown_23763: equ 23763
|
||||||
|
trdos_variable.move_command_deleted_files: equ 23764
|
||||||
|
trdos_variable.move_command_first_sector: equ 23765
|
||||||
|
trdos_variable.bad_sectors_or_move_command_first_track: equ 23766
|
||||||
|
trdos_variable.start_file_parameter_or_number_of_tracks: equ 23767
|
||||||
|
trdos_variable.start_file_parameter.high: equ 23768
|
||||||
|
trdos_variable.ch_add: equ 23769
|
||||||
|
trdos_variable.ch_add.high: equ 23770
|
||||||
|
trdos_variable.stream_or_file_size: equ 23771
|
||||||
|
trdos_variable.file_size.high: equ 23772
|
||||||
|
trdos_variable.filename: equ 23773
|
||||||
|
trdos_variable.filename.1: equ 23774
|
||||||
|
trdos_variable.filename.2: equ 23775
|
||||||
|
trdos_variable.filename.3: equ 23776
|
||||||
|
trdos_variable.filename.4: equ 23777
|
||||||
|
trdos_variable.filename.5: equ 23778
|
||||||
|
trdos_variable.filename.6: equ 23779
|
||||||
|
trdos_variable.filename.7: equ 23780
|
||||||
|
trdos_variable.file_type: equ 23781
|
||||||
|
trdos_variable.file_start: equ 23782
|
||||||
|
trdos_variable.file_start.high: equ 23783
|
||||||
|
trdos_variable.file_length_in_bytes: equ 23784
|
||||||
|
trdos_variable.file_length_in_bytes.high: equ 23785
|
||||||
|
trdos_variable.file_length_in_sectors: equ 23786
|
||||||
|
trdos_variable.file_first_sector: equ 23787
|
||||||
|
trdos_variable.file_first_track: equ 23788
|
||||||
|
trdos_variable.c_file_start_or_b_file_size: equ 23789
|
||||||
|
trdos_variable.file_2_length_in_bytes: equ 23791
|
||||||
|
trdos_variable.file_2_length_in_sectors: equ 23793
|
||||||
|
trdos_variable.file_2_first_sector: equ 23794
|
||||||
|
trdos_variable.file_2_first_track: equ 23795
|
||||||
|
trdos_variable.current_sector: equ 23796
|
||||||
|
trdos_variable.current_track: equ 23797
|
||||||
|
trdos_variable.current_temporary_drive: equ 23798
|
||||||
|
trdos_variable.cleared: equ 23799
|
||||||
|
trdos_variable.two_files_drive: equ 23800
|
||||||
|
trdos_variable.cat_drive_or_read_verify_flag: equ 23801
|
||||||
|
trdos_variable.drive_a_step_rate: equ 23802
|
||||||
|
trdos_variable.drive_b_step_rate: equ 23803
|
||||||
|
trdos_variable.drive_c_step_rate: equ 23804
|
||||||
|
trdos_variable.drive_d_step_rate: equ 23805
|
||||||
|
trdos_variable.last_fdc_command: equ 23806
|
||||||
|
trdos_variable.sector: equ 23807
|
||||||
|
trdos_variable.buffer: equ 23808
|
||||||
|
trdos_variable.hl_copy: equ 23810
|
||||||
|
trdos_variable.de_copy: equ 23812
|
||||||
|
trdos_variable.bytes_compared_by_find_command: equ 23814
|
||||||
|
trdos_variable.deleted_files: equ 23815
|
||||||
|
trdos_variable.filename_first_char: equ 23816
|
||||||
|
trdos_variable.data_file_mode: equ 23817
|
||||||
|
trdos_variable.buffer_flag: equ 23820
|
||||||
|
trdos_variable.file_number_for_copying: equ 23821
|
||||||
|
trdos_variable.command_mode: equ 23822
|
||||||
|
trdos_variable.error_code: equ 23823
|
||||||
|
trdos_variable.error_code_msb: equ 23824
|
||||||
|
trdos_variable.command_line_address: equ 23825
|
||||||
|
trdos_variable.err_sp_copy: equ 23827
|
||||||
|
trdos_variable.show_screen_flag: equ 23829
|
||||||
|
trdos_variable.system_register: equ 23830
|
||||||
|
trdos_variable.show_title_flag: equ 23831
|
||||||
|
trdos_variable.interface_1_flag: equ 23832
|
||||||
|
trdos_variable.default_drive: equ 23833
|
||||||
|
trdos_variable.internal_address_of_finishing_proc: equ 23834
|
||||||
|
trdos_variable.sp_copy: equ 23836
|
||||||
|
trdos_variable.find_command_found_file: equ 23838
|
||||||
|
trdos_variable.unknown_23839: equ 23839
|
||||||
|
trdos_variable.entered_line_3_first_chars: equ 23840
|
||||||
|
trdos_variable.entered_line_3_first_chars.1: equ 23841
|
||||||
|
trdos_variable.entered_line_3_first_chars.2: equ 23842
|
||||||
|
trdos_variable.move_command_blocks: equ 23843
|
||||||
|
trdos_variable.tmp_buffer_address: equ 23845
|
||||||
|
trdos_variable.k_channel.output: equ 23846
|
||||||
|
trdos_variable.k_channel.input: equ 23848
|
||||||
|
trdos_variable.k_channel.id: equ 23850
|
||||||
|
trdos_variable.s_channel.output: equ 23851
|
||||||
|
trdos_variable.s_channel.input: equ 23853
|
||||||
|
trdos_variable.s_channel.id: equ 23855
|
||||||
|
trdos_variable.r_channel.output: equ 23856
|
||||||
|
trdos_variable.r_channel.input: equ 23858
|
||||||
|
trdos_variable.r_channel.input.high: equ 23859
|
||||||
|
trdos_variable.r_channel.id: equ 23860
|
||||||
|
trdos_variable.p_channel.output: equ 23861
|
||||||
|
trdos_variable.p_channel.input: equ 23863
|
||||||
|
trdos_variable.p_channel.id: equ 23865
|
||||||
|
|
||||||
|
; --------------------------------------------------------------
|
||||||
|
; TR-DOS sector buffer
|
||||||
|
|
||||||
|
trdos_sector_buffer: equ 0x5D25
|
||||||
|
; 256-byte sector buffer
|
||||||
|
|
||||||
|
; Addresses of the 8th sector of track 0, which contains the
|
||||||
|
; disk metatada, when it's loaded in the sector buffer:
|
||||||
|
|
||||||
|
trdos_sector_buffer.sectors: equ 0x5D04
|
||||||
|
; 2 B: total number of sectors
|
||||||
|
trdos_sector_buffer.next_free_sector: equ 0x5E06
|
||||||
|
; 1 B: Next free sector (0 index, 0 default)
|
||||||
|
trdos_sector_buffer.next_free_track: equ 0x5E07
|
||||||
|
; 1 B: Next free track
|
||||||
|
trdos_sector_buffer.disk_type: equ 0x5E08
|
||||||
|
; 1 B: disk type:
|
||||||
|
; 0x16 - 80 tracks, 2 sides
|
||||||
|
; 0x17 - 40 tracks, 2 sides
|
||||||
|
; 0x18 - 80 tracks, 1 side
|
||||||
|
; 0x19 - 40 tracks, 1 side
|
||||||
|
trdos_sector_buffer.files: equ 0x5E09
|
||||||
|
; 1 B: Number of files, including the deleted files
|
||||||
|
trdos_sector_buffer.free_sectors: equ 0x5E0A
|
||||||
|
; 2 B: Number of free sectors, depending on the disk type:
|
||||||
|
; 2544 = 0x09F0 : 80 tracks, 2 sides
|
||||||
|
; 1264 = 0x04F0 - 40 tracks, 2 sides
|
||||||
|
; 1264 = 0x04F0 - 80 tracks, 1 side
|
||||||
|
; 624 = 0x0270 - 40 tracks, 1 side
|
||||||
|
; 2672 = 0x0A70 - 84 tracks, 2 sides (DCU format)
|
||||||
|
; 2736 = 0x0AB0 - 86 tracks, 2 sides (DCU format)
|
||||||
|
trdos_sector_buffer.sectors_per_track: equ 0x5E0C
|
||||||
|
; 1 B: Number of sectors per track:
|
||||||
|
; If not 0x10, the disk will not be recognized.
|
||||||
|
trdos_sector_buffer.deleted_files: equ 0x5E19
|
||||||
|
; 1 B: Number of deleted files
|
||||||
|
trdos_sector_buffer.disc_title: equ 0x5E1A
|
||||||
|
; 8 B: Disk title
|
||||||
|
|
||||||
|
|
||||||
53
inc/trdos_codes.inc
Normal file
53
inc/trdos_codes.inc
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
; ZX Spectrum TR-DOS codes
|
||||||
|
|
||||||
|
; By Marcos Cruz (programandala.net)
|
||||||
|
|
||||||
|
; --------------------------------------------------------------
|
||||||
|
; History
|
||||||
|
|
||||||
|
; 2017-02-10: Extracted from the main file: command and error
|
||||||
|
; codes.
|
||||||
|
|
||||||
|
; --------------------------------------------------------------
|
||||||
|
; TR-DOS command codes
|
||||||
|
|
||||||
|
trdos_command.init_interface: equ 0x00
|
||||||
|
trdos_command.init_drive: equ 0x01
|
||||||
|
trdos_command.seek_track: equ 0x02
|
||||||
|
trdos_command.set_sector: equ 0x03
|
||||||
|
trdos_command.define_buffer: equ 0x04
|
||||||
|
trdos_command.read_sectors: equ 0x05
|
||||||
|
trdos_command.write_sectors: equ 0x06
|
||||||
|
trdos_command.cat: equ 0x07
|
||||||
|
trdos_command.read_file_descriptor: equ 0x08
|
||||||
|
trdos_command.write_file_descriptor: equ 0x09
|
||||||
|
trdos_command.find_file: equ 0x0A
|
||||||
|
trdos_command.create_file: equ 0x0B
|
||||||
|
trdos_command.save_basic_program: equ 0x0C
|
||||||
|
trdos_command.read_file: equ 0x0E
|
||||||
|
trdos_command.load_or_verify: equ 0x0E
|
||||||
|
trdos_command.delete_file: equ 0x12
|
||||||
|
trdos_command.copy_from_hl_to_descriptor: equ 0x13
|
||||||
|
trdos_command.copy_from_descriptor_to_hl: equ 0x14
|
||||||
|
trdos_command.test_track: equ 0x15
|
||||||
|
trdos_command.select_bottom_side: equ 0x16
|
||||||
|
trdos_command.select_top_side: equ 0x17
|
||||||
|
trdos_command.read_system_track: equ 0x18
|
||||||
|
|
||||||
|
; --------------------------------------------------------------
|
||||||
|
; TR-DOS error codes
|
||||||
|
|
||||||
|
trdos_error.no_errors equ 0
|
||||||
|
trdos_error.no_files equ 1
|
||||||
|
trdos_error.file_exists equ 2
|
||||||
|
trdos_error.no_space equ 3
|
||||||
|
trdos_error.directory_full equ 4
|
||||||
|
trdos_error.record_number_overflow equ 5
|
||||||
|
trdos_error.no_disk equ 6
|
||||||
|
trdos_error.disk_errors equ 7
|
||||||
|
trdos_error.syntax_errors equ 8
|
||||||
|
trdos_error.undefined_error equ 9
|
||||||
|
trdos_error.stream_already_opened equ 10
|
||||||
|
trdos_error.not_disk_file equ 11
|
||||||
|
trdos_error.stream_not_open equ 12
|
||||||
|
|
||||||
Loading…
Reference in New Issue
Block a user