* 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