mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-17 18:30:35 +03:00
new SCANDRV in DSS. in SHELL fixed bug in READBAT proc.
This commit is contained in:
parent
ca947dec92
commit
7bbdc8de36
@ -1163,7 +1163,7 @@ A10AB: pop af
|
||||
; 6 - ¯à¨â¥à £®â®¢/¢ë¢®¤¨â ®ç¥à¥¤®© ᨬ¢®« (1/0)
|
||||
; 7 - ¯à¨â¥à ᢮¡®¤¥/§ ïâ (1/0)
|
||||
;
|
||||
; ¢å®¤: A - ᨬ¢®«
|
||||
; ¢å®¤: A - ᨬ¢®«
|
||||
; ¢ë室: B - ᨬ¢®«
|
||||
; CF - ®è¨¡ª , A=¡ ©â á®áâ®ï¨ï (¡¨âë 7..3)
|
||||
;/////////////////////////////////////////////////////////////////////
|
||||
|
||||
@ -1065,7 +1065,7 @@ DIRSIZE: WORD 0 ; ࠧ
|
||||
|
||||
|
||||
; Œ áᨢ «®£. ®¬¥à®¢ ¡ ®ª à áè¨à¥¨ï „Ž‘
|
||||
BANKTBL: BLOCK USING_MEMPAGES,#FF
|
||||
BANKTBL: BLOCK USING_MEMPAGES+1,#FF ; +1 ¤«ï COREPAGE
|
||||
|
||||
|
||||
|
||||
|
||||
@ -43,7 +43,7 @@ FM_BUF: _sFM
|
||||
|
||||
; ¢ë室¥ ¡¥§ ®è¨¡®ª IY 㪠§ë¢ ¥â ä ©«®¢ë© ¬ ¨¯ã«ïâ®à
|
||||
MACRO _mFM_FIND
|
||||
CP FMCOUNT+1
|
||||
CP FMCOUNT
|
||||
JR NC,ABS_FM
|
||||
PUSH DE
|
||||
|
||||
@ -63,7 +63,7 @@ FM_BUF: _sFM
|
||||
SET_FM:
|
||||
_mFM_FIND
|
||||
|
||||
LD A,0 ;!HARDCODE ®¬¥à ®è¨¡ª¨
|
||||
LD A,DSS_Error.sys.NO_ERROR
|
||||
RET NZ
|
||||
ABS_FM LD A,DSS_Error.sys.INVALID_HANDLE
|
||||
SCF
|
||||
@ -72,7 +72,7 @@ ABS_FM LD A,DSS_Error.sys.INVALID_HANDLE
|
||||
RES_FM:
|
||||
_mFM_FIND
|
||||
|
||||
LD A,5
|
||||
LD A,DSS_Error.sys.INVALID_HANDLE
|
||||
EXX
|
||||
SCF
|
||||
RET Z
|
||||
|
||||
@ -570,8 +570,8 @@ BACK_CUR_PATH:
|
||||
; ’ε<E28099>€: ₯β
|
||||
; ’λε<CEBB>€: A - <>¬₯ΰ ―<>α«₯€₯£<E282AF> «<>£. €¨αͺ ’ α¨αβ₯¬₯
|
||||
;///////////////////////////////////////////////////////////////////////
|
||||
INCLUDE 'ScanDRV.asm'
|
||||
; INCLUDE 'NScanDRV.asm'
|
||||
; INCLUDE 'ScanDRV.asm'
|
||||
INCLUDE 'NScanDRV.asm'
|
||||
;///////////////////////////////////////////////////////////////////////
|
||||
;
|
||||
|
||||
|
||||
231
DSS/DRV-MAIN.ASM
231
DSS/DRV-MAIN.ASM
@ -65,11 +65,13 @@ A0010: ;JP DRV_PAGE.RST_10 ;
|
||||
; <[DRIVE API]> ;
|
||||
BLOCK #18-$,#C7 ; #C7 - "RST 0" opcode
|
||||
;A0018 JP INTDISK ;
|
||||
A0018: PUSH AF ;
|
||||
PUSH BC ;
|
||||
A0018: ;PUSH AF ;
|
||||
;PUSH BC ;
|
||||
SCF
|
||||
RET
|
||||
DRV_PAGE.MAIN_PAGE_NUMBER+2: ;
|
||||
LD BC,0*256 + SLOT0 ; !FIXIT áî¤ ¥ ¤®«¦ë ¢áâ ¢«ïâìáï ®¬¥à ¢ë¤¥«¥ëå áâà ¨æ?
|
||||
JP PORTAL.outDRV ;
|
||||
;JP PORTAL.outDRV ;
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
|
||||
|
||||
@ -207,13 +209,13 @@ ADCALL+1: CALL DISPATCH ;
|
||||
|
||||
;!FIXIT çñâ ¥ â® âãâ
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
LD B,#00; ;
|
||||
OUT (C),A ;
|
||||
;--- ;
|
||||
POP BC ;
|
||||
RET ;
|
||||
PORTAL.outDRV: ;
|
||||
RET ;
|
||||
; LD B,#00; ;
|
||||
; OUT (C),A ;
|
||||
;--- ;
|
||||
; POP BC ;
|
||||
; RET ;
|
||||
;PORTAL.outDRV: ;
|
||||
; RET ;
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
;
|
||||
|
||||
@ -441,11 +443,13 @@ INITDVC_RET_DRIVE:
|
||||
INCLUDE 'dss/media_drivers/fdd-drv.asm'
|
||||
INCLUDE 'dss/media_drivers/ram_disk-drv.asm'
|
||||
|
||||
/////////////////////////// [ DRIVE TABLES ] \\\\\\\\\\\\\\\\\\\\\\\\\\\;
|
||||
;
|
||||
;------------------------[shared-drv.asm table]------------------------;
|
||||
DEVICE: ;BLOCK DSS_MAX_DRIVES_AMOUNT * .TBL_Entry,#FF
|
||||
DEVICE EQU $
|
||||
.TBL_Entry EQU 3
|
||||
.Size: EQU DSS_MAX_DRIVES_AMOUNT * .TBL_Entry ;DB #FF
|
||||
.Size EQU DSS_MAX_DRIVES_AMOUNT * .TBL_Entry
|
||||
.End EQU DEVICE.Size + 1 ; ¤«ï á⮯-¡ ©â #FF
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
@ -456,17 +460,32 @@ DEVICE: ;BLOCK DSS_MAX_DRIVES_AMOUNT * .TBL_Entry,#FF
|
||||
;+05 LONG SIZE IN SECTORS
|
||||
;+09 FREE
|
||||
;+15
|
||||
LOGDRV EQU $ + DEVICE.Size
|
||||
LOGDRV EQU DEVICE + DEVICE.End
|
||||
.TBL_Entry EQU 16
|
||||
.Size EQU .TBL_Entry * DSS_MAX_DRIVES_AMOUNT
|
||||
.Size EQU DSS_MAX_DRIVES_AMOUNT * .TBL_Entry
|
||||
; ‚•Ž„: L - «®£¨ç¥áª¨© ®¬¥à ¢ â ¡«¨æ¥
|
||||
; ‚›•Ž„: IY - ç «® § ¯¨á¨
|
||||
; <20>Ž<EFBFBD>’ˆ’: HL, IY. HL<-->DE
|
||||
; MACRO LOGDRV_ENTRY_FIND tbl_addr
|
||||
; LD H,0
|
||||
; ADD HL,HL
|
||||
; ADD HL,HL
|
||||
; ADD HL,HL
|
||||
; ADD HL,HL
|
||||
; ;LD B,H
|
||||
; ;LD C,L
|
||||
; EX DE,HL
|
||||
; LD IY,tbl_addr
|
||||
; ADD IY,DE
|
||||
; ENDM
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
;
|
||||
;-----------------------[ram_disk-drv.asm table]-----------------------;
|
||||
; ’€<E28099>‹ˆ–€ ‘ŽŽ’‚…’‘’‚ˆŸ Œ…†„“ ”ˆ‡ˆ—…‘ŠˆŒ <20>ŽŒ…<C592>ŽŒ <20>€Œ„ˆ‘Š€ ˆ …ƒŽ RAM-DISK ID
|
||||
; Log Number: DB RAM_DRIVE_ID, RAM_DRIVE_NUMBER
|
||||
RAMDTBL EQU $ + DEVICE.Size + LOGDRV.Size
|
||||
; Log Number: DB RAM_Drive_Log_Number, RAM_Drive_ID ;(BIOS 0-15), (Block ID for BIOS)
|
||||
RAMDTBL EQU LOGDRV + LOGDRV.Size
|
||||
.TBL_Entry EQU 2
|
||||
.Size EQU .TBL_Entry * MAX_RAMDRIVES
|
||||
; RAMDTBL: DUP MAX_RAMDRIVES * RAMDTBL.TBL_Entry
|
||||
@ -475,10 +494,57 @@ RAMDTBL EQU $ + DEVICE.Size + LOGDRV.Size
|
||||
; .Size EQU $-RAMDTBL
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
////////////////////////////////////////////////////////////////////////;
|
||||
|
||||
|
||||
///////////////////////// [ DRIVE TABLES COPY] \\\\\\\\\\\\\\\\\\\\\\\\\;
|
||||
MODULE OLD_TABLES
|
||||
;
|
||||
;------------------------[shared-drv.asm table]------------------------;
|
||||
DEVICE EQU @RAMDTBL + @RAMDTBL.Size
|
||||
.TBL_Entry EQU @DEVICE.TBL_Entry
|
||||
.Size: EQU @DEVICE.Size
|
||||
.End EQU @DEVICE.End
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
;
|
||||
DRV_TEMP_BUFFER:
|
||||
;-------------------------[ IDE-DRV.ASM table]-------------------------;
|
||||
;+00 BYTE MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
|
||||
;+01 LONG SECTOR OFFSET
|
||||
;+05 LONG SIZE IN SECTORS
|
||||
;+09 FREE
|
||||
;+15
|
||||
LOGDRV EQU DEVICE + DEVICE.End
|
||||
.TBL_Entry EQU @LOGDRV.TBL_Entry
|
||||
.Size EQU @LOGDRV.Size
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
;
|
||||
;-----------------------[ram_disk-drv.asm table]-----------------------;
|
||||
; ’€<E28099>‹ˆ–€ ‘ŽŽ’‚…’‘’‚ˆŸ Œ…†„“ ”ˆ‡ˆ—…‘ŠˆŒ <20>ŽŒ…<C592>ŽŒ <20>€Œ„ˆ‘Š€ ˆ …ƒŽ RAM-DISK ID
|
||||
; Log Number: DB RAM_Drive_Log_Number, RAM_Drive_ID ;(BIOS 0-15), (Block ID for BIOS)
|
||||
RAMDTBL EQU LOGDRV + LOGDRV.Size
|
||||
.TBL_Entry EQU @RAMDTBL.TBL_Entry
|
||||
.Size EQU @RAMDTBL.Size
|
||||
; RAMDTBL: DUP MAX_RAMDRIVES * RAMDTBL.TBL_Entry
|
||||
; DB #FF
|
||||
; EDUP
|
||||
; .Size EQU $-RAMDTBL
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
ENDMODULE
|
||||
////////////////////////////////////////////////////////////////////////;
|
||||
DISPLAY "DEVICE start: ", /H, DEVICE
|
||||
DISPLAY "Old DEVICE start: ", /H, OLD_TABLES.DEVICE
|
||||
DISPLAY "LOGDRV start: ", /H, LOGDRV
|
||||
DISPLAY "Old LOGDRV start: ", /H, OLD_TABLES.LOGDRV
|
||||
DISPLAY "RAMDTBL start: ", /H, RAMDTBL
|
||||
DISPLAY "Old RAMDTBL start: ", /H, OLD_TABLES.RAMDTBL
|
||||
|
||||
;
|
||||
;DRV_TEMP_BUFFER:
|
||||
|
||||
;---------[256 bytes stack for return pages of RST #18 callers]--------;
|
||||
; #3F00 - #3FFF
|
||||
@ -487,133 +553,4 @@ DRV_PAGE.RSTx18_RET_PAGES EQU #3FFF
|
||||
; ASSERT ((#4000-DRV_TEMP_BUFFER-256) > (DEVICE.Size + LOGDRV.Size + RAMDTBL.Size)), "No space for DRV_TEMP_BUFFER in DRV-MAIN page"
|
||||
; ENDMODULE
|
||||
; OUTEND
|
||||
;[END]
|
||||
|
||||
/*
|
||||
;
|
||||
; NEW RESCAN
|
||||
;=====================================================================[]
|
||||
; «®£¨ç¥áª¨© ®¬¥à ãáâனá⢠+ ¤à¥á ®¡à ¡®â稪 .
|
||||
; <20>®à浪®¢ë© ®¬¥à * 3 = ¡ãª¢ ¤¨áª + "A"
|
||||
DEVICE: BLOCK DSS_MAX_DRIVES_AMOUNT*3,#FF
|
||||
.Size: EQU $-DEVICE
|
||||
|
||||
; ‹®£¨ç¥áª¨© ®¬¥à à §¤¥« .
|
||||
;<3B>®¬¥à £à㯯ë = «®£¨ç¥áª¨© ®¬¥à à §¤¥« HDD ¨§ DEVICE
|
||||
LOGDRV: BLOCK 16*LD_DSK,0
|
||||
.Size: EQU $-LOGDRV
|
||||
;+00 BYTE MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
|
||||
;+01 LONG SECTOR OFFSET
|
||||
;+05 LONG SIZE IN SECTORS (SECTORS ON LOGICAL DISK)
|
||||
;+09 FREE
|
||||
;+15
|
||||
|
||||
; ’€<E28099>‹ˆ–€ ‘ŽŽ’‚…’‘’‚ˆŸ Œ…†„“ ”ˆ‡ˆ—…‘ŠˆŒ <20>ŽŒ…<C592>ŽŒ <20>€Œ„ˆ‘Š€ ˆ …ƒŽ RAM-DISK ID
|
||||
; DB RAM_DRIVE_ID, RAM_DRIVE_NUMBER
|
||||
RAMDTBL: DUP MAX_RAMDRIVES * 2
|
||||
DB #FF
|
||||
EDUP
|
||||
.Size EQU $-RAMDTBL
|
||||
|
||||
|
||||
|
||||
|
||||
INTDISK:
|
||||
;R01
|
||||
CP #FF
|
||||
JR NZ,.noNeedRescan
|
||||
CP C
|
||||
JR Z,INITDVC_RET_DRIVE
|
||||
.noNeedRescan:
|
||||
;
|
||||
PUSH HL
|
||||
PUSH BC
|
||||
ADD A,A
|
||||
ADD A,A
|
||||
LD C,A
|
||||
LD B,0
|
||||
LD HL,DEVICE
|
||||
ADD HL,BC
|
||||
LD A,(HL)
|
||||
CP #FF
|
||||
JR Z,NODEV
|
||||
INC HL
|
||||
INC HL
|
||||
LD C,(HL)
|
||||
INC HL
|
||||
LD H,(HL)
|
||||
LD L,C
|
||||
POP BC
|
||||
EX (SP),HL
|
||||
RET
|
||||
NODEV: POP BC
|
||||
POP HL
|
||||
LD A,DSS_Error.drv.INVALID_DRIVE
|
||||
SCF
|
||||
RET
|
||||
|
||||
|
||||
|
||||
INITDVC: XOR A
|
||||
LD (DRV_PAGE.LDRIVE),A ; á¡à. ï祩ªã
|
||||
LD HL,DEVICE
|
||||
LD (PDEVICE),HL ; ¢®ááâ. ï祩ªã
|
||||
; FDD ¤¥¢ ©áë
|
||||
CALL FDDRIVE.INIT ; ã§ âì ç¨á«® FDD-¤¥¢ ©á®¢
|
||||
LD DE,FDDRIVE ; ¤à¥á ®¡à ¡®â稪 ⥪. ¤¥¢ ©á
|
||||
CALL MAKEDVC ; ¨¨æ. â ¡«¨æã ¯¥à¥å®¤®¢
|
||||
; HDD ¤¥¢ ©áë
|
||||
; ¥á«¨ áâ à⥠¢¥àá¨ï BIOS ¥ ¯®¤å®¤¨â, â® £à㧨âìáï ¬®¦® ⮫쪮 á ¤¨áª¥âë, ¤«ï í⮣® âãâ § ¬¥ ª®¤ XOR A : RET
|
||||
.if_old: CALL INIT_H
|
||||
;CALL .CHECK_HDD
|
||||
LD DE,HDDRIVE
|
||||
CALL MAKEDVC
|
||||
; RAM-¤¨áª¨
|
||||
CALL INIT_RD
|
||||
LD DE,RMDRIVE
|
||||
CALL MAKEDVC
|
||||
XOR A
|
||||
RET
|
||||
.CHECK_HDD:
|
||||
|
||||
RET
|
||||
|
||||
|
||||
;R01
|
||||
INITDVC_RET_DRIVE:
|
||||
LD DE,DRV_TEMP_BUFFER
|
||||
LD HL,DEVICE
|
||||
LD BC,DEVICE.Size
|
||||
LDIR
|
||||
LD HL,LOGDRV
|
||||
LD BC,LOGDRV.Size
|
||||
LDIR
|
||||
LD HL,RAMDTBL
|
||||
LD BC,RAMDTBL.Size
|
||||
LDIR
|
||||
|
||||
CALL INITDVC
|
||||
|
||||
; ‘à ¢¨¢ ¥¬ áâ àë© DEVICE ¡ãä¥à á ®¢ë¬, ¥á«¨ ¢ ®¢®¬ ¥â ãáâனá⢠, â® § â¨à ¥¬ ¢ áâ àëå ¡ãä¥à å ¥£®
|
||||
LD HL,DEVICE
|
||||
LD DE,DRV_TEMP_BUFFER
|
||||
LD B,DEVICE.Size
|
||||
.loop_DEVICE:
|
||||
LD A,(DE)
|
||||
CP (HL)
|
||||
CALL NZ,.FIND_DEV
|
||||
INC HL
|
||||
INC DE
|
||||
DJNZ .loop_DEVICE
|
||||
|
||||
LD A,(DRV_PAGE.LDRIVE)
|
||||
AND A
|
||||
RET
|
||||
;
|
||||
|
||||
|
||||
DEVICE: BLOCK DSS_MAX_DRIVES_AMOUNT*4,#FF
|
||||
;=====================================================================[]
|
||||
;
|
||||
;
|
||||
*/
|
||||
;[END]
|
||||
@ -540,7 +540,12 @@ DEPLOY:
|
||||
LD HL,BANKTBL + #C000
|
||||
LD C,BIOS.GetMemBlkPages
|
||||
RST ToBIOS
|
||||
|
||||
; ¤®«¦ ¨¤â¨ ¯®á«¥ GetMemBlkPages, ç⮡ ¢¬¥áâ®
|
||||
; § ªàë¢ èª¨ #FF ¯®áâ ¢¨âì áâà ¨æã COREPAGE
|
||||
LD HL,BANKTBL + COREPAGE
|
||||
IN A,(SLOT0)
|
||||
LD (HL),A
|
||||
|
||||
POP AF
|
||||
OUT (SLOT3),A
|
||||
|
||||
|
||||
@ -98,9 +98,31 @@ XLAT_T: DB #00,#43,#00,#3F,#3D,#3B,#3C,#46,#00,#44,#42,#40,#3E,#0F,#00,#00 ;00
|
||||
ENDM
|
||||
;
|
||||
|
||||
;
|
||||
; ‚•Ž„: L - «®£¨ç¥áª¨© ®¬¥à ¢ â ¡«¨æ¥
|
||||
; ‚›•Ž„: IY - ç «® § ¯¨á¨
|
||||
; <20>Ž<EFBFBD>’ˆ’: HL, IY. HL<-->DE
|
||||
MACRO LOGDRV_ENTRY_FIND tbl_addr
|
||||
LD H,0
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
;LD B,H
|
||||
;LD C,L
|
||||
EX DE,HL
|
||||
LD IY,tbl_addr
|
||||
ADD IY,DE
|
||||
ENDM
|
||||
;
|
||||
|
||||
;
|
||||
MACRO _CALC_DEVICE_ENTRY tbl_addr
|
||||
LD C,A
|
||||
CP DSS_MAX_DRIVES_AMOUNT+1
|
||||
JR C,.norm
|
||||
; Error!
|
||||
LD A,DSS_MAX_DRIVES_AMOUNT
|
||||
.norm: LD C,A
|
||||
ADD A,A
|
||||
ADD A,C
|
||||
LD C,A
|
||||
|
||||
@ -213,13 +213,6 @@ INIT_H: PUSH IY
|
||||
;!TEST ;[ ]
|
||||
XOR A
|
||||
LD (DRVCLC.count),A
|
||||
; ‡ ç¨á⪠⠡«¨æë. <20>¥®¡ï§ ⥫ì®, ® ¬ «® «¨ çñ ¡ã¤¥â ¤ «ìè¥...
|
||||
; LD HL,LOGDRV
|
||||
; LD (HL),#FF
|
||||
; LD DE,LOGDRV+1
|
||||
; LD BC,LOGDRV.Size-1
|
||||
; LDIR
|
||||
;
|
||||
LD HL,LOGDRV
|
||||
LD (OFFSECT),HL
|
||||
|
||||
@ -285,29 +278,14 @@ DRVCLC: ; INC A
|
||||
; .TBL_Entry EQU 16
|
||||
; .Size EQU $-LOGDRV
|
||||
|
||||
|
||||
SELHDD: PUSH DE
|
||||
PUSH BC
|
||||
PUSH HL
|
||||
;!TEST
|
||||
; SLA A
|
||||
; RLA
|
||||
; SLA A
|
||||
; LD L,A
|
||||
; LD H,0
|
||||
; RL H
|
||||
; ADD HL,HL
|
||||
;
|
||||
; original
|
||||
LD L,A
|
||||
LD H,0
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
;
|
||||
EX DE,HL
|
||||
LD IY,LOGDRV
|
||||
ADD IY,DE
|
||||
LD L,A
|
||||
LOGDRV_ENTRY_FIND LOGDRV
|
||||
;
|
||||
LD C,(IY+1)
|
||||
LD B,(IY+2)
|
||||
LD E,(IY+3)
|
||||
@ -396,15 +374,8 @@ HGETPRM:
|
||||
;
|
||||
PUSH IX
|
||||
PUSH IY
|
||||
LD H,0
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
LD B,H
|
||||
LD C,L
|
||||
LD IY,LOGDRV
|
||||
ADD IY,BC
|
||||
;
|
||||
LOGDRV_ENTRY_FIND LOGDRV
|
||||
;
|
||||
LD A,(IY+0) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
|
||||
PUSH IY
|
||||
@ -449,8 +420,8 @@ STAT_H: XOR A
|
||||
|
||||
CHEK_H:
|
||||
;!TEST
|
||||
;LD A,#FF
|
||||
XOR A
|
||||
LD A,#FF
|
||||
;XOR A
|
||||
;
|
||||
AND A
|
||||
RET
|
||||
@ -460,15 +431,9 @@ CHEK_H:
|
||||
GBPB_H: PUSH IY
|
||||
PUSH DE
|
||||
LD L,A
|
||||
LD H,0
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
LD B,H
|
||||
LD C,L
|
||||
LD IY,LOGDRV
|
||||
ADD IY,BC
|
||||
;
|
||||
LOGDRV_ENTRY_FIND LOGDRV
|
||||
;
|
||||
LD E,(IY+1)
|
||||
LD D,(IY+2)
|
||||
LD L,(IY+3)
|
||||
|
||||
@ -301,24 +301,73 @@ LWRITE_RD:
|
||||
; XOR A
|
||||
; RET
|
||||
|
||||
;
|
||||
;;
|
||||
;;;
|
||||
;----------------------------------------------------------------------;!TEST
|
||||
; ;S_P_P DB #00
|
||||
; INIT_RD:
|
||||
; ; .SectorSize EQU 512 ;!HARDCODE
|
||||
; ; LD HL,.SectorSize
|
||||
; ; LD A,#80
|
||||
; ; .loop: SRL A
|
||||
; ; RR H
|
||||
; ; JR NC,.loop
|
||||
; ; LD (S_P_P),A
|
||||
|
||||
; LD BC,#0*256 + BIOS.GET_RAMD_ST ; <20>®«ã票¥ ¨¤¥â¨ä¨ª â®à ¡«®ª , § 祮£® RAM-Disk
|
||||
; LD DE,RAMDTBL
|
||||
; .initLoop:
|
||||
; PUSH BC
|
||||
; LD A,B
|
||||
; PUSH DE
|
||||
; RST ToBIOS
|
||||
; POP DE
|
||||
; OR A
|
||||
; JR Z,.noDRV
|
||||
|
||||
; LD (DE),A
|
||||
; INC DE
|
||||
; POP BC
|
||||
; LD A,B
|
||||
; LD (DE),A
|
||||
; INC DE
|
||||
; JP 1F
|
||||
; .noDRV: POP BC
|
||||
; 1: INC B
|
||||
; LD A,RAMDTBL.Size / RAMDTBL.TBL_Entry
|
||||
; CP B
|
||||
; JR NZ,.initLoop
|
||||
|
||||
; LD HL,RAMDTBL ;!FIXIT LD HL,-RAMDTBL
|
||||
; EX DE,HL
|
||||
; AND A ;!FIXIT ----
|
||||
; SBC HL,DE ;!FIXIT ADD HL,DE
|
||||
; SRL L
|
||||
; LD A,L
|
||||
; ; LD HL,ENDDRVR
|
||||
; AND A
|
||||
; RET
|
||||
;----------------------------------------------------------------------;!TEST
|
||||
;;;
|
||||
;;
|
||||
;
|
||||
|
||||
;
|
||||
;;
|
||||
;;;
|
||||
;----------------------------------------------------------------------;!TEST
|
||||
;S_P_P DB #00
|
||||
INIT_RD:
|
||||
; .SectorSize EQU 512 ;!HARDCODE
|
||||
; LD HL,.SectorSize
|
||||
; LD A,#80
|
||||
; .SectorSize EQU 512 ;!HARDCODE
|
||||
; LD HL,.SectorSize
|
||||
; LD A,#80
|
||||
; .loop: SRL A
|
||||
; RR H
|
||||
; JR NC,.loop
|
||||
; LD (S_P_P),A
|
||||
|
||||
; ‡ ç¨á⪠⠡«¨æë. <20>¥®¡ï§ ⥫ì®, ® ¬ «® «¨ çñ ¡ã¤¥â ¤ «ìè¥... ;[ ]
|
||||
; LD HL,RAMDTBL
|
||||
; LD (HL),#FF
|
||||
; LD DE,RAMDTBL+1
|
||||
; LD BC,RAMDTBL.Size-1
|
||||
; LDIR
|
||||
|
||||
LD BC,#0*256 + BIOS.GET_RAMD_ST ; <20>®«ã票¥ ¨¤¥â¨ä¨ª â®à ¡«®ª , § 祮£® RAM-Disk
|
||||
LD BC,0*256 + BIOS.GET_RAMD_ST ; <20>®«ã票¥ ¨¤¥â¨ä¨ª â®à ¡«®ª , § 祮£® RAM-Disk
|
||||
LD DE,RAMDTBL
|
||||
.initLoop:
|
||||
PUSH BC
|
||||
@ -328,29 +377,38 @@ INIT_RD:
|
||||
POP DE
|
||||
OR A
|
||||
JR Z,.noDRV
|
||||
|
||||
LD (DE),A
|
||||
;
|
||||
INC DE
|
||||
LD (DE),A
|
||||
DEC DE
|
||||
;
|
||||
POP BC
|
||||
LD A,B
|
||||
LD (DE),A
|
||||
INC DE
|
||||
INC DE
|
||||
;
|
||||
JP 1F
|
||||
;
|
||||
.noDRV: POP BC
|
||||
1: INC B
|
||||
LD A,RAMDTBL.Size / RAMDTBL.TBL_Entry
|
||||
CP B
|
||||
JR NZ,.initLoop
|
||||
|
||||
LD HL,RAMDTBL
|
||||
LD HL,RAMDTBL ;!FIXIT LD HL,-RAMDTBL
|
||||
EX DE,HL
|
||||
AND A
|
||||
SBC HL,DE
|
||||
AND A ;!FIXIT ----
|
||||
SBC HL,DE ;!FIXIT ADD HL,DE
|
||||
SRL L
|
||||
LD A,L
|
||||
; LD HL,ENDDRVR
|
||||
AND A
|
||||
RET
|
||||
;----------------------------------------------------------------------;!TEST
|
||||
;;;
|
||||
;;
|
||||
;
|
||||
|
||||
; ;
|
||||
; ; ’€<E28099>‹ˆ–€ ‘ŽŽ’‚…’‘’‚ˆŸ Œ…†„“ ”ˆ‡ˆ—…‘ŠˆŒ <20>ŽŒ…<C592>ŽŒ <20>€Œ„ˆ‘Š€ ˆ …ƒŽ RAM-DISK ID
|
||||
@ -466,15 +524,17 @@ IOCTL_RD:
|
||||
; AND A
|
||||
; RET
|
||||
|
||||
;!!!!! ¢ë§ë¢ ¥âáï ¢ SCANDRV, ª®£¤ íâ ¯à®æ¥¤ãà ¢ SLOT3, ¥ ¢ SLOT0
|
||||
GET_RAMDRV_NUM:
|
||||
ADD A,A
|
||||
LD BC,RAMDTBL
|
||||
.skip_tbl:
|
||||
ADD A,A
|
||||
ADD A,C
|
||||
LD C,A
|
||||
LD A,0
|
||||
ADC A,B
|
||||
LD B,A
|
||||
INC BC
|
||||
;INC BC
|
||||
LD A,(BC)
|
||||
OR #60 ;!HARDCODE ᤥ« âì ®¬¥à à §ëå ãáâனá⢠ç¥à¥§ ¬¥âª¨
|
||||
RET
|
||||
|
||||
@ -133,20 +133,10 @@ INTDISK:
|
||||
;
|
||||
PUSH HL
|
||||
PUSH BC
|
||||
|
||||
_CALC_DEVICE_ENTRY DEVICE
|
||||
; LD C,A
|
||||
; ADD A,A
|
||||
; ADD A,C
|
||||
; LD C,A
|
||||
; LD B,0
|
||||
; LD HL,DEVICE
|
||||
; ADD HL,BC
|
||||
|
||||
_CALC_DEVICE_ENTRY DEVICE
|
||||
LD A,(HL)
|
||||
INC A
|
||||
CP #FF
|
||||
JR Z,NODEV
|
||||
DEC A
|
||||
INC HL
|
||||
LD C,(HL)
|
||||
INC HL
|
||||
@ -210,7 +200,7 @@ INITDVC: XOR A
|
||||
LD (DRV_PAGE.LDRIVE),A ; á¡à. ï祩ªã
|
||||
LD HL,DEVICE
|
||||
LD (PDEVICE),HL ; ¢®ááâ. ï祩ªã
|
||||
; ‡ ç¨á⪠⠡«¨æë. <20>¥®¡ï§ ⥫ì®, ® ¬ «® «¨ çñ ¡ã¤¥â ¤ «ìè¥... ;[ ]
|
||||
; ‡ ç¨á⪠⠡«¨æ. <20>¥®¡ï§ ⥫ì®, ® ¬ «® «¨ çñ ¡ã¤¥â ¤ «ìè¥... ;[ ]
|
||||
LD HL,DEVICE
|
||||
LD (HL),#FF
|
||||
LD DE,DEVICE+1
|
||||
|
||||
818
DSS/NScanDRV.ASM
818
DSS/NScanDRV.ASM
@ -1,3 +1,4 @@
|
||||
/*
|
||||
; !TODO § ¯®¬¨ âì ¯à¥àë¢ ¨ï, ®âª«îç âì áâ àâ¥, ¢®ááâ ¢«¨¢ âì ¢ë室¥
|
||||
SCANDRV:
|
||||
;1 [-----------] [-----------] [-----------] [-----------] [-----------]
|
||||
@ -22,14 +23,10 @@ SCANDRV:
|
||||
|
||||
|
||||
;3 [-----------] [-----------] [-----------] [-----------] [-----------]
|
||||
;!TEST ¢ DRV-MAIN ¬®£ãâ ¡ëâì ¯à®¡«¥¬ë á ¯à¥àë¢ ¨ï¬¨
|
||||
;DI
|
||||
LD A,Dss.DRV.RescanDRV
|
||||
LD C,Dss.DRV.RescanDRV
|
||||
RST ToDSS.DRV
|
||||
LD (LDRIVE),A
|
||||
;EI
|
||||
;
|
||||
LD A,Dss.DRV.RescanDRV
|
||||
LD C,Dss.DRV.RescanDRV
|
||||
RST ToDSS.DRV
|
||||
LD (LDRIVE),A
|
||||
; [-----------]
|
||||
|
||||
;4 [-----------] [-----------] [-----------] [-----------] [-----------]
|
||||
@ -158,23 +155,816 @@ SCANDRV:
|
||||
; .old_letter: DB #FF
|
||||
; .old_DRIVE_ID: DB #FF
|
||||
; .new_letter: DB #FF
|
||||
*/
|
||||
|
||||
|
||||
IF 1
|
||||
SCANDRV:
|
||||
; 0. § ¯®¬¨ ¥¬ á®áâ®ï¨¥ ¯à¥àë¢ ¨©
|
||||
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
|
||||
LD A,R
|
||||
DI
|
||||
PUSH AF
|
||||
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
|
||||
|
||||
; 1. § ¯®¬¨ ¥¬ ¡ãâ-¤¨áª
|
||||
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
|
||||
CALL GETBOOT
|
||||
LD (.old_letter),A
|
||||
;; A = bootdisk Log.number
|
||||
;;!FIXIT ¬®¦® ¤®áâ ¢ âì ¨§ á®åà ¥®© â ¡«¨æë ª®£¤ ¯® ¤®¡¨âáï
|
||||
; LD DE,Dss.DRV.GenIOCTL.Enter
|
||||
; LD BC,Dss.DRV.GenIOCTL.GetParams
|
||||
; RST ToDSS.DRV
|
||||
; EX AF,AF'
|
||||
;; A = bootdisk number
|
||||
; LD (.old_DRIVE_ID),A
|
||||
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
|
||||
|
||||
; 2. ª®¯¨à㥬 ¢ ¡ãä¥à â ¡«¨æë DEVICE, LOGDRV, RAMDTBL
|
||||
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
|
||||
SET_PAGE_X DRVPAGE
|
||||
PUSH AF
|
||||
|
||||
LD HL,DEVICE + #C000
|
||||
LD DE,OLD_TABLES.DEVICE + #C000
|
||||
LD BC,OLD_TABLES.DEVICE - DEVICE
|
||||
LDIR
|
||||
;
|
||||
LD A,2 ;!HARDCODE ª®«¨ç¥á⢮ â ¡«¨æ ¢â®à®£® ã஢ï (LOGDRV, RMDRIVE)
|
||||
LD (Fill_if_Exists.tbl),A
|
||||
;POP AF
|
||||
;OUT (SLOT3),A
|
||||
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
|
||||
|
||||
; 3. ¢ë§ë¢ ¥¬ à¥áª
|
||||
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
|
||||
LD A,Dss.DRV.RescanDRV
|
||||
LD C,Dss.DRV.RescanDRV
|
||||
RST ToDSS.DRV
|
||||
LD (LDRIVE),A
|
||||
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
|
||||
|
||||
; 4. áà ¢¨¢ ¥¬ § ¯¨á¨ áâ àëå â ¡«¨æ á ®¢ë¬¨:
|
||||
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
|
||||
;SET_PAGE_X DRVPAGE
|
||||
;PUSH AF
|
||||
|
||||
|
||||
LD HL,OLD_TABLES.DEVICE + #C000
|
||||
LD B,DSS_MAX_DRIVES_AMOUNT
|
||||
.tbl_scanNew_mainLoop:
|
||||
PUSH BC
|
||||
PUSH HL
|
||||
; ¯®«ãç ¥¬ ®¬¥à ¯à®æ¥¤ãàë ¤«ï í⮩ ¡ãª¢ë ¤¨áª
|
||||
LD A,(HL)
|
||||
;
|
||||
CP #FF
|
||||
JR Z,.nextN
|
||||
;
|
||||
LD B,A
|
||||
INC HL
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
LD H,(HL)
|
||||
LD L,A
|
||||
; ¨é¥¬ çâ® § ¤à ©¢
|
||||
EX DE,HL
|
||||
; FDD?
|
||||
LD HL,FDDRIVE
|
||||
AND A
|
||||
SBC HL,DE
|
||||
JR Z,.nextN ; ¯à®¯ã᪠FDD ¤à ©¢®¢
|
||||
; HDD?
|
||||
LD HL,HDDRIVE
|
||||
AND A
|
||||
SBC HL,DE
|
||||
; HDD. ‘¢¥àª ¯® â ¡«¨æ¥ LOGDRV
|
||||
JP Z,SCAN_TABLES.HARD_DRV
|
||||
; RD?
|
||||
LD HL,RMDRIVE
|
||||
AND A
|
||||
SBC HL,DE
|
||||
; RAM Drive. ‘¢¥àª ¯® â ¡«¨æ¥ RAMDTBL
|
||||
JP Z,SCAN_TABLES.RAM_DRV
|
||||
; CD/DVD?
|
||||
;LD HL,CDDRIVE
|
||||
;AND A
|
||||
;SUB HL,DE
|
||||
; CD/DVD.
|
||||
; JR Z,SCAN_TABLES.CD_ROM
|
||||
;
|
||||
; á«¥¤ãî騩 ¢¨â®ª
|
||||
.nextN: POP HL
|
||||
.nextN2:
|
||||
INC HL
|
||||
INC HL
|
||||
INC HL
|
||||
POP BC
|
||||
DJNZ .tbl_scanNew_mainLoop
|
||||
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
|
||||
|
||||
; 5. áà ¢¨¢ ¥¬ § ¯¨áì ®¢ëå â ¡«¨æ á® áâ à묨
|
||||
; . ¥á«¨ ¤à ©¢ ⮫쪮 ¢ ®¢®©:
|
||||
; 1) ¢âëª ¥¬ ¥£® ¢ ¯¥à¢ãî ᢮¡®¤ãî § ¯¨áì ¢ DEVICE (¨«¨ áâ ¢¨¬ ¯®á«¥ ¯®á«¥¤¥£® ¤à ©¢ )
|
||||
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
|
||||
; ‚•Ž„: IX - OLD_TABLES.DEVICE
|
||||
; HL - OLD_TABLES.DEVICE.End
|
||||
; HL' - à §¨æ ¬¥¦¤ã ¤à¥á ¬¨ áâ àëå ¨ ®¢ëå â ¡«¨æ
|
||||
;
|
||||
INC HL
|
||||
LD (OLD_TABLES_CURRENT),HL
|
||||
EXX
|
||||
LD HL,OLD_TABLES.LOGDRV - LOGDRV
|
||||
LD B,DSS_MAX_DRIVES_AMOUNT
|
||||
EXX
|
||||
; 室¨¬ ¢ áâ ன DEVICE ¯¥à¢ãî ᢮¡®¤ãî ï祩ªã (¯à®¢¥à塞 á ª®æ ¢ ç «®)
|
||||
LD IX,OLD_TABLES.DEVICE + OLD_TABLES.DEVICE.Size - OLD_TABLES.DEVICE.TBL_Entry + #C000
|
||||
LD IY,LOGDRV + #C000
|
||||
LD DE,-OLD_TABLES.DEVICE.TBL_Entry ; ¤¢¨£ ¥¬áï ¯® â ¡«¨æ¥ § ¤
|
||||
LD B,DSS_MAX_DRIVES_AMOUNT
|
||||
;
|
||||
.loop1: LD A,#FF
|
||||
CP (IX+0)
|
||||
JR NZ,.loop2_start
|
||||
ADD IX,DE
|
||||
DJNZ .loop1
|
||||
.loop1_exit:
|
||||
LD A,C ; § ª®ç¨«¨ áç¨â âì ¯¥à¥¬¥ãî LDRIVE
|
||||
LD (DRV_PAGE.LDRIVE + #C000),A
|
||||
LD (LDRIVE),A
|
||||
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
|
||||
|
||||
; 6. ¯à®¢¥à塞, ¥ £à®åã«áï «¨ ¡ãâ-¤¨áª.
|
||||
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
|
||||
.old_letter+1:
|
||||
LD A,0
|
||||
_CALC_DEVICE_ENTRY OLD_TABLES.DEVICE + #C000
|
||||
LD A,(HL)
|
||||
INC A
|
||||
JP Z,ERROR_BOOTDRV_DIES
|
||||
|
||||
; .old_DRIVE_ID+1:
|
||||
; LD A,0
|
||||
; CALL SETBOOT
|
||||
; JR C,.ERROR_BOOTDRV_DIES
|
||||
; LD (.new_letter),A
|
||||
; ;
|
||||
; LD A,(.old_letter)
|
||||
; LD (BOOTDRV),A
|
||||
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
|
||||
|
||||
; 7. § ¬¥ï¥¬ ®¢ë¥ â ¡«¨æë ¬®¤¨ä¨æ¨à®¢ ë¥ áâ àë¥
|
||||
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
|
||||
LD HL,OLD_TABLES.DEVICE + #C000
|
||||
LD DE,DEVICE + #C000
|
||||
LD BC,OLD_TABLES.DEVICE - DEVICE
|
||||
LDIR
|
||||
|
||||
POP AF
|
||||
OUT (SLOT3),A
|
||||
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
|
||||
|
||||
;8. ¢ë室
|
||||
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
|
||||
POP AF
|
||||
RET PO
|
||||
EI
|
||||
RET
|
||||
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
|
||||
|
||||
;
|
||||
.loop2_start:
|
||||
LD C,B ; ç¨ ¥¬ áç¨â âì ¯¥à¥¬¥ãî LDRIVE
|
||||
;LD (LDRIVE),A
|
||||
;LD C,A
|
||||
;
|
||||
LD A,DSS_MAX_DRIVES_AMOUNT
|
||||
SUB B ; ᪮«ìª® è £®¢ ¢¯¥àñ¤ ¯® â ¡«¨æ¥ ®áâ «®áì
|
||||
LD B,A
|
||||
;
|
||||
.loop2: LD DE,DEVICE.TBL_Entry ; ⥯¥àì ¤¢¨£ ¥¬áï ¯® â ¡«¨æ¥ ¢¯¥àñ¤
|
||||
ADD IX,DE
|
||||
; âãâ 㪠§ â¥«ì ¯®ª §ë¢ ¥â ¯¥à¢ãî ᢮¡®¤ãî ï祩ªã ¯®á«¥ ¡«®ª á ¤ 묨 ¤à ©¢®¢
|
||||
PUSH IX
|
||||
PUSH BC
|
||||
CALL Fill_if_Exists
|
||||
POP BC
|
||||
POP IX
|
||||
; NC:
|
||||
; DE = ¤à¥á ¯à®æ¥¤ãàë ®¡à ¡®â稪 â ¡«¨æë
|
||||
; A = «®£¨ç¥áª¨© ®¬¥à ãáâனá⢠¢ â ¡«¨æ¥ ®¡à ¡®â稪
|
||||
;
|
||||
; CF - ¥â ¡®«ìè¥ ®¢ëå § ¯¨á¥©
|
||||
JR C,.loop1_exit
|
||||
|
||||
LD (IX+0),A
|
||||
LD (IX+1),E
|
||||
LD (IX+2),D
|
||||
;
|
||||
; LD A,(LDRIVE)
|
||||
; INC A
|
||||
; LD (LDRIVE),A
|
||||
INC C ; ¤®¡ ¢¨«¨ ¤à ©¢
|
||||
;
|
||||
DJNZ .loop2
|
||||
JR .loop1_exit
|
||||
;
|
||||
|
||||
;;;
|
||||
Fill_if_Exists:
|
||||
.tbl+1: LD B,2 ; ª®«¨ç¥á⢮ â ¡«¨æ. ¯®ª 2 - LOGDRV ¨ RAMDTBL ;!!!!! ¢®ááâ ¢«¨¢ âì
|
||||
DJNZ 1F
|
||||
; B=1, RAMDTBL
|
||||
LD A,RAMDTBL.TBL_Entry
|
||||
LD IY,RAMDTBL + #C000
|
||||
CALL .RUN
|
||||
LD DE,RMDRIVE
|
||||
RET NC
|
||||
LD A,(.tbl)
|
||||
DEC A ;!!!!! ¬®¦¥â ¡ëâì ¯¥à¥¯®«¥¨¥
|
||||
LD (.tbl),A
|
||||
RET
|
||||
;
|
||||
1: DJNZ 1F
|
||||
; B=2, LOGDRV
|
||||
LD A,LOGDRV.TBL_Entry
|
||||
LD IY,LOGDRV + #C000
|
||||
CALL .RUN
|
||||
LD DE,HDDRIVE
|
||||
RET NC
|
||||
; ¯¥à¥å®¤¨¬ ¤àã£ãî â ¡«¨æã - RAMDTBL
|
||||
LD A,(.tbl)
|
||||
DEC A ;!!!!! ¬®¦¥â ¡ëâì ¯¥à¥¯®«¥¨¥
|
||||
LD (.tbl),A
|
||||
LD HL,OLD_TABLES.RAMDTBL + #C000
|
||||
LD (OLD_TABLES_CURRENT),HL
|
||||
EXX
|
||||
LD B,MAX_RAMDRIVES
|
||||
EXX
|
||||
JR Fill_if_Exists
|
||||
;
|
||||
;
|
||||
1: SCF ; unknown table number
|
||||
RET
|
||||
;
|
||||
.RUN: EXX
|
||||
;
|
||||
LD D,0
|
||||
LD E,A
|
||||
PUSH DE
|
||||
;
|
||||
LD A,#FE ; ’ ª ¯®¨áª § ª®ç¨âáï «¨¡® ®¬¥à¥ ¤à ©¢ , «¨¡® ¯® ª®æã â ¡«¨æë
|
||||
PUSH BC
|
||||
CALL Find_Record.loop1 ; ¨é¥â ¢ ®¢®© â ¡«¨æ¥ ®¢ãî § ¯¨áì
|
||||
POP BC
|
||||
JR NC,1F
|
||||
;
|
||||
POP DE
|
||||
EXX
|
||||
RET
|
||||
;
|
||||
1: PUSH IY ; á®åà 塞 ⥪ã騩 ¤à¥á ®¢®© â ¡«¨æë
|
||||
;
|
||||
;EX DE,HL
|
||||
;ADD IY,DE
|
||||
;EX DE,HL
|
||||
LD IY,(OLD_TABLES_CURRENT)
|
||||
;
|
||||
LD A,#FF ; ’ ª ¯®¨áª § ª®ç¨âáï «¨¡® ¯ãá⮩ § ¯¨á¨, «¨¡® ¯® ª®æã â ¡«¨æë
|
||||
LD C,D ; ®¬¥à § ¯¨á¨ ¢ â ¡«¨æ¥. D=0
|
||||
PUSH BC
|
||||
CALL Find_Record.loop2
|
||||
LD A,C
|
||||
POP BC
|
||||
JR NC,1F
|
||||
;
|
||||
POP DE
|
||||
POP DE
|
||||
EXX
|
||||
RET
|
||||
;
|
||||
1: EX (SP),IY ; ¯¥à¥ª«î票¥ á® áâ ன ®¢ãî â ¡«¨æã
|
||||
PUSH IY
|
||||
EXX
|
||||
; ¯¥à¥ª¨¤ë¢ ¥¬ § ¯¨áì ¨§ ®¢®© ¢ áâ àãî
|
||||
POP HL
|
||||
POP DE
|
||||
POP BC
|
||||
LDIR
|
||||
|
||||
LD (IY),#FF ; £à®å ¥¬ ⮫쪮 çâ® ¯¥à¥ª¨ãâãî § ¯¨áì ¨§ ®¢®© â ¡«¨æë
|
||||
AND A
|
||||
RET
|
||||
OLD_TABLES_CURRENT: WORD 0
|
||||
|
||||
; ‚•Ž„: A - Œ ᪠¤«ï áà ¢¥¨ï
|
||||
; DE - „«¨ ®¤®© § ¯¨á¨
|
||||
; IY - €¤à¥á ¤ ëå ¢ â ¡«¨æ¥
|
||||
; ‚›•Ž„: NC:
|
||||
; IY - ç «® ¯®¤å®¤ï饩 § ¯¨á¨
|
||||
; C - ®¬¥à ®¢®© § ¯¨á¨ ¢ áâ ன â ¡«¨æ¥
|
||||
; CF - <20>¥ ©¤¥®, â ¡«¨æ § ª®ç¨« áì
|
||||
Find_Record:
|
||||
.loop1: CP (IY)
|
||||
RET NC
|
||||
ADD IY,DE
|
||||
INC C
|
||||
DJNZ .loop1
|
||||
; â ¡«¨æã ¯à®è¥àá⨫¨
|
||||
SCF
|
||||
RET
|
||||
.loop2: CP (IY)
|
||||
RET Z
|
||||
ADD IY,DE
|
||||
INC C
|
||||
DJNZ .loop2
|
||||
; â ¡«¨æã ¯à®è¥àá⨫¨
|
||||
SCF
|
||||
RET
|
||||
;;;
|
||||
|
||||
ERROR_BOOTDRV_DIES:
|
||||
LD BC,256*COLORS.CGA.PAPER.BLUE + BIOS.LP_OPEN_S
|
||||
LD E,0
|
||||
RST ToBIOS
|
||||
|
||||
LD BC,256*COLORS.CGA.PAPER.BLUE + BIOS.LP_CLS_WIN
|
||||
LD DE,0
|
||||
LD HL,#2050
|
||||
RST ToBIOS
|
||||
|
||||
LD A,1
|
||||
OUT (RGMOD),A ; set scr-2
|
||||
|
||||
LD HL,.ERROR_MSG
|
||||
LD DE,#A000
|
||||
LD BC,.ERROR_MSG.size
|
||||
LD A,C
|
||||
LDIR
|
||||
|
||||
LD DE,#10*256 + (80-.ERROR_MSG.size)/2 ;X=0, Y=16
|
||||
LD C,BIOS.LP_SET_PLACE
|
||||
RST ToBIOS
|
||||
|
||||
LD HL,#A000
|
||||
LD DE,0*256 + COLORS.CGA.FLASH + COLORS.CGA.PAPER.BLUE + COLORS.CGA.INC.WHITE
|
||||
LD B,A
|
||||
LD C,BIOS.LP_PRINT_LINE3
|
||||
RST ToBIOS
|
||||
|
||||
.loop: DI
|
||||
; .loop: LD A,R
|
||||
; AND 7
|
||||
; OUT (BorderColor),A
|
||||
HALT
|
||||
JR .loop
|
||||
|
||||
.ERROR_MSG: DZ "Kernel panic! Boot disk lost. Press Ctrl+Alt+Del or RESET."
|
||||
.ERROR_MSG.size EQU $-.ERROR_MSG
|
||||
|
||||
;
|
||||
; <20>… ƒ<>Ž•€’œ HL!
|
||||
; . ¥á«¨ ¤à ©¢ ¥áâì ¢ ®¢®© ¨ áâ ன, â® § â¨à ¥¬ ¢ ®¢®©
|
||||
; â ¡«¨æ¥ ᮢ¯ ¢è¨© ¤à ©¢
|
||||
; ¡. ¥á«¨ ¤à ©¢ ¥áâì ⮫쪮 ¢ áâ ன, â®:
|
||||
; ¡1) £à®å ¥¬ ä ©«®¢ë¥ ¬ ¨¯ã«ïâ®àë á ¥£® ®¬¥à®¬
|
||||
MODULE SCAN_TABLES
|
||||
; ¢å®¤: B - «®£.®¬¥à ¤à ©¢ , DE
|
||||
RAM_DRV:
|
||||
; <20>®«ãç ¥¬ ®¬¥à à ¬¤¨áª ¢ OLD_TABLES.RAMDTBL
|
||||
LD A,B
|
||||
LD BC,OLD_TABLES.RAMDTBL + #C000
|
||||
CALL GET_RAMDRV_NUM.skip_tbl + #C000
|
||||
LD (.cur_drv),BC
|
||||
AND #0F
|
||||
LD C,A ; ®¬¥à à ¬¤¨áª
|
||||
; ˆé¥¬ ¢ ®¢®© â ª®© ¦¥ ®¬¥à à ¬¤¨áª
|
||||
LD B,MAX_RAMDRIVES
|
||||
LD DE,RAMDTBL + #C000
|
||||
.loop: LD A,(DE)
|
||||
SUB C
|
||||
JR Z,.found
|
||||
INC DE
|
||||
INC DE
|
||||
DJNZ .loop
|
||||
; ‡€<E280A1>ˆ‘œ <20>… <20>€‰„…<E2809E>€
|
||||
; „®áâ ñ¬ ¯®«®¦¥¨¥ ¢ OLD_TABLES.DEVICE
|
||||
POP HL
|
||||
; „®áâ ñ¬ è £ ®¡é¥£® 横« ¤«ï ¯®«ãç¥¨ï «®£.®¬¥à ¤à ©¢ ¢ KILL_FM
|
||||
POP BC
|
||||
PUSH BC
|
||||
; ƒà®å ¥¬ ”Œ ¨ § ¯¨áì ¢ OLD_TABLES.DEVICE
|
||||
CALL KILL_FM
|
||||
; £à®å ¥¬ ¢ áâ ன RAMDTBL íâ®â ¤à ©¢
|
||||
EX DE,HL
|
||||
.cur_drv+1:
|
||||
LD HL,0
|
||||
LD (HL),#FF
|
||||
DEC HL
|
||||
LD (HL),#FF
|
||||
EX DE,HL
|
||||
JP SCANDRV.nextN2
|
||||
;
|
||||
.found: DEC A
|
||||
; § â¨à ¥¬ ¢ ®¢®© â ¡«¨æ¥ ᮢ¯ ¢è¨© ¤à ©¢ (ç⮡ «¥£ç¥ ¡ë«® ¯ àá¨âì ®á⠢襥áï)
|
||||
LD (DE),A
|
||||
DEC DE
|
||||
LD (DE),A
|
||||
JP SCANDRV.nextN
|
||||
|
||||
HARD_DRV:
|
||||
LD L,B
|
||||
LOGDRV_ENTRY_FIND OLD_TABLES.LOGDRV + #C000
|
||||
LD IX,LOGDRV + #C000
|
||||
LD DE,LOGDRV.TBL_Entry
|
||||
LD B,DSS_MAX_DRIVES_AMOUNT
|
||||
;
|
||||
.loop: LD A,(IY+0)
|
||||
;CP #FF
|
||||
;JR Z,.skip
|
||||
CP (IX+0)
|
||||
JR NZ,.skip
|
||||
;
|
||||
LD A,(IY+1)
|
||||
CP (IX+1)
|
||||
JR NZ,.skip
|
||||
LD A,(IY+2)
|
||||
CP (IX+2)
|
||||
JR Z,.found
|
||||
;
|
||||
.skip: ADD IX,DE
|
||||
DJNZ .loop
|
||||
; ‡€<E280A1>ˆ‘œ <20>… <20>€‰„…<E2809E>€
|
||||
; ƒà®å ¥¬ áâ àãî § ¯¨áì ¢ OLD_TABLES.LOGDRV
|
||||
LD A,#FF
|
||||
LD (IY+0),A
|
||||
; „®áâ ñ¬ ¯®«®¦¥¨¥ ¢ OLD_TABLES.DEVICE
|
||||
POP HL
|
||||
; „®áâ ñ¬ è £ ®¡é¥£® 横« ¤«ï ¯®«ãç¥¨ï «®£.®¬¥à ¤à ©¢ ¢ KILL_FM
|
||||
POP BC
|
||||
PUSH BC
|
||||
; ƒà®å ¥¬ ”Œ ¨ § ¯¨áì ¢ OLD_TABLES.DEVICE
|
||||
CALL KILL_FM
|
||||
;
|
||||
JP SCANDRV.nextN2
|
||||
;
|
||||
.found: ; § â¨à ¥¬ ¢ ®¢®© â ¡«¨æ¥ ᮢ¯ ¢è¨© ¤à ©¢ (ç⮡ «¥£ç¥ ¡ë«® ¯ àá¨âì ®á⠢襥áï)
|
||||
LD (IX+0),#FF
|
||||
JP SCANDRV.nextN
|
||||
;
|
||||
; CD_ROM:
|
||||
; JP SCANDRV.nextN
|
||||
|
||||
; ‚•Ž„: HL - ⥪ãé ï § ¯¨áì ¢ â ¡«¨æ¥ DEVICE
|
||||
; B - è £ ®¡é¥£® 横«
|
||||
KILL_FM:
|
||||
;
|
||||
LD A,DSS_MAX_DRIVES_AMOUNT
|
||||
SUB B
|
||||
LD C,A
|
||||
; ¢âëª ¥¬ áâà ¨æã ï¤à á â ¡«¨æ¥© ä ©«®¢ëå ¬ ¨¯ã«ïâ®à®¢
|
||||
PUSH BC
|
||||
SET_PAGE_X COREPAGE
|
||||
POP BC
|
||||
PUSH AF
|
||||
; ˜¥àá⨬ ¬ ¨¯ã«ïâ®àë «¨ç¨¥ ¢ ¨å £à®åã⮣® ¤à ©¢
|
||||
LD IY,FM_BUF-FM_BUF.Size + #C000
|
||||
LD B,FMCOUNT
|
||||
LD DE,FM_BUF.Size
|
||||
.loop_fm:
|
||||
ADD IY,DE
|
||||
LD A,(IY+_sFM.DRIVE)
|
||||
CP C
|
||||
JR NZ,.skip
|
||||
XOR A
|
||||
LD (IY+_sFM.NAME),A ; £à®å ¥¬ ¬ ¨¯ã«ïâ®à
|
||||
.skip: DJNZ .loop_fm
|
||||
;
|
||||
POP AF
|
||||
OUT (SLOT3),A
|
||||
;
|
||||
; £à®å ¥¬ ¢ OLD_TABLES.DEVICE 㡨âë© ¤à ©¢
|
||||
LD (HL),#FF
|
||||
;
|
||||
RET
|
||||
ENDMODULE
|
||||
|
||||
ENDIF
|
||||
|
||||
/*
|
||||
[DRIVE TABLES] .Size == DEVICE.Size + LOGDRV.Size + RAMDTBL.Size == 78 + 416 + 32 == 526
|
||||
|
||||
; «®£¨ç¥áª¨© ®¬¥à ãáâனá⢠+ ¤à¥á ®¡à ¡®â稪 .
|
||||
; <20>®à浪®¢ë© ®¬¥à * 3 = ¡ãª¢ ¤¨áª + "A"
|
||||
DEVICE EQU $
|
||||
.TBL_Entry EQU 3
|
||||
.End EQU 1 + $ + DSS_MAX_DRIVES_AMOUNT * .TBL_Entry ; ¤«ï á⮯-¡ ©â #FF
|
||||
.Size EQU .End - $
|
||||
|
||||
;+00 BYTE MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
|
||||
;+01 LONG SECTOR OFFSET
|
||||
;+05 LONG SIZE IN SECTORS
|
||||
;+09 LONG Volume Serial Number in HEX ; [ ] ;!TODO
|
||||
;+13 WORD FREE
|
||||
;+15 BYTE FREE
|
||||
; ‹®£¨ç¥áª¨© ®¬¥à à §¤¥« .
|
||||
;<3B>®¬¥à £à㯯ë = «®£¨ç¥áª¨© ®¬¥à à §¤¥« HDD ¨§ DEVICE
|
||||
LOGDRV EQU DEVICE + DEVICE.Size
|
||||
.TBL_Entry EQU 16
|
||||
.Size EQU DSS_MAX_DRIVES_AMOUNT * .TBL_Entry
|
||||
|
||||
LOGDRV: BLOCK .TBL_Entry*LD_DSK,0 ; ld_dsk = 16
|
||||
.TBL_Entry EQU 16
|
||||
.Size EQU $-LOGDRV
|
||||
; ’€<E28099>‹ˆ–€ ‘ŽŽ’‚…’‘’‚ˆŸ Œ…†„“ ”ˆ‡ˆ—…‘ŠˆŒ <20>ŽŒ…<C592>ŽŒ <20>€Œ„ˆ‘Š€ ˆ …ƒŽ RAM-DISK ID
|
||||
; Log Number: DB RAM_DRIVE_NUMBER, RAM_DRIVE_ID
|
||||
RAMDTBL EQU $ + DEVICE.Size + LOGDRV.Size
|
||||
.TBL_Entry EQU 2
|
||||
.Size EQU .TBL_Entry * MAX_RAMDRIVES
|
||||
|
||||
|
||||
DEVICE: BLOCK DSS_MAX_DRIVES_AMOUNT * .TBL_Entry,#FF
|
||||
.Size: DB #FF
|
||||
.TBL_Entry EQU 3
|
||||
|
||||
|
||||
|
||||
;
|
||||
; NEW RESCAN
|
||||
;=====================================================================[]
|
||||
|
||||
; «®£¨ç¥áª¨© ®¬¥à ãáâனá⢠+ ¤à¥á ®¡à ¡®â稪 .
|
||||
; <20>®à浪®¢ë© ®¬¥à * 3 = ¡ãª¢ ¤¨áª + "A"
|
||||
DEVICE: BLOCK DSS_MAX_DRIVES_AMOUNT*3,#FF
|
||||
.Size: EQU $-DEVICE
|
||||
|
||||
‹®£¨ç¥áª¨© ®¬¥à à §¤¥« .
|
||||
<EFBFBD>®¬¥à £à㯯ë = «®£¨ç¥áª¨© ®¬¥à à §¤¥« HDD ¨§ DEVICE
|
||||
LOGDRV EQU DEVICE + DEVICE.Size
|
||||
.TBL_Entry EQU 16
|
||||
.Size EQU DSS_MAX_DRIVES_AMOUNT * .TBL_Entry
|
||||
+00 BYTE MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
|
||||
+01 LONG SECTOR OFFSET
|
||||
+05 LONG SIZE IN SECTORS (SECTORS ON LOGICAL DISK)
|
||||
+09 FREE
|
||||
+15
|
||||
|
||||
; ’€<E28099>‹ˆ–€ ‘ŽŽ’‚…’‘’‚ˆŸ Œ…†„“ ”ˆ‡ˆ—…‘ŠˆŒ <20>ŽŒ…<C592>ŽŒ <20>€Œ„ˆ‘Š€ ˆ …ƒŽ RAM-DISK ID
|
||||
; Log Number: DB RAM_Drive_Log_Number, RAM_Drive_ID ;(BIOS 0-15), (Block ID for BIOS)
|
||||
RAMDTBL: DUP MAX_RAMDRIVES * 2
|
||||
DB #FF
|
||||
EDUP
|
||||
.Size EQU $-RAMDTBL
|
||||
|
||||
|
||||
|
||||
|
||||
INTDISK:
|
||||
;R01
|
||||
CP #FF
|
||||
JR NZ,.noNeedRescan
|
||||
CP C
|
||||
JR Z,INITDVC_RET_DRIVE
|
||||
.noNeedRescan:
|
||||
;
|
||||
PUSH HL
|
||||
PUSH BC
|
||||
ADD A,A
|
||||
ADD A,A
|
||||
LD C,A
|
||||
LD B,0
|
||||
LD HL,DEVICE
|
||||
ADD HL,BC
|
||||
LD A,(HL)
|
||||
CP #FF
|
||||
JR Z,NODEV
|
||||
INC HL
|
||||
INC HL
|
||||
LD C,(HL)
|
||||
INC HL
|
||||
LD H,(HL)
|
||||
LD L,C
|
||||
POP BC
|
||||
EX (SP),HL
|
||||
RET
|
||||
NODEV: POP BC
|
||||
POP HL
|
||||
LD A,DSS_Error.drv.INVALID_DRIVE
|
||||
SCF
|
||||
RET
|
||||
|
||||
|
||||
|
||||
INITDVC: XOR A
|
||||
LD (DRV_PAGE.LDRIVE),A ; á¡à. ï祩ªã
|
||||
LD HL,DEVICE
|
||||
LD (PDEVICE),HL ; ¢®ááâ. ï祩ªã
|
||||
; FDD ¤¥¢ ©áë
|
||||
CALL FDDRIVE.INIT ; ã§ âì ç¨á«® FDD-¤¥¢ ©á®¢
|
||||
LD DE,FDDRIVE ; ¤à¥á ®¡à ¡®â稪 ⥪. ¤¥¢ ©á
|
||||
CALL MAKEDVC ; ¨¨æ. â ¡«¨æã ¯¥à¥å®¤®¢
|
||||
; HDD ¤¥¢ ©áë
|
||||
; ¥á«¨ áâ à⥠¢¥àá¨ï BIOS ¥ ¯®¤å®¤¨â, â® £à㧨âìáï ¬®¦® ⮫쪮 á ¤¨áª¥âë, ¤«ï í⮣® âãâ § ¬¥ ª®¤ XOR A : RET
|
||||
.if_old: CALL INIT_H
|
||||
;CALL .CHECK_HDD
|
||||
LD DE,HDDRIVE
|
||||
CALL MAKEDVC
|
||||
; RAM-¤¨áª¨
|
||||
CALL INIT_RD
|
||||
LD DE,RMDRIVE
|
||||
CALL MAKEDVC
|
||||
XOR A
|
||||
RET
|
||||
.CHECK_HDD:
|
||||
|
||||
RET
|
||||
|
||||
|
||||
;R01
|
||||
INITDVC_RET_DRIVE:
|
||||
LD DE,DRV_TEMP_BUFFER
|
||||
LD HL,DEVICE
|
||||
LD BC,DEVICE.Size
|
||||
LDIR
|
||||
LD HL,LOGDRV
|
||||
LD BC,LOGDRV.Size
|
||||
LDIR
|
||||
LD HL,RAMDTBL
|
||||
LD BC,RAMDTBL.Size
|
||||
LDIR
|
||||
|
||||
CALL INITDVC
|
||||
|
||||
; ‘à ¢¨¢ ¥¬ áâ àë© DEVICE ¡ãä¥à á ®¢ë¬, ¥á«¨ ¢ ®¢®¬ ¥â ãáâனá⢠, â® § â¨à ¥¬ ¢ áâ àëå ¡ãä¥à å ¥£®
|
||||
LD HL,DEVICE
|
||||
LD DE,DRV_TEMP_BUFFER
|
||||
LD B,DEVICE.Size
|
||||
.loop_DEVICE:
|
||||
LD A,(DE)
|
||||
CP (HL)
|
||||
CALL NZ,.FIND_DEV
|
||||
INC HL
|
||||
INC DE
|
||||
DJNZ .loop_DEVICE
|
||||
|
||||
LD A,(DRV_PAGE.LDRIVE)
|
||||
AND A
|
||||
RET
|
||||
;
|
||||
|
||||
|
||||
DEVICE: BLOCK DSS_MAX_DRIVES_AMOUNT*4,#FF
|
||||
;=====================================================================[]
|
||||
;
|
||||
;
|
||||
*/
|
||||
|
||||
; LD A,(Fill_if_Exists.tbl)
|
||||
; DEC A
|
||||
; LD (Fill_if_Exists.tbl),A
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
; 室¨¬ ¢ áâ ன DEVICE ¯¥à¢ãî ᢮¡®¤ãî ï祩ªã
|
||||
LD HL,OLD_TABLES.DEVICE + DEVICE.Size
|
||||
LD DE,-DEVICE.TBL_Entry
|
||||
LD B,DSS_MAX_DRIVES_AMOUNT
|
||||
LD A,#FF
|
||||
;
|
||||
.loop1: ADD HL,DE
|
||||
CP (HL)
|
||||
JR NZ,.end_found
|
||||
DJNZ .loop1
|
||||
.end_found:
|
||||
; HL = first free record in OLD_TABLES.DEVICE
|
||||
LD (PDEVICE),HL
|
||||
; B = last drive
|
||||
LD A,B
|
||||
LD (DRV_PAGE.LDRIVE),A
|
||||
; <20> 室¨¬ ¢ áâ ன LOGDRV ¯¥à¢ãî ᢮¡®¤ãî ï祩ªã
|
||||
; !TODO âãâ ®¯â¨¬¨§ãâì ¬®¦®
|
||||
EXX ; ¤«ï .ldir_to_empty
|
||||
LD HL,LOGDRV
|
||||
LD B,DSS_MAX_DRIVES_AMOUNT
|
||||
EXX
|
||||
;
|
||||
LD HL,OLD_TABLES.LOGDRV
|
||||
LD DE,LOGDRV.TBL_Entry
|
||||
LD B,DSS_MAX_DRIVES_AMOUNT
|
||||
LD A,#FF
|
||||
;
|
||||
.loop3: CP (HL)
|
||||
JR NZ,.loop3_skip
|
||||
CALL .ldir_to_empty
|
||||
JR Z.loop3_exit
|
||||
.loop3_skip:
|
||||
ADD HL,DE
|
||||
DJNZ .loop3
|
||||
.loop3_exit: ; no free space in old table or no new records in new table
|
||||
|
||||
|
||||
|
||||
; <20> 室¨¬ ¢ ®¢®© LOGDRV ¯¥à¢ãî ®¢ãî § ¯¨áì
|
||||
LD HL,LOGDRV
|
||||
LD DE,LOGDRV.TBL_Entry
|
||||
LD B,DSS_MAX_DRIVES_AMOUNT
|
||||
;
|
||||
.loop2: LD A,(HL)
|
||||
INC A
|
||||
CALL NZ,.
|
||||
JR NZ, ; error - no space for new record
|
||||
ADD HL,DE
|
||||
DJNZ .loop2
|
||||
;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
EXX
|
||||
LD BC,INIT_H
|
||||
EXX
|
||||
LD HL,LOGDRV
|
||||
LD DE,LOGDRV.TBL_Entry
|
||||
LD B,DSS_MAX_DRIVES_AMOUNT
|
||||
.loop_logdrv:
|
||||
LD A,#FF
|
||||
CP (HL)
|
||||
EXX
|
||||
LD A,1
|
||||
CALL NZ,MAKEDVC
|
||||
EXX
|
||||
ADD HL,DE
|
||||
DJNZ .loop_logdrv
|
||||
;
|
||||
EXX
|
||||
LD BC,INIT_RD
|
||||
EXX
|
||||
LD HL,RAMDTBL
|
||||
LD DE,RAMDTBL.TBL_Entry
|
||||
LD B,MAX_RAMDRIVES
|
||||
.loop_logdrv:
|
||||
LD A,#FF
|
||||
CP (HL)
|
||||
EXX
|
||||
LD A,1
|
||||
CALL NZ,MAKEDVC
|
||||
EXX
|
||||
ADD HL,DE
|
||||
DJNZ .loop_logdrv
|
||||
|
||||
|
||||
|
||||
LD B,DSS_MAX_DRIVES_AMOUNT
|
||||
.tbl_scanOld_mainLoop:
|
||||
PUSH BC
|
||||
|
||||
|
||||
|
||||
POP BC
|
||||
DJNZ .tbl_scanOld_mainLoop
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.ldir_to_empty:
|
||||
; <20> 室¨¬ ¢ ®¢®© LOGDRV ¯¥à¢ãî ®¢ãî § ¯¨áì
|
||||
; !TODO âãâ ®¯â¨¬¨§ãâì ¬®¦®
|
||||
PUSH HL
|
||||
EXX
|
||||
;
|
||||
; LD HL,LOGDRV
|
||||
LD DE,LOGDRV.TBL_Entry
|
||||
; LD B,DSS_MAX_DRIVES_AMOUNT
|
||||
LD A,#FF
|
||||
;
|
||||
.loop3: CP (HL)
|
||||
JR NZ,.run_ldir
|
||||
.loop3skip:
|
||||
ADD HL,DE
|
||||
DJNZ .loop3
|
||||
; no new records in table
|
||||
; ZF = 0
|
||||
;LD A,B
|
||||
;DEC A ; Set ZF = 0
|
||||
EXX
|
||||
POP HL ; áà ¢ï«¨ á⥪
|
||||
RET
|
||||
;
|
||||
.run_ldir:
|
||||
POP DE
|
||||
PUSH BC
|
||||
LD BC,LOGDRV.TBL_Entry
|
||||
LDIR
|
||||
POP BC
|
||||
DJNZ .ldir_exit
|
||||
; ®¡à ¡®â «¨ ¯®á«¥¤îî § ¯¨áì ¢ â ¡«¨æ¥
|
||||
LD A,B
|
||||
DEC A ; Set ZF = 0
|
||||
;
|
||||
.ldir_exit:
|
||||
EXX
|
||||
RET
|
||||
*/
|
||||
@ -75,7 +75,7 @@ SCANDRV:
|
||||
LD BC,DEVICE.TBL_Entry
|
||||
EX DE,HL
|
||||
LDDR
|
||||
; ―ΰ<EFBFBD>’₯ΰο₯¬, ₯ γ’₯«¨η¨«<C2A8>αμ «¨ § η₯¨₯ LDRIVE
|
||||
; ¯à®¢¥à塞, ¥ ¬¥ìè¥ «¨ ®¢®¥ § 票¥ LDRIVE áâ ண® ®¬¥à ¡ãâ-¤¨áª
|
||||
;!TEST
|
||||
LD HL,.old_letter
|
||||
LD A,(LDRIVE)
|
||||
|
||||
@ -58,8 +58,8 @@ RESERVED2 BLOCK 490,0
|
||||
|
||||
;
|
||||
STRUCT _sBuffers
|
||||
FileManipulator _sFM ; 44 bytes * FMCOUNT
|
||||
FM_RESERVE BLOCK _sFM * (FMCOUNT-1),0
|
||||
FileManipulator _sFM ; 44 bytes + 44 bytes * (FMCOUNT-1)
|
||||
FM_RESERVE BLOCK _sFM * (FMCOUNT-1),0 ;
|
||||
BootSector _sBOOT_SEC ; 62 bytes ;!TODO ¯¥à¥¥á⨠¢ ®¡« áâì ¡ãä¥à®¢
|
||||
EXE_Header _sEXE_HEADER ; 512 bytes
|
||||
Stack _sStack ; 256 bytes
|
||||
|
||||
@ -670,11 +670,12 @@ LPT_A EQU #1B
|
||||
LPT_B EQU #1C
|
||||
|
||||
PRINT: AND A
|
||||
LD B,A
|
||||
LD B,A ; á®åà 塞 ᨬ¢®«
|
||||
;
|
||||
LD A,R
|
||||
LD A,B
|
||||
DI
|
||||
PUSH AF
|
||||
;
|
||||
XOR A
|
||||
OUT (LPT_A),A
|
||||
LD A,#10
|
||||
@ -682,12 +683,12 @@ PRINT: AND A
|
||||
XOR A
|
||||
OUT (LPT_A),A
|
||||
IN A,(LPT_A) ; IN (1Bh): bit 5 - busy, Bit 3 - Ack
|
||||
;ld c,a ; ‘€‰Œ€<C592>
|
||||
LD C,A
|
||||
BIT 5,A ; IN (19h): bit 5 - Paper Enable, Bit 3 - Select
|
||||
JR NZ,LPTBUSY
|
||||
;and %11011000 ; ‘€‰Œ€<C592>
|
||||
;jr z,LPTBUSY ; ‘€‰Œ€<C592>
|
||||
LD A,B
|
||||
AND %11011000
|
||||
JR Z,LPTBUSY
|
||||
LD A,B ; ¢®ááâ ¢«¨¢ ¥¬ ᨬ¢®«
|
||||
OUT (LPT_B),A
|
||||
POP AF
|
||||
RET PO
|
||||
@ -695,7 +696,7 @@ PRINT: AND A
|
||||
RET
|
||||
LPTBUSY:
|
||||
POP AF
|
||||
;ld a,c ; ‘€‰Œ€<C592>
|
||||
LD A,C
|
||||
SCF
|
||||
RET PO
|
||||
EI
|
||||
|
||||
@ -1 +1 @@
|
||||
312
|
||||
371
|
||||
@ -19,17 +19,19 @@ DSS_MAX_DRIVES_AMOUNT EQU 26
|
||||
DEFINE MINIMUM_BIOS_VERSION 2*256 + 55 ; version 2.55
|
||||
;
|
||||
;-------------------[MEMORY]-------------------------;
|
||||
DEFINE USING_MEMPAGES 4
|
||||
DEFINE PORTAL.RSTx18_SWITCH_ADDRESS #82
|
||||
DEFINE OLD_SET_BANK 0
|
||||
|
||||
DEFINE PORTAL.RSTx18_SWITCH_ADDRESS #82
|
||||
;---------------------[ «®£.®¬¥à áâà ¨æ ¯ ¬ï⨠]---------------------
|
||||
; ªíè ᯨ᪠ª â «®£
|
||||
DIRPAGE EQU 0
|
||||
FATPAGE EQU 1
|
||||
TXTPAGE EQU 2
|
||||
ENVPAGE EQU TXTPAGE
|
||||
DRVPAGE EQU 3
|
||||
;
|
||||
DEFINE USING_MEMPAGES 4 ; à §¬¥à ¡«®ª ¤®¯®«¨â¥«ìëå áâà ¨æ
|
||||
COREPAGE EQU 4 ; ® ®â¤¥«ì® ¨ ¥ á ¡«®ª®¬ ¢ëè¥.
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
DIRSPEC.DEPTH EQU 256 ; '\' + 1..255
|
||||
ENVIRONMENT_STRING_LENGTH EQU 255
|
||||
|
||||
@ -187,7 +187,11 @@ READBAT:
|
||||
ld c,Dss.Read ; ç⥨¥ ä ©«
|
||||
RST ToDSS
|
||||
ld a,e
|
||||
ld (MOVWORD.count),a ; (ç¨á«® ¯à®ç¨â. ¡ ©â ¨§ ä ©« )/128
|
||||
; [x] 28/09/23
|
||||
JR NC,1F
|
||||
XOR A
|
||||
;
|
||||
1: ld (MOVWORD.count),a ; (ç¨á«® ¯à®ç¨â. ¡ ©â ¨§ ä ©« )/128
|
||||
ret
|
||||
|
||||
|
||||
|
||||
@ -1 +1 @@
|
||||
77
|
||||
78
|
||||
@ -1 +1 @@
|
||||
Subproject commit 6eacd6475231a504fae4ed03a12f5cd1cb166ac0
|
||||
Subproject commit 639cc1e69de900dd85e1bc4d3525dfeb91ea15ab
|
||||
Loading…
Reference in New Issue
Block a user