SprinterFirmware/DOS/drv_main.asm
2024-05-27 11:03:22 +03:00

147 lines
2.1 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"
PAGEDRV EQU #00
ORG 0x0000
A0000 JP RST_00 ;CLOSE TASK
DB #FF,#FF,#FF,#FF,#FF
A0008 PUSH AF ;INT BIOS
LD A,#00
OUT (#7C),A
POP AF
RET
RET
A0010 JP RST_10 ;INT DOS
DB #FF,#FF,#FF,#FF,#FF
;A0018 JP INTDISK ;INT DISK
; DB #FF,#FF,#FF,#FF,#FF
A0018 PUSH AF
PUSH BC
LD BC,PAGEDRV+PAGE0
JP ENTER
A0020 JP RST_20 ;
DB #FF,#FF,#FF,#FF,#FF
A0028 JP RST_28 ;
DB #FF,#FF,#FF,#FF,#FF
A0030 JP RST_30 ;INT MOUSE
DB #FF,#FF,#FF,#FF,#FF
A0038 JP RST_38 ;INTERRUPT
;WARNING! DON'T CHANGE LENGHT OF MASK INTERUPT!
;FOR CORRECTED WORKING "Non-Mask Interupt"
RST_38 ;MAIN INTERUPT
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
RST_00
RST_20
RST_28
RST_30
LD A,1
SCF
RET
NMI RETN
NOP
NOP
NOP
A0066 JP NMI
;!!!!!!!!!!!!!!!!!!
ADRST10 EQU #00 ;!!!
;!!!!!!!!!!!!!!!!!!
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
;Move to #007E
DS 8 ;ALIGN
;------=====------
LEAVE PUSH BC
RETBANK LD BC,#0000+PAGE0
OUT (C),B
;Entry point from DSS main page
LD (RETBANK+2),A
POP BC
POP AF
ADCALL CALL DISPATCH
JR LEAVE
LD B,#00 ;2
OUT (C),A ;9
;---
POP BC ;10
RET ;11
;------=====------
ENTER
RET
DISPATCH
CALL INITDVC
LD HL,INTDISK
LD (ADCALL+1),HL
LD A,(LDRIVE)
AND A
RET
KEYSCAN
RET
LDRIVE DB #00
INCLUDE "disk_x.asm"
INCLUDE "ide_drv0.asm"
INCLUDE "fdd_drv0.asm"
INCLUDE "ram_drv0.asm"
DB 0
;[END]