This commit is contained in:
Anatoliy Belyanskiy 2023-11-07 03:03:24 +10:00
parent 96cc4816a1
commit 125f9faa01
7 changed files with 1346 additions and 1358 deletions

View File

@ -9,6 +9,8 @@
;*************************************** ;***************************************
INCLUDE 'INC/SPRINT00.INC' INCLUDE 'INC/SPRINT00.INC'
INCLUDE 'inc/rom_routines.inc'
INCLUDE 'Shared_Includes/constants/zx_char_codes.inc'
;*************************************** ;***************************************
;CNF_PORT EQU #74 ;CNF_PORT EQU #74
AUTO_4000 EQU 04000H AUTO_4000 EQU 04000H
@ -214,8 +216,7 @@ AUTO_00C8:
LD HL,RET_INS LD HL,RET_INS
AUTO_0100: AUTO_0100:
LD (HL),201 LD (HL),201
RST RST20 RST_ROM ROUTINE.clear_prb
DW 00EDFH
LD HL,L_SCR_SIZE LD HL,L_SCR_SIZE
LD (HL),2 LD (HL),2
LD HL,AUTO_128B LD HL,AUTO_128B
@ -254,8 +255,7 @@ AUTO_0140:
LD (NEW_PPC),HL LD (NEW_PPC),HL
XOR A XOR A
LD (NEW_S_PPC),A LD (NEW_S_PPC),A
RST RST20 RST_ROM ROUTINE.set_min
DW 016B0H
LD HL,(BAS_PROG) LD HL,(BAS_PROG)
DEC HL DEC HL
LD (DATA_ADR),HL LD (DATA_ADR),HL
@ -264,8 +264,7 @@ AUTO_0140:
OR A OR A
LD HL,AUTO_1B76 LD HL,AUTO_1B76
JR Z,AUTO_0166 JR Z,AUTO_0166
RST RST20 RST_ROM ROUTINE.report_0
DW 01BB0H
AUTO_0166: AUTO_0166:
PUSH HL PUSH HL
LD HL,RET_INS LD HL,RET_INS
@ -498,7 +497,7 @@ AUTO_030A:
CALL AUTO_3DC8 ; SET CONT_DISK CALL AUTO_3DC8 ; SET CONT_DISK
POP AF POP AF
AUTO_031A: AUTO_031A:
LD HL,AUTO_2FF3 ; <>ˆŽŠ ŠŽŒ€<C592> LD HL,TRDOS_CMD.LIST ; <>ˆŽŠ ŠŽŒ€<C592>
DEC HL DEC HL
LD C,0 LD C,0
AUTO_0320: AUTO_0320:
@ -522,7 +521,7 @@ AUTO_0320:
LD HL,FLAGS LD HL,FLAGS
RES 7,(HL) RES 7,(HL)
LD B,0 LD B,0
LD HL,AUTO_3008 LD HL,TRDOS_CMD.TABLE
DEC C DEC C
SLA C SLA C
ADD HL,BC ADD HL,BC
@ -1215,18 +1214,15 @@ AUTO_1052:
PUSH BC PUSH BC
PUSH DE PUSH DE
AUTO_1056: AUTO_1056:
RST RST20 RST_ROM ROUTINE.key_scan
DW 0028EH
AUTO_1059: AUTO_1059:
LD C,0 LD C,0
JR NZ,AUTO_1056 JR NZ,AUTO_1056
RST RST20 RST_ROM ROUTINE.key_test
DW 0031EH
JR NC,AUTO_1056 JR NC,AUTO_1056
DEC D DEC D
LD E,A LD E,A
RST RST20 RST_ROM ROUTINE.key_decode
DW 00333H
POP DE POP DE
POP BC POP BC
POP HL POP HL
@ -1966,9 +1962,8 @@ AUTO_166F:
LD (VAR_1),HL LD (VAR_1),HL
JP AUTO_1E23 JP AUTO_1E23
AUTO_1680: AUTO_1680:
RST RST20 RST_ROM ROUTINE.free_mem
DW 01F1AH LD HL,#FFFF
LD HL,0FFFFh
SBC HL,BC SBC HL,BC
LD A,H LD A,H
CP 16 CP 16
@ -2435,8 +2430,7 @@ CMD_MERGE:
LD (MED_LEN),BC LD (MED_LEN),BC
PUSH BC PUSH BC
INC BC INC BC
RST RST20 RST_ROM ROUTINE.bc_spaces
DW 00030H
AUTO_19D1: AUTO_19D1:
LD (HL),128 LD (HL),128
EX DE,HL EX DE,HL
@ -2450,8 +2444,7 @@ AUTO_19D1:
CALL AUTO_1921 CALL AUTO_1921
POP HL POP HL
LD DE,(BAS_PROG) LD DE,(BAS_PROG)
RST RST20 RST_ROM ROUTINE.me_new_lp
DW 008D2H
JP AUTO_03E1 JP AUTO_03E1
AUTO_19F2: AUTO_19F2:
EX DE,HL EX DE,HL
@ -2463,8 +2456,7 @@ AUTO_19F2:
LD B,H LD B,H
LD C,L LD C,L
AUTO_19FD: AUTO_19FD:
RST RST20 RST_ROM ROUTINE.test_room
DW 01F05H
RET RET
AUTO_1A01: AUTO_1A01:
LD DE,(BAS_PROG) LD DE,(BAS_PROG)
@ -2498,8 +2490,7 @@ AUTO_1A31:
POP DE POP DE
POP HL POP HL
PUSH BC PUSH BC
RST RST20 RST_ROM ROUTINE.reclaim_1
DW 019E5H
POP BC POP BC
CALL AUTO_1E32 CALL AUTO_1E32
INC HL INC HL
@ -2963,14 +2954,13 @@ CMD_RUN:
AUTO_1D63: AUTO_1D63:
LD HL,BAS_DOS_FLG LD HL,BAS_DOS_FLG
LD A,(HL) LD A,(HL)
DB 254 CP #FF
AUTO_1D68:
RST R38
LD (HL),0 LD (HL),0
RET NZ RET NZ
RST RST20 RST_ROM ROUTINE.set_work
DW 016BFH
RET RET
; <20>஢¥àª , ¨¤¥â «¨ ¯à®¢¥àª  áâப¨ ­  ᨭ⠪á¨á ¨«¨ ¢ë¯®«­¥­¨¥ ª®¬ ­¤ë.
; …᫨ ¨¤¥â ¢ë¯®«­¥­¨¥, â® ä« £ Z ¡ã¤¥â á¡à®è¥­, ¨­ ç¥ ãáâ ­®¢«¥­.
AUTO_1D70: AUTO_1D70:
BIT 7,(IY+1) BIT 7,(IY+1)
RET RET
@ -2986,32 +2976,26 @@ AUTO_1D7B:
OPEN_CH0: OPEN_CH0:
XOR A XOR A
AUTO_1D84: AUTO_1D84:
RST RST20 RST_ROM ROUTINE.chan_open
DW 01601H
RET RET
OPEN_CH2: OPEN_CH2:
LD A,2 LD A,2
JR AUTO_1D84 JR AUTO_1D84
AUTO_1D8C: AUTO_1D8C:
RST RST20 RST_ROM ROUTINE.get_char
DW 00018H
AUTO_1D8F: AUTO_1D8F:
RET RET
CALL OPEN_CH0 CALL OPEN_CH0
RST RST20 RST_ROM ROUTINE.editor
DW 00F2CH
RET RET
AUTO_1D97: AUTO_1D97:
RST RST20 RST_ROM ROUTINE.cls
DW 00D6BH
RET RET
AUTO_1D9B: AUTO_1D9B:
RST RST20 RST_ROM ROUTINE.look_vars
DW 028B2H
RET RET
AUTO_1D9F: AUTO_1D9F:
RST RST20 RST_ROM ROUTINE.cls_lower
DW 00D6EH
RET RET
AUTO_1DA3: AUTO_1DA3:
LD C,A LD C,A
@ -3022,25 +3006,20 @@ AUTO_1DA9:
PUSH BC PUSH BC
CALL xchg_intf1 CALL xchg_intf1
POP BC POP BC
RST RST20 RST_ROM ROUTINE.out_num_1
DW 01A1BH
CALL xchg_intf1 CALL xchg_intf1
RET RET
BAS_2BF1: BAS_2BF1:
RST RST20 RST_ROM ROUTINE.stack_fetch
DW 02BF1H
RET RET
AUTO_1DB9: AUTO_1DB9:
RST RST20 RST_ROM ROUTINE.find_int2
DW 01E99H
RET RET
AUTO_1DBD: AUTO_1DBD:
RST RST20 RST_ROM ROUTINE.expt_exp
DW 01C8CH
RET RET
AUTO_1DC1: AUTO_1DC1:
RST RST20 RST_ROM ROUTINE.expt_1num
DW 01C82H
RET RET
AUTO_1DC5: AUTO_1DC5:
LD HL,(ADR_DOS_COM) LD HL,(ADR_DOS_COM)
@ -3088,27 +3067,22 @@ AUTO_1E0B:
RET RET
AUTO_1E1C: AUTO_1E1C:
LD HL,(ADR_DOS_COM) LD HL,(ADR_DOS_COM)
RST RST20 RST_ROM ROUTINE.remove_fp
DW 011A7H
RET RET
AUTO_1E23: AUTO_1E23:
LD HL,(WORK_SP) LD HL,(WORK_SP)
RST RST20 RST_ROM ROUTINE.bc_spaces
DW 00030H
AUTO_1E29: AUTO_1E29:
RET RET
BASIC_RST20: BASIC_RST20:
RST RST20 RST_ROM ROUTINE.next_char
DW 00020H
AUTO_1E2D: AUTO_1E2D:
RET RET
AUTO_1E2E: AUTO_1E2E:
RST RST20 RST_ROM ROUTINE.reclaim_2
DW 019E8H
RET RET
AUTO_1E32: AUTO_1E32:
RST RST20 RST_ROM ROUTINE.make_room
DW 01655H
RET RET
READ_TRK_NUM: READ_TRK_NUM:
CALL READ_ADR_LABL CALL READ_ADR_LABL
@ -3319,8 +3293,7 @@ AUTO_1F55:
CALL AUTO_1DA9 CALL AUTO_1DA9
JP AUTO_01D3 JP AUTO_01D3
AUTO_1FB9: AUTO_1FB9:
DB 1,9,2,10,3,11,4,12,5,13,6,14,7,15,8 DB 1,9,2,10,3,11,4,12,5,13,6,14,7,15,8,16,1
DB 16,1
test_d_traks: test_d_traks:
CALL get_disk_time CALL get_disk_time
OR 17 OR 17
@ -3650,8 +3623,7 @@ AUTO_2206:
JP AUTO_03D9 JP AUTO_03D9
AUTO_220F: AUTO_220F:
LD A,(MED_LEN) LD A,(MED_LEN)
RST RST20 RST_ROM ROUTINE.str_data1
DW 01727H
LD A,B LD A,B
OR C OR C
JP NZ,AUTO_221B JP NZ,AUTO_221B
@ -4052,8 +4024,7 @@ AUTO_2492:
AUTO_2494: AUTO_2494:
LD (ERR_NR),A LD (ERR_NR),A
CALL AUTO_20E5 CALL AUTO_20E5
RST RST20 RST_ROM ROUTINE.error_4
DW 00058H
RET RET
AUTO_249E: AUTO_249E:
LD A,23 LD A,23
@ -4285,8 +4256,7 @@ AUTO_2614:
AUTO_261D: AUTO_261D:
CP 13 CP 13
JR Z,AUTO_2614 JR Z,AUTO_2614
RST RST20 RST_ROM ROUTINE.add_char_keeping_current_mode
DW 00F85H
JR AUTO_260F JR AUTO_260F
AUTO_2626: AUTO_2626:
CALL AUTO_262B CALL AUTO_262B
@ -4327,8 +4297,7 @@ CMD_CLOSE:
CALL AUTO_1E0B CALL AUTO_1E0B
CALL SINTAX_RET CALL SINTAX_RET
LD A,(MED_LEN) LD A,(MED_LEN)
RST RST20 RST_ROM ROUTINE.str_data1
DW 01727H
LD A,B LD A,B
OR C OR C
JP Z,AUTO_01D3 JP Z,AUTO_01D3
@ -4718,27 +4687,29 @@ AUTO_2992:
RET RET
; ;
; ;
; ; ‚믮«­¥­¨¥ ª®¬ ­¤ë "40". “áâ ­®¢¨â¥ #5D11 ¨ #5C3B. ˆá¯®«ì§ã¥âáï â ª¦¥ á  ¤à¥á :
CMD_40: ;#2998 (¢ë¯®«­¥­¨¥ ª®¬ ­¤ë ãáâ ­®¢ª¨ ⨯  ¤¨áª®¢®¤ ; ãáâ ­®¢¨â¥ ¢á¥ ¤«ï #2997 ¯«îá ¢ A ⨯ ¤¨áª®¢®¤ ).
XOR A CMD_40: XOR A ;¤¨áª®¢®¤ 40-¤®à®¦¥ç­ë© ®¤­®áâ®à®­­¨©
;Žè¨¡ª !!! ‚®-¯¥à¢ëå, ¯®ç¥¬ã ¤¨áª®¢®¤ ®¤­®áâ®à®­­¨©?
; ¢®-¢â®àëå, ­ ¤® ¯à®¢¥àïâì ¢®§¬®¦­®áâì ¨á¯®«ì§®¢ ­¨ï ¤¨áª®¢®¤  ¢ âॡ㥬®¬ ०¨¬¥.
AUTO_2998: AUTO_2998:
BLOCK #2998 - $,255 LD (MED_START),A ;á®åà ­¥­¨¥ ⨯  ¤¨áª®¢®¤ 
LD (MED_START),A CALL SINTAX_RET ;¥á«¨ ¨¤¥â ¯à®¢¥àª  ­  ᨭ⠪á¨
CALL SINTAX_RET CALL TEST_CR ;¯à®¢¥àª  ¢â®à®£® ᨬ¢®«  áâப
CALL TEST_CR JP Z,CMD_ERROR ;¥á«¨ íâ® ENTER, â® *ERROR*
JP Z,CMD_ERROR CALL get_disk_type ;¡¥à¥¬  ¤à¥á ï祩ª¨ á ⨯®¬ ¤¨á
CALL get_disk_type LD A,(MED_START) ;ãáâ ­®¢ª  ⨯  ¤¨áª®¢®¤ 
LD A,(MED_START)
LD (HL),A LD (HL),A
JP AUTO_03E1 JP AUTO_03E1 ;á®®¡é¥­¨¥ O.K.
; ; ‚믮«­¥­¨¥ ª®¬ ­¤ë "80". “áâ ­®¢¨â¥ #5D11 ¨ #5C3B.
; CMD_80: LD A,#80 ;¤¨áª®¢®¤ 80-¤®à®¦¥ç­ë© ®¤­®áâ®à®­­¨©
; ;Žè¨¡ª !!! ‚®-¯¥à¢ëå, ¯®ç¥¬ã ¤¨áª®¢®¤ ®¤­®áâ®à®­­¨©?
CMD_80: ; ¢®-¢â®àëå, ­ ¤® ¯à®¢¥àïâì ¢®§¬®¦­®áâì ¨á¯®«ì§®¢ ­¨ï ¤¨áª®¢®¤  ¢ âॡ㥬®¬ ०¨¬¥.
LD A,128
JR AUTO_2998 JR AUTO_2998
;
;
;
;€¤à¥á #29B2. ’¥ªáâë á®®¡é¥­¨© TR-DOS.
AUTO_29B2: AUTO_29B2:
DB 13,"*ERROR*",141 DB 13,"*ERROR*",141
AUTO_29BB: AUTO_29BB:
@ -5589,44 +5560,69 @@ AUTO_2FDE:
LD HL,BUFER LD HL,BUFER
LDIR LDIR
RET RET
////////////////////////////////////////////
TRDOS_CMD:
; ’ ¡«¨æ  ª®¬ ­¤ TR-DOS.
.LIST: DB ZX_Token.cat
DB '*'
DB ZX_Token.format
DB ZX_Token.move
; ;
; COMANDS DB ZX_Token.new
DB ZX_Token.erase
DB ZX_Token.load
DB ZX_Token.save
; ;
AUTO_2FF3: DB ZX_Token.return
DB 207,42,208,209 DB ZX_Token.peek
DB 230,210,239,248 DB ZX_Token.poke
DB 254,190,244,213 DB ZX_Token.merge
DB 247,211,212,255 ;
DB 52,236,56,240 DB ZX_Token.run
DB 214,'/' DB ZX_Token.open_channel
AUTO_3008: DB ZX_Token.close_channel
DW CMD_CAT DB ZX_Token.copy
;
DB '4'
DB ZX_Token.go_to
DB '8'
DB ZX_Token.list
;
DB ZX_Token.verify
DB '/'
;;
;;
.Size EQU $ - TRDOS_CMD.LIST
; ’ ¡«¨æ   ¤à¥á®¢ ¯®¤¯à®£à ¬¬, ¢ë¯®«­ïîé¨å ª®¬ ­¤ë TR-DOS.
.TABLE: DW CMD_CAT
DW CMD_STAR DW CMD_STAR
DW CMD_FORMAT DW CMD_FORMAT
DW CMD_MOVE DW CMD_MOVE
;
DW CMD_NEW DW CMD_NEW
DW CMD_ERASE DW CMD_ERASE
DW CMD_LOAD DW CMD_LOAD
DW CMD_SAVE DW CMD_SAVE
;
DW CMD_RETURN DW CMD_RETURN
DW CMD_PEEK DW CMD_PEEK
DW CMD_POKE DW CMD_POKE
DW CMD_MERGE DW CMD_MERGE
;
DW CMD_RUN DW CMD_RUN
DW CMD_OPEN DW CMD_OPEN
DW CMD_CLOSE DW CMD_CLOSE
DW CMD_COPY DW CMD_COPY
;
DW CMD_40 DW CMD_40
DW CMD_GOTO DW CMD_GOTO
DW CMD_80 DW CMD_80
DW CMD_LIST DW CMD_LIST
;
DW CMD_VERIFY DW CMD_VERIFY
DW CMD_MSDOS DW CMD_MSDOS
////////////////////////////////////////////
; ;
; ;
; ;
@ -5665,11 +5661,9 @@ AUTO_3057: ;
LD (HL),A LD (HL),A
INC HL INC HL
EX DE,HL EX DE,HL
RST RST20 RST_ROM ROUTINE.differ
DW 019DDH
PUSH BC PUSH BC
RST RST20 RST_ROM ROUTINE.reclaim_2
DW 019E8H
POP BC POP BC
LD A,(DOS_ERROR) LD A,(DOS_ERROR)
OR A OR A
@ -5760,8 +5754,7 @@ AUTO_30E1:
LD (DOS_ERROR),A LD (DOS_ERROR),A
DEC HL DEC HL
DEC HL DEC HL
RST RST20 RST_ROM ROUTINE.line_addr
DW 0196EH
RET RET
AUTO_30F4: AUTO_30F4:
LD A,255 LD A,255
@ -5947,14 +5940,14 @@ FORM_STATE:
INC HL INC HL
LD A,(HL) LD A,(HL)
FORM_NO_NEXT: FORM_NO_NEXT:
CP 0Dh CP #0D
RET Z RET Z
CP 80H CP #80
RET Z RET Z
JP NC,CMD_ERROR JP NC,CMD_ERROR
CP ' ' CP ' '
JP C,CMD_ERROR JP C,CMD_ERROR
AND 0DFh AND #DF
LD (MED_START+1),A LD (MED_START+1),A
RET RET
; ;
@ -6048,8 +6041,7 @@ FORM_X03:
CALL AUTO_1C57 CALL AUTO_1C57
CALL AUTO_1D97 CALL AUTO_1D97
LD A,2 LD A,2
RST RST20 RST_ROM ROUTINE.chan_open
DW 01601H
LD HL,NEW_NAME LD HL,NEW_NAME
RST PRINT_LN RST PRINT_LN
@ -6102,8 +6094,7 @@ F_FAST: ; Turbo/FAST FORMAT
JR FORM_X08 JR FORM_X08
F_TURBO_DT: F_TURBO_DT:
DB 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 DB 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1
DB 16,1
SUB_HL_14: SUB_HL_14:
@ -6115,8 +6106,7 @@ SUB_HL_14:
RET RET
LOW_CLS_AT00: LOW_CLS_AT00:
RST RST20 RST_ROM ROUTINE.cls_lower
DW 00D6EH
LD HL,MSG_AT00 LD HL,MSG_AT00
JP PRINT_LINE JP PRINT_LINE
@ -6480,8 +6470,7 @@ BEEP_1:
LD HL,200 ; BEEP LD HL,200 ; BEEP
LD D,H LD D,H
LD E,(IY-1) LD E,(IY-1)
RST RST20 RST_ROM ROUTINE.beeper
DW 03B5h
POP AF POP AF
RET RET
@ -6621,8 +6610,7 @@ PRINT_SYM:
RST R38 RST R38
RST R38 RST R38
AUTO_3D94: AUTO_3D94:
RST RST20 RST_ROM ROUTINE.print_a
DW #0010 ;!HARDCODE
RET RET
AUTO_3D98: AUTO_3D98:
LD A,8 LD A,8
@ -6630,12 +6618,10 @@ WG93_EXE:
OUT (WG_COM),A OUT (WG_COM),A
AUTO_3D9C: AUTO_3D9C:
PUSH HL PUSH HL
RST RST20 RST_ROM ROUTINE.break_key
DW #1F54 ;!HARDCODE
;RET_1F54: ;RET_1F54:
JR C,AUTO_3DA5 JR C,AUTO_3DA5
RST RST20 RST_ROM ROUTINE.report_l
DW #1B7B ;!HARDCODE
AUTO_3DA5: AUTO_3DA5:
POP HL POP HL
IN A,(P_DOS_FF) IN A,(P_DOS_FF)

@ -1 +1 @@
Subproject commit 866c86ed7b05965f52b41997aab711a32c669cbc Subproject commit 4c835d305fd5d1bc296039706d5e163c1f2224ca

View File

@ -453,9 +453,9 @@ RAMD_SET1:
RAMD_SYM: RAMD_SYM:
LD A,(DE) LD A,(DE)
INC DE INC DE
CP 20H CP ' '
JR Z,RAMD_SYM JR Z,RAMD_SYM
AND 223 AND %1101'1111
CP 'E' CP 'E'
RET C RET C
SUB 'E' SUB 'E'
@ -468,7 +468,7 @@ RAMD_SYM:
INC DE INC DE
JR Z,RAMD_SYM_OK JR Z,RAMD_SYM_OK
DEC DE DEC DE
CP 21H CP ' '+1
JR C,RAMD_SYM_OK JR C,RAMD_SYM_OK
POP AF POP AF
SCF SCF

View File

@ -1584,7 +1584,7 @@ HDD_MSG_LEN EQU $-HDD_MSG
;HDD_MSG_NO: DB "Boot record not found" ;HDD_MSG_NO: DB "Boot record not found"
;HDD_NO_LEN EQU $-HDD_MSG_NO ;HDD_NO_LEN EQU $-HDD_MSG_NO
SAVE_AUTOSTART: SAVE_AUTOSTART:
LD HL,8000H LD HL,#8000
LD DE,HDD_MSG LD DE,HDD_MSG
LD B,HDD_MSG_LEN LD B,HDD_MSG_LEN
SAVE_AUTO_L1: SAVE_AUTO_L1:
@ -1599,7 +1599,7 @@ SAVE_AUTO_L1:
CALL EXP_HDD CALL EXP_HDD
RET C RET C
LD HL,8000H LD HL,#8000
LD A,0 LD A,0
LD DE,1 LD DE,1
LD IX,0 LD IX,0

View File

@ -4,7 +4,7 @@
MACRO WAIT_HDD MACRO WAIT_HDD
.LL1: .LL1:
LD BC,P_HDST LD BC,IDE.Read.Status
IN A,(C) IN A,(C)
BIT 7,A BIT 7,A
JR NZ,.LL1 JR NZ,.LL1
@ -49,14 +49,14 @@ HD_CMD_X: ; C - COMAND ( 5 - RD, 6 - WR )
HD_BPB_PREP: HD_BPB_PREP:
LD D,A LD D,A
IN A,(PAGE3) IN A,(SLOT3)
EX AF,AF' EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (PAGE3),A OUT (SLOT3),A
LD A,(HD_IDF_ADR+12) LD A,(SYS_PAGE.HD_IDF_ADR.sectors)
LD E,A LD E,A
EX AF,AF' EX AF,AF'
OUT (PAGE3),A OUT (SLOT3),A
LD A,D LD A,D
LD D,0 LD D,0
LD IX,0 LD IX,0
@ -76,16 +76,16 @@ HD_PREPARE:
HD_PREP_L1: HD_PREP_L1:
LD A,B LD A,B
LD BC,P_S_CNT ; “áâ ­®¢¨âì ç¨á«® ᥪâ®à®¢ ¤«ï ç⥭¨ï LD BC,IDE.Write.Counter ; “áâ ­®¢¨âì ç¨á«® ᥪâ®à®¢ ¤«ï ç⥭¨ï
OUT (C),A OUT (C),A
LD BC,P_S_NUM LD BC,IDE.Write.Sector
OUT (C),L ; …ŠŽ<E28099> OUT (C),L ; …ŠŽ<E28099>
LD BC,P_C_LOW LD BC,IDE.Write.CylinderLow
OUT (C),E ; ¤®à®¦ª  low OUT (C),E ; ¤®à®¦ª  low
LD BC,P_C_HIG LD BC,IDE.Write.CylinderHigh
OUT (C),D ; ¤®à®¦ª  high OUT (C),D ; ¤®à®¦ª  high
LD BC,P_HD_CS LD BC,IDE.Write.DeviceHead
DEC B DEC B
IN A,(C) IN A,(C)
AND 0F0H AND 0F0H
@ -112,19 +112,18 @@ HD_CMD_3: ;
RET C RET C
EXX EXX
LD C,PAGE3 LD C,SLOT3
IN B,(C) IN B,(C)
EXX EXX
OUT (PAGE3),A OUT (SLOT3),A
EX AF,AF' EX AF,AF'
LD A,0C0H LD A,0C0H
OUT (RGADR),A OUT (RGADR),A
LD BC,P_CMD LD BC,IDE.Write.Command
LD A,20H LD A,#20
; OUT (C),A ; OUT (C),A
AND A AND A
RET RET
@ -159,16 +158,16 @@ HD_RD_CMD:
HD_RD_L1: HD_RD_L1:
EXX EXX
LD C,PAGE3 LD C,SLOT3
IN B,(C) IN B,(C)
EXX EXX
OUT (PAGE3),A OUT (SLOT3),A
EX AF,AF' EX AF,AF'
LD A,0C0H LD A,0C0H
OUT (RGADR),A OUT (RGADR),A
LD BC,P_CMD LD BC,IDE.Write.Command
LD A,20H LD A,20H
OUT (C),A OUT (C),A
@ -184,7 +183,7 @@ HD_RET:
EXX EXX
OUT (C),B OUT (C),B
EXX EXX
LD BC,P_ERR LD BC,IDE.Read.Error
IN A,(C) IN A,(C)
AND A AND A
SCF SCF
@ -195,7 +194,7 @@ HD_RET:
RET RET
HD_READ_CONT: HD_READ_CONT:
LD BC,P_DATS LD BC,IDE.Read.Data
HD_RD_CONT1: HD_RD_CONT1:
DUP 16 DUP 16
@ -216,12 +215,12 @@ HD_RD_CONT2:
JR NZ,HD_RD_L2 JR NZ,HD_RD_L2
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (PAGE3),A OUT (SLOT3),A
EX AF,AF' EX AF,AF'
LD HL,RAMD_FAT LD HL,SYS_PAGE.RAMD_FAT
LD L,A LD L,A
LD A,(HL) LD A,(HL)
OUT (PAGE3),A OUT (SLOT3),A
EX AF,AF' EX AF,AF'
LD HL,0C000H LD HL,0C000H
JR HD_RD_L2 JR HD_RD_L2
@ -243,13 +242,13 @@ HD_WR_CMD:
RET C RET C
EXX EXX
LD C,PAGE3 LD C,SLOT3
IN B,(C) IN B,(C)
EXX EXX
OUT (PAGE3),A OUT (SLOT3),A
EX AF,AF' EX AF,AF'
LD BC,P_CMD LD BC,IDE.Write.Command
LD A,30H LD A,30H
OUT (C),A OUT (C),A
@ -262,7 +261,7 @@ HD_WR_L2:
;####################################### ;#######################################
IF HDD_TYPE IF HDD_TYPE
LD BC,P_DATS+100H LD BC,IDE.Read.Data+100H
LD D,32 LD D,32
HD_WR_CONT1: HD_WR_CONT1:
DUP 16 DUP 16
@ -274,7 +273,7 @@ HD_WR_CONT1:
;####################################### ;#######################################
ELSE ELSE
LD D,64 LD D,64
LD BC,P_DATS+100H LD BC,IDE.Read.Data+100H
HD_WR_LOOP: HD_WR_LOOP:
@ -316,12 +315,12 @@ HD_WR_LOOP:
JR NZ,HD_WR_L2 JR NZ,HD_WR_L2
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (PAGE3),A OUT (SLOT3),A
EX AF,AF' EX AF,AF'
LD HL,RAMD_FAT LD HL,SYS_PAGE.RAMD_FAT
LD L,A LD L,A
LD A,(HL) LD A,(HL)
OUT (PAGE3),A OUT (SLOT3),A
EX AF,AF' EX AF,AF'
LD HL,0C000H LD HL,0C000H
@ -333,14 +332,14 @@ HD_CMD_1:
POP AF POP AF
HD_CMD1_EX: HD_CMD1_EX:
ld a,0A0h ld a,0A0h
LD BC,P_HD_CS LD BC,IDE.Write.DeviceHead
OUT (C),A OUT (C),A
LD A,90h ; DIAGNOSTICS LD A,90h ; DIAGNOSTICS
CALL HD_CMD_EXE CALL HD_CMD_EXE
AND A AND A
BIT 0,A BIT 0,A
RET Z RET Z
LD BC,P_ERR LD BC,IDE.Read.Error
IN A,(C) IN A,(C)
CP 1 CP 1
RET Z RET Z
@ -354,7 +353,7 @@ HD_CMD_2:
LD E,0 LD E,0
LD BC,P_HD_CS LD BC,IDE.Write.DeviceHead
LD A,0A0H LD A,0A0H
OUT (C),A OUT (C),A
@ -364,7 +363,7 @@ HD_CMD_2:
SET 0,E SET 0,E
NO_HDD1: NO_HDD1:
LD BC,P_HD_CS LD BC,IDE.Write.DeviceHead
LD A,0B0H LD A,0B0H
OUT (C),A OUT (C),A
@ -383,15 +382,15 @@ NO_HDD2:
TEST_HDD_DRV: TEST_HDD_DRV:
LD HL,01FEH LD HL,01FEH
LD BC,P_S_CNT LD BC,IDE.Write.Counter
OUT (C),L OUT (C),L
LD BC,P_S_NUM LD BC,IDE.Write.Sector
OUT (C),H OUT (C),H
LD BC,P_S_CNT+256 LD BC,IDE.Write.Counter+256
IN A,(C) IN A,(C)
CP L CP L
RET NZ RET NZ
LD BC,P_S_NUM+256 LD BC,IDE.Write.Sector+256
IN A,(C) IN A,(C)
CP H CP H
RET RET
@ -400,7 +399,7 @@ HD_CMD_0:
POP AF POP AF
LD BC,P_HD_CS LD BC,IDE.Write.DeviceHead
LD A,0A0H LD A,0A0H
OUT (C),A OUT (C),A
@ -412,14 +411,14 @@ HD_C0_L3:
WAIT_HDD WAIT_HDD
LD BC,P_CMD LD BC,IDE.Write.Command
LD A,0ECH LD A,0ECH
OUT (C),A OUT (C),A
WAIT_HDD WAIT_HDD
;HD_C0_L1: ;HD_C0_L1:
; ;
; LD BC,P_HDST ; LD BC,IDE.Read.Status
; IN A,(C) ; IN A,(C)
; BIT 7,A ; BIT 7,A
; JR NZ,HD_C0_L1 ; JR NZ,HD_C0_L1
@ -431,7 +430,7 @@ HD_C0_L3:
RET RET
HD_ABSENT: HD_ABSENT:
LD BC,P_HD_CS LD BC,IDE.Write.DeviceHead
LD A,0B0H LD A,0B0H
OUT (C),A OUT (C),A
@ -442,40 +441,40 @@ HD_ABSENT:
RET RET
HD_C0_L2: HD_C0_L2:
LD BC,P_DATS LD BC,IDE.Read.Data
LD HL,HD_IDF_ADR LD HL,SYS_PAGE.HD_IDF_ADR
IN A,(PAGE3) IN A,(SLOT3)
LD D,A LD D,A
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (PAGE3),A OUT (SLOT3),A
INIR INIR
INIR INIR
;HD_C0_L4: ;HD_C0_L4:
; LD BC,P_HDST ; LD BC,IDE.Read.Status
; IN A,(C) ; IN A,(C)
; BIT 7,A ; BIT 7,A
; JR NZ,HD_C0_L4 ; JR NZ,HD_C0_L4
LD A,(HD_IDF_ADR+12) ; ç¨á«® ᥪâ®à®¢ LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; ç¨á«® ᥪâ®à®¢
LD C,A LD C,A
LD B,0 LD B,0
LD HL,0 LD HL,0
LD A,(HD_IDF_ADR+6) ; ç¨á«® £®«®¢®ª LD A,(SYS_PAGE.HD_IDF_ADR.heads) ; ç¨á«® £®«®¢®ª
LOOP_XX: LOOP_XX:
ADD HL,BC ADD HL,BC
DEC A DEC A
JR NZ,LOOP_XX JR NZ,LOOP_XX
LD (HD_IDF_ADR+4),HL LD (SYS_PAGE.HD_IDF_ADR.sec_cyl),HL
WAIT_HDD WAIT_HDD
LD BC,P_HD_CS LD BC,IDE.Write.DeviceHead
DEC B DEC B
IN A,(C) IN A,(C)
AND 010H AND 010H
LD B,A LD B,A
LD A,(HD_IDF_ADR+6) ; ç¨á«® £®«®¢®ª LD A,(SYS_PAGE.HD_IDF_ADR.heads) ; ç¨á«® £®«®¢®ª
DEC A DEC A
AND 0FH AND 0FH
@ -483,22 +482,22 @@ LOOP_XX:
OR B OR B
LD H,A LD H,A
LD A,(HD_IDF_ADR+99) LD A,(SYS_PAGE.HD_IDF_ADR+99) ;!HARDCODE
BIT 1,A BIT 1,A
JR Z,HD_C0_NO_LBA JR Z,HD_C0_NO_LBA
SET 6,H SET 6,H
HD_C0_NO_LBA: HD_C0_NO_LBA:
LD BC,P_HD_CS LD BC,IDE.Write.DeviceHead
OUT (C),H OUT (C),H
LD A,(HD_IDF_ADR+12) ; ç¨á«® ᥪâ®à®¢ LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; ç¨á«® ᥪâ®à®¢
LD BC,P_S_CNT LD BC,IDE.Write.Counter
OUT (C),A OUT (C),A
LD A,D LD A,D
OUT (PAGE3),A OUT (SLOT3),A
LD A,91H ; SET HDD PARAMETERS LD A,91H ; SET HDD PARAMETERS
CALL HD_CMD_EXE CALL HD_CMD_EXE
@ -512,7 +511,7 @@ HD_C0_NO_LBA:
HD_CMD_EXE: HD_CMD_EXE:
CALL HD_WAIT CALL HD_WAIT
RET C RET C
LD BC,P_CMD LD BC,IDE.Write.Command
OUT (C),A OUT (C),A
HD_WAIT: HD_WAIT:
PUSH DE PUSH DE
@ -522,7 +521,7 @@ HD_WAIT:
LD DE,0 LD DE,0
HD_WAIT1: HD_WAIT1:
LD BC,P_HDST LD BC,IDE.Read.Status
IN A,(C) IN A,(C)
BIT 7,A BIT 7,A
JR Z,HD_W_EXIT JR Z,HD_W_EXIT
@ -565,7 +564,7 @@ HD_CALC_SECS:
RET NZ ; ®è¨¡ª , ᫨誮¬ ¡®«ì让 HDD.. RET NZ ; ®è¨¡ª , ᫨誮¬ ¡®«ì让 HDD..
PUSH BC PUSH BC
LD BC,P_HD_CS LD BC,IDE.Write.DeviceHead
DEC B DEC B
IN A,(C) IN A,(C)
BIT 6,A BIT 6,A
@ -577,14 +576,14 @@ HD_CALC_SECS:
PUSH IX PUSH IX
POP HL POP HL
IN A,(PAGE3) IN A,(SLOT3)
LD C,A LD C,A
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (PAGE3),A OUT (SLOT3),A
LD A,C LD A,C
LD (COPY_PAGE3),A LD (SYS_PAGE.COPY_SLOT3),A
LD BC,(HD_IDF_ADR+4) ; ç¨á«® ᥪâ®à®¢ ­  樫¨­¤à¥ LD BC,(SYS_PAGE.HD_IDF_ADR.sec_cyl) ; ç¨á«® ᥪâ®à®¢ ­  樫¨­¤à¥
; HL,DE - ­®¬¥à ᥪâ®à  ; HL,DE - ­®¬¥à ᥪâ®à 
; BC - ç¨á«® ᥪâ®à®¢ ­  樫¨­¤à¥ ; BC - ç¨á«® ᥪâ®à®¢ ­  樫¨­¤à¥
@ -609,7 +608,7 @@ NO_ADD: INC DE
DIV_END: ; DE - १ã«ìâ â, HL - ®áâ â®ª DIV_END: ; DE - १ã«ìâ â, HL - ®áâ â®ª
; DE - 樫¨­¤à ; DE - 樫¨­¤à
LD A,(HD_IDF_ADR+12) ; A - ç¨á«® ᥪâ®à®¢ ­  ¤®à®¦ª¥ LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; A - ç¨á«® ᥪâ®à®¢ ­  ¤®à®¦ª¥
; HL - ­®¬¥à ᥪâ®à  ¢ 樫¨­¤à¥ ; HL - ­®¬¥à ᥪâ®à  ¢ 樫¨­¤à¥
LD B,0 LD B,0
LD C,A LD C,A
@ -626,8 +625,8 @@ HD_CALC_LOOP2:
INC L INC L
LD H,A ; HL - HEAD,SEC LD H,A ; HL - HEAD,SEC
LD A,(COPY_PAGE3) LD A,(SYS_PAGE.COPY_SLOT3)
OUT (PAGE3),A OUT (SLOT3),A
POP BC POP BC
AND A AND A

View File

@ -3,7 +3,8 @@
DEVICE ZXSPECTRUM128 DEVICE ZXSPECTRUM128
ORG 0 ORG 0
INCLUDE 'INC/SPRINT00.INC' ; ª®­áâ ­âë, ¬ ªà®áë.. ;INCLUDE 'INC/SPRINT00.INC' ; ª®­áâ ­âë, ¬ ªà®áë..
INCLUDE 'shared_includes/constants/sp2000.INC' ; ª®­áâ ­âë, ¬ ªà®áë..
; *************************** ; ***************************
; ***** BEGIN EXPANSION ***** ; ***** BEGIN EXPANSION *****
; *************************** ; ***************************
@ -64,7 +65,7 @@ HD_CMD_XR:
BLOCK #3FE8-$,255 BLOCK #3FE8-$,255
HD_EXP_RET: HD_EXP_RET:
PUSH AF PUSH AF
LD A,D_ROM16OFF LD A,CNF_PORT.ZX_BIOS
;!TEST ;!TEST
;OUT (SYS_PORT_ON),A ;OUT (SYS_PORT_ON),A
OUT (CNF_PORT),A OUT (CNF_PORT),A
@ -76,16 +77,16 @@ HD_EXP_RET:
HD_DOS_RET: HD_DOS_RET:
PUSH AF PUSH AF
DI DI
LD A,D_ROM16OFF LD A,CNF_PORT.ZX_BIOS
OUT (SYS_PORT_OFF),A OUT (SYS_PORT.OFF),A
JR HD_CMD_XR JR HD_CMD_XR
;***********************************************************************; ;***********************************************************************;
BLOCK #3FF8-$,255 BLOCK #3FF8-$,255
EXP_FNS_RET: EXP_FNS_RET:
PUSH AF PUSH AF
LD A,D_ROM16OFF LD A,CNF_PORT.ZX_BIOS
OUT (SYS_PORT_OFF),A OUT (SYS_PORT.OFF),A
//JP HD_CMD_XR_RET //JP HD_CMD_XR_RET
RET RET

File diff suppressed because it is too large Load Diff