-
Notifications
You must be signed in to change notification settings - Fork 1
/
disk.inc
114 lines (104 loc) · 3.07 KB
/
disk.inc
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
104
105
106
107
108
109
110
111
112
113
114
; apple vectors
kbdstrb = $C010
drvoff = $C088
drvon = $C089
drvinbyt = $C08C
drvoutbyt = $C08D
drvctl1 = $C08E
drvctl2 = $C08F
init = $FB2F ; init screen
kbdwait = $FB88 ; wait keypress
bascalc = $FBC1 ; calc line addr
wait = $FCA8 ; wait routine
home = $FC58 ; clear screen
crout = $FD8E ; CR out sub
prbyte = $FDDA ; print byte in hex
cout = $FDED ; character out sub
; dos routines
dos = $3D0
rwts = $3D9 ; RWTS jsr (tmp = delay)
locrpl = $3E3 ; locate RWTS paramlist jsr
; rwts
rpliob = 0
rplslt = 1
rpldrv = 2
rplvol = 3
rpltrk = 4
rplsec = 5
rpldct = 6
rplbuf = 8 ; (2 bytes)
rplsiz = $b
rplcmd = $c
rplret = $e
cmdseek = 0
cmdread = 1
cmdwrite = 2
cmdformat= 4
; zero page parameters
secnum = $19 ; sector num ($0-$f)
trknum = $1A ; track num (0-34)
segcnt = $1B ; segment 0-9
buffer = $1C ; MSB of RWTS buffer
seccnt = $1D ; sector count 0-55
rwtsptr = $1E ; ptr to rwts addr (2 bytes)
; monitor vars
ch = $24 ; cursor horizontal
basl = $28 ; line addr form bascalc LSB
a1 = $3c ; for save
a2 = $3e ; for save
preg = $48 ; monitor status register
; other vars
diskslot = $60 ; slot 6 * 16
start_page = $10
end_page = $80
linewidth = 40
statusline = 21
secmax = 16 ; 16 sectors by track
line21 = $6D0
ack = $06
nak = $15
esc = $9b
clrstatus
lda #" " ; space
ldx #linewidth-1 ; clear line
- sta line21,x
dex
bpl -
lda #statusline ; vert
jsr bascalc ; move cursor to status line
lda #0
sta ch ; horiz
rts
draw
clc
lda secnum ; num line = sector + 4
adc #4
jsr bascalc
clc
lda trknum ; num col = track + 4
adc #4
tay
txa
sta (basl),y ; store char in screen ram
- rts
screen .text "TRACK\n"
.text " 00000000000000001111111111111111222\n"
.text " 0123456789ABCDEF0123456789ABCDEF012\n"
.text " -----------------------------------\n"
.text " 0:\n"
.text " 1:\n"
.text " 2:\n"
.text " 3:\n"
.text " 4:\n"
.text "S 5:\n"
.text "E 6:\n"
.text "C 7:\n"
.text "T 8:\n"
.text "O 9:\n"
.text "R A:\n"
.text " B:\n"
.text " C:\n"
.text " D:\n"
.text " E:\n"
.text " F:\n"
.byte 0