mirror of
https://github.com/sheumann/NetDisk.git
synced 2024-11-27 19:49:38 +00:00
dd228dff2d
I think there should still be some disk-switched logic elsewhere, based on the somewhat complicated rules for it in the documentation, but at least this provides a notification when a new disk is mounted.
104 lines
1.9 KiB
NASM
104 lines
1.9 KiB
NASM
* Wrappers for GS/OS system service calls
|
|
|
|
* These are designed to be called from within GS/OS, e.g. in a driver.
|
|
|
|
case on
|
|
|
|
* System service routines
|
|
CACHE_FIND_BLK gequ $01FC04
|
|
CACHE_ADD_BLK gequ $01FC08
|
|
SWAP_OUT gequ $01FC34
|
|
SET_SYS_SPEED gequ $01FC50
|
|
MOVE_INFO gequ $01FC70
|
|
SIGNAL gequ $01FC88
|
|
SET_DISKSW gequ $01FC90
|
|
SUP_DRVR_DISP gequ $01FCA4
|
|
INSTALL_DRIVER gequ $01FCA8
|
|
|
|
* GS/OS direct page locations
|
|
deviceNum gequ $00
|
|
callNum gequ $02
|
|
|
|
* Driver call number
|
|
Driver_Read gequ $0002
|
|
|
|
dummy private
|
|
end
|
|
|
|
CacheFindBlk start
|
|
phb
|
|
phd
|
|
lda >gsosDP ; set DP to GS/OS direct page
|
|
tcd
|
|
|
|
jsl ForceLCBank1 ; force in language card bank 1
|
|
pha ; save old state reg
|
|
|
|
clc ; search by device number
|
|
jsl CACHE_FIND_BLK ; call the system service
|
|
php ; save result (carry flag)
|
|
php
|
|
pld
|
|
|
|
jsl RestoreStateReg ; restore old state reg
|
|
|
|
tdc ; get result
|
|
and #$0001 ; get just carry flag value as result
|
|
eor #$0001 ; invert sense, so TRUE=block was found
|
|
pld ; restore direct page
|
|
plb
|
|
rtl
|
|
end
|
|
|
|
|
|
CacheAddBlk start
|
|
phb
|
|
phd
|
|
lda >gsosDP ; set DP to GS/OS direct page
|
|
tcd
|
|
|
|
jsl ForceLCBank1 ; force in language card bank 1
|
|
pha ; save old state reg
|
|
|
|
jsl CACHE_ADD_BLK ; call the system service
|
|
php ; save result (carry flag)
|
|
php
|
|
pld
|
|
|
|
jsl RestoreStateReg ; restore old state reg
|
|
|
|
tdc ; get result
|
|
and #$0001 ; get just carry flag value as result
|
|
eor #$0001 ; invert sense, so TRUE=block was added
|
|
pld ; restore direct page
|
|
plb
|
|
rtl
|
|
end
|
|
|
|
|
|
SetDiskSw start
|
|
phd
|
|
lda >gsosDP ; set DP to GS/OS direct page
|
|
tcd
|
|
|
|
jsl ForceLCBank1 ; force in language card bank 1
|
|
pha ; save old state reg
|
|
|
|
pei deviceNum ; Save deviceNum & CallNum
|
|
pei callNum
|
|
lda Driver_Read ; and adjust callNum
|
|
sta callNum ; per GS/OS TN #7
|
|
|
|
jsl SET_DISKSW ; call the system service
|
|
|
|
pla ; restore callNum & deviceNum
|
|
sta callNum
|
|
pla
|
|
sta deviceNum
|
|
|
|
jsl RestoreStateReg ; restore old state reg
|
|
|
|
pld ; restore direct page
|
|
rtl
|
|
end
|