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

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

View File

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

View File

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

View File

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

View File

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

File diff suppressed because it is too large Load Diff