mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
586 lines
12 KiB
NASM
586 lines
12 KiB
NASM
;[BEGIN]
|
||
;//MODULE: DRV-MAIN AUTHOR: Denis Parinov
|
||
;//CREATE: 2003-03-12
|
||
;---------------------------------------------------------------
|
||
;Rev Date Name Description
|
||
;---------------------------------------------------------------
|
||
;R00 2003-03-19 DNS Initial version
|
||
;---------------------------------------------------------------
|
||
|
||
; ORG #0000
|
||
|
||
;PAGEDRV EQU 0
|
||
|
||
|
||
;===============;
|
||
;!FIXIT ¢ ¯à®æ¥¤ãॠª®â®à ï ¡ã¤¥â ®â¢¥ç âì § ¯¥à¥å®¤ ¨§ í⮩ áâà ¨æë ®¡à â® ¢ MAIN ¤«ï ¢ë§®¢ äãªæ¨©
|
||
; „‘‘ ¨, ¢®§¬®¦®, ¯®¢â®à®¬ã § 室㠢 íâã áâà ¨æã ç¥à¥§ RST #18 ¨§ ¤à㣨å áâà ¨æ (ª®â®àëå ¯®ª ¥â)
|
||
; ᤥ« âì ¥çâ® ¯®¤®¡®¥ á ¯à®£à ¬¬ë¬ á⥪®¬ áâà ¨æ. <20>â ¯à®æ¥¤ãà ¨å á®åà ï¥â, ¯à¨¬¥à® â ª ï ¦¥
|
||
; ¤®«¦ ¢®ááâ ¢«¨¢ âì.
|
||
; PUSH HL
|
||
;.SP+1: LD HL,DRV_PAGE.RSTx18_RET_PAGES
|
||
; LD (HL),A
|
||
; DEC L ; <20>¥ HL, L - ç⮡ § ª®«ì楢 âì ®¡« áâì
|
||
; LD (.SP),HL
|
||
; POP HL
|
||
;===============;
|
||
|
||
;!TODO
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[NOT USED]> ;
|
||
A0000: JP RST_00 ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
;
|
||
RST_00:
|
||
LD A,DSS_Error.drv.INVALID_COMMAND
|
||
SCF
|
||
RET
|
||
;
|
||
|
||
;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[BIOS API]> ;
|
||
BLOCK 8-$,#C7 ; #C7 - "RST 0" opcode
|
||
A0008: PUSH AF ;
|
||
LD A,SYS_PORT.PAGE8;
|
||
OUT (SYS_PORT.ON),A ;
|
||
POP AF ;
|
||
RET ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
;!FIXIT
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[DSS API]> ;
|
||
BLOCK #10-$,#C7 ; #C7 - "RST 0" opcode
|
||
A0010: ;JP DRV_PAGE.RST_10 ;
|
||
DI : HALT ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[DRIVE API]> ;
|
||
BLOCK #18-$,#C7 ; #C7 - "RST 0" opcode
|
||
;A0018 JP INTDISK ;
|
||
A0018: PUSH AF ;
|
||
PUSH BC ;
|
||
DRV_PAGE.MAIN_PAGE_NUMBER+2: ;
|
||
LD BC,0*256 + SLOT0 ; !FIXIT áî¤ ¥ ¤®«¦ë ¢áâ ¢«ïâìáï ®¬¥à ¢ë¤¥«¥ëå áâà ¨æ?
|
||
JP PORTAL.outDRV ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
|
||
|
||
;!TODO
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[NOT USED]> ;
|
||
BLOCK #20-$,#C7 ; #C7 - "RST 0" opcode
|
||
A0020: JP DRV_PAGE.RST_20 ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
;
|
||
DRV_PAGE.RST_20:
|
||
LD A,DSS_Error.drv.INVALID_COMMAND
|
||
SCF
|
||
RET
|
||
;
|
||
|
||
;!TODO
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[NOT USED]> ;
|
||
BLOCK #28-$,#C7 ; #C7 - "RST 0" opcode
|
||
A0028: JP DRV_PAGE.RST_28 ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
;
|
||
DRV_PAGE.RST_28:
|
||
LD A,DSS_Error.drv.INVALID_COMMAND
|
||
SCF
|
||
RET
|
||
;
|
||
|
||
;!TODO
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[NOT USED]> ;
|
||
BLOCK #30-$,#C7 ;
|
||
A0030: JP RST_30 ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
;
|
||
RST_30:
|
||
LD A,DSS_Error.drv.INVALID_COMMAND
|
||
SCF
|
||
RET
|
||
;
|
||
|
||
;!FIXIT
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[MAIN INT]> ;
|
||
BLOCK #38-$,#C7 ;
|
||
A0038: ;
|
||
; JP RST_38 ;
|
||
; RST_38: ;
|
||
; INT_: PUSH AF ;
|
||
; EX AF,AF' ;
|
||
; PUSH AF ;
|
||
; PUSH BC ;
|
||
; PUSH DE ;
|
||
; PUSH HL ;
|
||
; EXX ;
|
||
; PUSH BC ;
|
||
; PUSH DE ;
|
||
; PUSH HL ;
|
||
; PUSH IX ;
|
||
; PUSH IY ;
|
||
; CALL KEYSCAN ;
|
||
; LD C,#80 ;
|
||
; RST #30 ;
|
||
; POP IY ;
|
||
; POP IX ;
|
||
; POP HL ;
|
||
; POP DE ;
|
||
; POP BC ;
|
||
; EXX ;
|
||
; POP HL ;
|
||
; POP DE ;
|
||
; POP BC ;
|
||
; POP AF ;
|
||
; EX AF,AF' ;
|
||
; POP AF ;
|
||
EI ;
|
||
RETI ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
;
|
||
DRV_PAGE.KEYSCAN: RET ;!FIXIT
|
||
;
|
||
|
||
;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[ NMI ]> ;
|
||
DRV_PAGE.NMI: RETN ;
|
||
BLOCK #66-$,#C7;
|
||
A0066: JP DRV_PAGE.NMI ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
|
||
;-------------------------------;
|
||
;ADRST10 EQU #00 ; ;!!!!!
|
||
;-------------------------------;
|
||
;!FIXIT
|
||
; DRV_PAGE.RST_10:
|
||
; PUSH HL
|
||
; LD L,C
|
||
; LD H,ADRST10/256
|
||
; LD C,(HL)
|
||
; INC H
|
||
; LD H,(HL)
|
||
; LD L,C
|
||
; EX (SP),HL
|
||
; RET
|
||
|
||
;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[DRIVE PAGE SWITCH]> ;
|
||
_mInfoBLOCK PORTAL.RSTx18_SWITCH_ADDRESS-$-(PORTAL.out_DRV.switch - PORTAL.out_DRV),#C7
|
||
PORTAL.out_DRV: PUSH BC ;
|
||
.RETBANK+2: LD BC,SLOT0 + 0*256;
|
||
.switch: OUT (C),B ;
|
||
ASSERT $!=84,'-> Portal error!';
|
||
;Entry point from DSS main page
|
||
LD (.RETBANK),A ;
|
||
POP BC ;
|
||
POP AF ;
|
||
ADCALL+1: CALL DISPATCH ; ¯ âç¨âáï INTDISK
|
||
JP PORTAL.out_DRV ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
|
||
|
||
;!FIXIT çñâ ¥ â® âãâ
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
LD B,#00; ;
|
||
OUT (C),A ;
|
||
;--- ;
|
||
POP BC ;
|
||
RET ;
|
||
PORTAL.outDRV: ;
|
||
RET ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
;
|
||
|
||
/*
|
||
; !!! ‚›‡›‚€’œ ’Ž‹œŠŽ —…<E28094>…‡ RST #10 ¢ DSS-MAIN !!!
|
||
RESCAN_DRV:
|
||
AND A
|
||
LD A,R
|
||
PUSH AF
|
||
DI
|
||
;;
|
||
IN A,(SLOT3)
|
||
LD (.restore_page),A
|
||
LD A,(PORTAL.out_DRV.RETBANK)
|
||
OUT (SLOT3),A
|
||
LD A,(BOOTDRV+#C000) ; ã§ «¨ «®£.®¬¥à boot ¤¨áª
|
||
LD (.BOOT),A ; á®åà ¨«¨
|
||
.restore_page+1:
|
||
LD A,0
|
||
OUT (SLOT3),A
|
||
|
||
LD A,(.BOOT)
|
||
CP 2
|
||
JR C,.Change ; bootdisk - ¤¨áª¥â ?
|
||
|
||
LD C,A
|
||
ADD A
|
||
ADD C
|
||
LD HL,DEVICE
|
||
LD C,A
|
||
XOR A
|
||
LD B,A
|
||
ADC HL,BC
|
||
LD DE,.DEVICE
|
||
LD BC,3 ;!HARDCODE ¤«¨ § ¯¨á¨ ¢ DEVICE
|
||
LDIR ; á®åà ¨«¨ § ¯¨áì boot-dsk
|
||
;!TODO âãâ ¯®ª à ¡®â ¥â ¢ ਠ⠧ ¬¥ë ¡ãª¢ë ¤«ï boot-RAM-DRV ¨ HDD
|
||
LD DE,.DEVICE+1
|
||
LD HL,HDDRIVE
|
||
AND A
|
||
SBC HL,DE
|
||
JR Z,.HDD_SYS
|
||
;
|
||
LD HL,RMDRIVE
|
||
AND A
|
||
SBC HL,DE
|
||
JR NZ,.Change
|
||
;
|
||
.RMD_SYS:
|
||
LD A,#60
|
||
LD (.BOOT_TYPE),A
|
||
LD A,(.DEVICE)
|
||
LD HL,RAMDTBL
|
||
SLA A
|
||
ADD A,L
|
||
LD L,A
|
||
LD A,0
|
||
ADC A,H
|
||
LD H,A
|
||
;’ãâ ¢ HL ¤à¥á ¯¥à¢®£® ¡ ©â § ¯¨á¨ ® boot RAM-DRV
|
||
LD DE,.RAMDTBL
|
||
LD BC,RAMDTBL.TBL_Entry
|
||
LDIR ; á®åà ¨«¨ § ¯¨áì ® RAM-DRV
|
||
JP .Change
|
||
;
|
||
.HDD_SYS:
|
||
LD A,#80
|
||
LD (.BOOT_TYPE),A
|
||
;
|
||
LD A,(.DEVICE)
|
||
ADD A,A
|
||
ADD A,A
|
||
ADD A,A
|
||
ADD A,A
|
||
LD HL,LOGDRV
|
||
ADD A,L
|
||
LD L,A
|
||
LD A,0
|
||
ADC A,H
|
||
LD H,A
|
||
; ’ãâ ¢ HL ¤à¥á ¯¥à¢®£® ¡ ©â § ¯¨á¨ ® boot à §¤¥«¥
|
||
LD DE,.LOGDRV
|
||
LD BC,LOGDRV.TBL_Entry
|
||
LDIR ; á®åà ¨«¨ § ¯¨áì ® HDD à §¤¥«¥
|
||
|
||
;JP .Change
|
||
.Change: CALL INITDVC_RET_DRIVE
|
||
LD A,(.BOOT)
|
||
CP 2
|
||
JR C,.exit ; bootdisk - ¤¨áª¥â ?
|
||
|
||
; 3. <20>஢¥à¨âì, ᬥ¨« áì «¨ ¡ãª¢ boot-drv ¨ ¢ë©â¨, ¥á«¨ ¥â.
|
||
; 4. …᫨ boot HDD ¨ ¥£® ¡ãª¢ã § ï« HDD, â® ¬¥ï¥¬ ¬¥áâ ¬¨ ¨å
|
||
; § ¯¨á¨ ¢ â ¡«¨æ å DEVICE ¨ LOGDRV.
|
||
; …᫨ boot HDD ¨ ¥£® ¡ãª¢ã § ï« RAM Drive, â® ¨¤¨ å¥à, ¥ ¬®¦¥â ¡ëâì)).
|
||
; …᫨ boot FDD â® ¨å¥à ¥ á«ãç¨âáï.
|
||
; …᫨ boot CD-ROM, â® ¯®¤ã¬ ¥¬, ª®£¤ ¤® í⮣® ¤®¦¨¢ñ¬.
|
||
; …᫨ boot RAM Drive ¨ ¥£® ¡ãª¢ã § ï« HDD, ⮠㦮 ᬥ¨âì
|
||
; ¨å ¬¥áâ ¬¨ ¢ â ¡«¨æ¥ DEVICE.
|
||
; !!!!! çâ® ¡ã¤¥â, ¥á«¨ ¡ãª¢ ¡ãâ-¤¨áª …, ¯®á«¥ à¥áª
|
||
; § £àã§®çë© à §¤¥« ®ª § «áï ¥¤¨áâ¢¥ë¬ ¢ á¨á⥬¥?
|
||
; € ¥á«¨ áà §ã ¡ã¤ãâ ¨§¬¥¥¨ï á RAM ¤¨áª ¬¨ ¨ HDD à §¤¥« ¬¨?
|
||
|
||
LD A,(.BOOT_TYPE)
|
||
CP #60 ;!HARDCODE ram drive
|
||
JR NZ,.restore_HDD
|
||
.restore_RMD:
|
||
LD A,(.RAMDTBL+1)
|
||
LD HL,RAMDTBL+1
|
||
LD B,RAMDTBL.Size / RAMDTBL.TBL_Entry
|
||
|
||
.loop_RMD:
|
||
CP (HL)
|
||
JR Z,.found_RMD ; ZF - 諨 ¢ ®¢®© RAMDTBL bootdisk ¯® ¥£® 䨧¨ç¥áª®¬ã ®¬¥àã
|
||
INC HL
|
||
INC HL
|
||
DJNZ .loop_RMD
|
||
JP .BIG_ERROR ; bootdisk died...
|
||
|
||
.found_RMD:
|
||
LD A,RAMDTBL.Size / RAMDTBL.TBL_Entry
|
||
SUB B
|
||
LD (.DEVICE),A ; new bootdisk log.number in RAMDTBL
|
||
DEC HL
|
||
LD A,(HL) ; «®£¨ç¥áª¨© ®¬¥à ¤«ï ¯®¨áª ¢ DEVICE
|
||
LD (.DEVICE_NEW),A ; á®åà 塞
|
||
|
||
; ¯®¨áª ®¬¥à § ¯¨á¨ ¯® ¥ñ «®£¨ç¥áª®¬ã ¤¨áªã + ¯à®æ¥¤ãॠ®¡à ¡®â稪
|
||
LD HL,DEVICE-DEVICE.TBL_Entry
|
||
LD DE,DEVICE.TBL_Entry
|
||
LD BC,DEVICE.Size / DEVICE.TBL_Entry
|
||
.found_RMD.nxt:
|
||
AND A
|
||
ADC HL,DE
|
||
PUSH HL
|
||
EXX
|
||
POP HL
|
||
LD DE,.DEVICE
|
||
LD B,DEVICE.TBL_Entry
|
||
CALL COMPARE_BYTES
|
||
EXX
|
||
JR Z, found entry
|
||
DJNZ NZ,.found_RMD.nxt
|
||
.BIG_ERROR:
|
||
;;;;
|
||
|
||
|
||
LD BC,DEVICE.Size / DEVICE.TBL_Entry
|
||
AND A
|
||
|
||
; ¤«¨ § ¯¨á¨. áà ¢¨¢ ¥¬ ¯®«®¥ ᮢ¯ ¤¥¨¥ .DEVICE á
|
||
; ®¤®© ¨§ § ¯¨á¥© DEVICE
|
||
LD B,DEVICE.TBL_Entry
|
||
.rmd_loop_search:
|
||
LD A,(DE)
|
||
CP (HL)
|
||
JR NZ,.nxt_loop_
|
||
INC DE
|
||
INC HL
|
||
DJNZ .rmd_loop_search
|
||
|
||
POP BC
|
||
|
||
|
||
;JP P,.BIG_ERROR ; ¥á«¨ ¯à®è¥àá⨫¨ § ¯à¥¤¥«ë â ¡«¨æë
|
||
|
||
;
|
||
JP .exit
|
||
;
|
||
.restore_HDD:
|
||
|
||
;JP .exit
|
||
;;
|
||
.exit: LD HL,.Start_buffer
|
||
LD (HL),#FF
|
||
LD DE,.Start_buffer+1
|
||
LD BC,.Size_buffer-1
|
||
LDIR ; ¯®¬ëâì § ᮡ®î))
|
||
|
||
POP AF
|
||
LD A,(DRV_PAGE.LDRIVE)
|
||
RET PO
|
||
EI
|
||
RET
|
||
.Start_buffer:
|
||
.BOOT: DB #FF ; «®£¨ç¥áª¨© ®¬¥à
|
||
.BOOT_TYPE: DB #FF ; 00, #60, #80, #C0
|
||
.DEVICE: BLOCK 3,#FF
|
||
.DEVICE_NEW: BLOCK 3,#FF
|
||
.LOGDRV: BLOCK 16,#FF
|
||
.RAMDTBL: BLOCK 2,#FF ; «®£ RMD, 䨧 RMD
|
||
.Size_buffer EQU $-.Start_buffer
|
||
|
||
;‚•Ž„: HL,DE - ¤à¥á áà ¢¨¢ ¥¬ëå ¡«®ª®¢, B - ¤«¨ ¡«®ª
|
||
;‚›•Ž„: ZF - ¡«®ª¨ ®¤¨ ª®¢ë, ¢ HL ¨ DE ¤à¥á á«¥¤ãî饣® ¡ ©â ¯®á«¥ ᮢ¯ ¢è¥£® ¡«®ª
|
||
; NZ - ¡«®ª¨ ¥®¤¨ ª®¢ë.
|
||
COMPARE_BYTES:
|
||
LD A,(DE)
|
||
CP (HL)
|
||
RET NZ
|
||
INC HL
|
||
INC DE
|
||
DJNZ COMPARE_BYTES
|
||
XOR A
|
||
RET
|
||
|
||
*/
|
||
|
||
|
||
DRV_PAGE.LDRIVE: DB #00
|
||
|
||
DISPATCH:
|
||
LD HL,INTDISK
|
||
LD (ADCALL),HL
|
||
INITDVC_RET_DRIVE:
|
||
CALL INITDVC
|
||
LD A,(DRV_PAGE.LDRIVE)
|
||
AND A
|
||
RET
|
||
|
||
INCLUDE 'dss/media_drivers/shared-drv.asm'
|
||
INCLUDE 'dss/media_drivers/ide-drv.asm'
|
||
INCLUDE 'dss/media_drivers/fdd-drv.asm'
|
||
INCLUDE 'dss/media_drivers/ram_disk-drv.asm'
|
||
|
||
DEVICE_CFG:
|
||
DRV_TEMP_BUFFER:
|
||
;
|
||
|
||
|
||
;
|
||
;---------[256 bytes stack for return pages of RST #18 callers]--------;
|
||
; #3F00 - #3FFF
|
||
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
|
||
;=====================================================================[]
|
||
;
|
||
;
|
||
*/ |