Repository navigation
Expand file tree
/
Copy pathsystemservices.asm
More file actions
103 lines (78 loc) · 1.94 KB
/
Copy pathsystemservices.asm
File metadata and controls
103 lines (78 loc) · 1.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
* 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