mirror of
https://github.com/Tolik-Trek/ZX-SP-ROMs.git
synced 2026-06-15 01:11:46 +03:00
...
This commit is contained in:
parent
96cc4816a1
commit
125f9faa01
242
SP_TRDOS.ASM
242
SP_TRDOS.ASM
@ -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
|
||||
|
||||
////////////////////////////////////////////
|
||||
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 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
|
||||
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
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
13
ZX_EXP2.ASM
13
ZX_EXP2.ASM
@ -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
|
||||
|
||||
|
||||
2258
inc/rom_routines.inc
2258
inc/rom_routines.inc
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user