mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
238 lines
5.0 KiB
NASM
238 lines
5.0 KiB
NASM
;[BEGIN]
|
||
;//MODULE: DRV-MAIN AUTHOR: Denis Parinov
|
||
;//CREATE: 2003-03-12
|
||
;---------------------------------------------------------------
|
||
;Rev Date Name Description
|
||
;---------------------------------------------------------------
|
||
;R00 2003-03-19 DNS Initial version
|
||
;---------------------------------------------------------------
|
||
// INCLUDE "hardware.inc"
|
||
// INCLUDE "bios.inc"
|
||
|
||
|
||
; ORG #0000
|
||
|
||
MODULE DRV ; !FIXIT ®¡®©â¨áì ¡¥§ ¬®¤ã«ï
|
||
;PAGEDRV EQU 0
|
||
|
||
;!TODO
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[NOT USED]> ;
|
||
A0000: JP RST_00 ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
;
|
||
RST_00:
|
||
LD A,DSS_Error.drv.INVALID_COMMAND
|
||
SCF
|
||
RET
|
||
;
|
||
|
||
;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[BIOS API]> ;
|
||
BLOCK 8-$,#FF ;
|
||
A0008: PUSH AF ;
|
||
LD A,SYS_PORT.PAGE8;
|
||
OUT (SYS_PORT.ON),A ;
|
||
POP AF ;
|
||
RET ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
;!FIXIT
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[DSS API]> ;
|
||
BLOCK #10-$,#FF ;
|
||
A0010: ;JP RST_10 ;
|
||
DI : HALT ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[DRIVE API]> ;
|
||
BLOCK #18-$,#FF ;
|
||
;A0018 JP INTDISK ;
|
||
A0018: PUSH AF ;
|
||
PUSH BC ;
|
||
MAIN_PG_NUMBER+2: ;
|
||
LD BC,0*256+SLOT0 ; !FIXIT áî¤ ¥ ¤®«¦ë ¢áâ ¢«ïâìáï ®¬¥à ¢ë¤¥«¥ëå áâà ¨æ?
|
||
JP PORTAL.outDRV ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
;!TODO
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[NOT USED]> ;
|
||
BLOCK #20-$,#FF ;
|
||
A0020: JP RST_20 ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
;
|
||
RST_20:
|
||
LD A,DSS_Error.drv.INVALID_COMMAND
|
||
SCF
|
||
RET
|
||
;
|
||
|
||
;!TODO
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[NOT USED]> ;
|
||
BLOCK #28-$,#FF ;
|
||
A0028: JP RST_28 ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
;
|
||
RST_28:
|
||
LD A,DSS_Error.drv.INVALID_COMMAND
|
||
SCF
|
||
RET
|
||
;
|
||
|
||
;!TODO
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[NOT USED]> ;
|
||
BLOCK #30-$,#FF ;
|
||
A0030: JP RST_30 ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
;
|
||
RST_30:
|
||
LD A,DSS_Error.drv.INVALID_COMMAND
|
||
SCF
|
||
RET
|
||
;
|
||
|
||
;!FIXIT
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[MAIN INT]> ;
|
||
BLOCK #38-$,#FF ;
|
||
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 ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
;
|
||
KEYSCAN: RET ;!FIXIT
|
||
;
|
||
|
||
;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
; <[ NMI ]> ;
|
||
NMI: RETN ;
|
||
BLOCK #66-$,#FF ;
|
||
A0066: JP NMI ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
|
||
;-------------------------------;
|
||
;ADRST10 EQU #00 ;!!!!!
|
||
;-------------------------------;
|
||
;!FIXIT
|
||
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]> ;
|
||
BLOCK #7E-$,0 ;
|
||
PORTAL.toMAIN: ;
|
||
PUSH BC ;
|
||
RETBANK+2: ;
|
||
LD BC,0*256+SLOT0 ;
|
||
OUT (C),B ;
|
||
ASSERT $!=84,'-> Portal error!';
|
||
;Entry point from DSS main page ; !FIXIT ¥á«¨ 2 à § ¯à¨«¥â¥âì íâã â®çªã ¢å®¤ , â® § áàñâáï RETBANK
|
||
LD (RETBANK),A ;
|
||
POP BC ;
|
||
POP AF ;
|
||
ADCALL+1: ;
|
||
CALL DISPATCH ; ¯ âç¨âáï INTDISK
|
||
JR PORTAL.toMAIN ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
/*
|
||
push hl
|
||
|
||
*/
|
||
|
||
|
||
;!FIXIT çñâ ¥ â® âãâ
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
LD B,#00; ;
|
||
OUT (C),A ;
|
||
;--- ;
|
||
POP BC ;
|
||
RET ;
|
||
PORTAL.outDRV: ;
|
||
RET ;
|
||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||
;
|
||
|
||
;
|
||
DISPATCH:
|
||
CALL INITDVC
|
||
LD HL,INTDISK
|
||
LD (ADCALL),HL
|
||
LD A,(LDRIVE)
|
||
AND A
|
||
RET
|
||
;
|
||
|
||
LDRIVE DB #00
|
||
|
||
INCLUDE 'disk_x.asm'
|
||
INCLUDE 'ide_drv0.asm'
|
||
INCLUDE 'fdd_drv0.asm'
|
||
;INCLUDE 'ram_drv0.asm'
|
||
INCLUDE 'ram_drv1.asm'
|
||
|
||
DB 0
|
||
|
||
ENDMODULE
|
||
; OUTEND
|
||
;[END]
|