-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSAMHeader.asm
More file actions
283 lines (258 loc) · 8.67 KB
/
SAMHeader.asm
File metadata and controls
283 lines (258 loc) · 8.67 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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
;/------------------------------------------------------------------------------------------\
;| SAM Coupe Header |
;|------------------------------------------------------------------------------------------|
;| Defines various values for use in writing SAM Coupe software |
;\------------------------------------------------------------------------------------------/
;--------------------------------------------------------------------------------------------
; INPUT/OUTPUT PORTS
I_D1_S1_STATUS: EQU 224
I_D1_S1_TRACK: EQU 225
I_D1_S1_SECTOR: EQU 226
I_D1_S1_DATA: EQU 227
I_D1_S2_STATUS: EQU 228
I_D1_S2_TRACK: EQU 229
I_D1_S2_SECTOR: EQU 230
I_D1_S2_DATA: EQU 231
O_D1_S1_COMMAND: EQU 224
O_D1_S1_TRACK: EQU 225
O_D1_S1_SECTOR: EQU 226
O_D1_S1_DATA: EQU 227
O_D1_S2_COMMAND: EQU 228
O_D1_S2_TRACK: EQU 229
O_D1_S2_SECTOR: EQU 230
O_D1_S2_DATA: EQU 231
I_D2_S1_STATUS: EQU 240
I_D2_S1_TRACK: EQU 241
I_D2_S1_SECTOR: EQU 242
I_D2_S1_DATA: EQU 243
I_D2_S2_STATUS: EQU 244
I_D2_S2_TRACK: EQU 245
I_D2_S2_SECTOR: EQU 246
I_D2_S2_DATA: EQU 247
O_D2_S1_COMMAND: EQU 240
O_D2_S1_TRACK: EQU 241
O_D2_S1_SECTOR: EQU 242
O_D2_S1_DATA: EQU 243
O_D2_S2_COMMAND: EQU 244
O_D2_S2_TRACK: EQU 245
O_D2_S2_SECTOR: EQU 246
O_D2_S2_DATA: EQU 247
IO_LMPR: EQU 250
IO_HMPR: EQU 251
IO_VMPR: EQU 252
I_PEN: EQU 248
I_STATUS: EQU 249
I_MIDI_IN: EQU 253
I_KEYBOARD: EQU 254
I_ATTRIBUTES: EQU 255
O_EXRAM_SECTION_C: EQU 128
O_EXRAM_SECTION_D: EQU 129
O_CLUT: EQU 248
O_LINEINT: EQU 249
O_MIDI_OUT: EQU 253
O_BORDER: EQU 254
O_SOUND: EQU 255
I_SMB_CLK_1SEC: EQU &00ef
I_SMB_CLK_10SEC: EQU &10ef
I_SMB_CLK_1MIN: EQU &20ef
I_SMB_CLK_10MIN: EQU &30ef
I_SMB_CLK_1HOUR: EQU &40ef
I_SMB_CLK_10HOUR: EQU &50ef
I_SMB_CLK_1DAY: EQU &60ef
I_SMB_CLK_10DAY: EQU &70ef
I_SMB_CLK_1MONTH: EQU &80ef
I_SMB_CLK_10MONTH: EQU &90ef
I_SMB_CLK_1YEAR: EQU &a0ef
I_SMB_CLK_10YEAR: EQU &b0ef
I_SMB_CLK_WEEKDAY: EQU &c0ef
I_SMB_CLK_CONTROL: EQU &d0ef
IO_DALLAS_CLK_CONTROL: equ &feef
IO_DALLAS_CLK_DATA: equ &ffef
IO_AL_CLK_CONTROL: equ &fdf5
IO_AL_CLK_CONTROL2: equ &fff5
O_ATOM_REGISTER_SELECT: equ 245
IO_ATOM_DATA: equ 247
I_ATOM_STROBE: equ 246
;--------------------------------------------------------------------------------------------
; DISK BIT ALLOCATIONS
DISKCMD_Restore: EQU %00000000 ; FLAGS: DisableSpinUp, Verify, StepRate
DISKCMD_Seek: EQU %00010000 ; FLAGS: DisableSpinUp, Verify, StepRate
DISKCMD_Step: EQU %00100000 ; FLAGS: UpdateTrack, DisableSpinUp, Verify, StepRate
DISKCMD_Step_In: EQU %01000000 ; FLAGS: UpdateTrack, DisableSpinUp, Verify, StepRate
DISKCMD_Step_Out: EQU %01100000 ; FLAGS: UpdateTrack, DisableSpinUp, Verify, StepRate
DISKCMD_ReadSector: EQU %10000000 ; FLAGS: MultipleSector, DisableSpinUp, Delay
DISKCMD_WriteSector: EQU %10100000 ; FLAGS: MultipleSector, DisableSpinUp, Delay, WritePreComp, DeletedDataMark
DISKCMD_ReadAddress: EQU %11000000 ; FLAGS: DisableSpinUp, Delay
DISKCMD_ReadTrack: EQU %11010000 ; FLAGS: DisableSpinUp, Delay
DISKCMD_WriteTrack: EQU %11110000 ; FLAGS: DisableSpinUp, Delay, WritePreComp
DISKCMD_ForceInterrupt: EQU %11010000 ; FLAGS: Immediate, IndexPulse, Terminate
DISKFLAG_UpdateTrack: EQU %00010000
DISKFLAG_MultipleSector: EQU %00010000
DISKFLAG_DisableSpinUp: EQU %00001000
DISKFLAG_Verify: EQU %00000100
DISKFLAG_Delay: EQU %00000100
DISKFLAG_StepRate2: EQU %00000010
DISKFLAG_StepRate3: EQU %00000011
DISKFLAG_StepRate6: EQU %00000000
DISKFLAG_StepRate12: EQU %00000001
DISKFLAG_WritePreComp: EQU %00000010
DISKFLAG_DeletedDataMark: EQU %00000001
DISKFLAG_Immediate: EQU %00001000
DISKFLAG_IndexPulse: EQU %00000100
DISKFLAG_Terminate: EQU %00000000
DISKSTATUS_MotorOn_Bit: EQU 7
DISKSTATUS_WriteProtect_Bit: EQU 6
DISKSTATUS_SpinUp_Bit: EQU 5
DISKSTATUS_Record_Bit: EQU 5
DISKSTATUS_RNF_Bit: EQU 4
DISKSTATUS_SeekError_Bit: EQU 4
DISKSTATUS_CRCError_Bit: EQU 3
DISKSTATUS_LostData_Bit: EQU 2
DISKSTATUS_Track00_Bit: EQU 2
DISKSTATUS_DataRequest_Bit: EQU 1
DISKSTATUS_IndexPulse_Bit: EQU 1
DISKSTATUS_Busy_Bit: EQU 0
DISKSTATUS_MotorOn: EQU %10000000
DISKSTATUS_WriteProtect: EQU %01000000
DISKSTATUS_SpinUP: EQU %00100000
DISKSTATUS_Record: EQU %00100000
DISKSTATUS_RNF: EQU %00010000
DISKSTATUS_SeekError: EQU %00010000
DISKSTATUS_CRCError: EQU %00001000
DISKSTATUS_LostData: EQU %00000100
DISKSTATUS_Track00: EQU %00000100
DISKSTATUS_DataRequest: EQU %00000010
DISKSTATUS_IndexPulse: EQU %00000010
DISKSTATUS_Busy: EQU %00000001
;--------------------------------------------------------------------------------------------
; SYSTEM CALLS
SYSCALL_JSCRN: EQU &0100
SYSCALL_JSVIN: EQU &0103
SYSCALL_JHEAPROOM: EQU &0106
SYSCALL_JWKROOM: EQU &0109
SYSCALL_JMKRBIG: EQU &010c
SYSCALL_JCALLBAS: EQU &010f
SYSCALL_JSETSTRM: EQU &0112
SYSCALL_JPOMSG: EQU &0115
SYSCALL_JEXPT1NUM: EQU &0118
SYSCALL_JEXPTSTR: EQU &011b
SYSCALL_JEXPTEXPR: EQU &011e
SYSCALL_JGETINT: EQU &0121
SYSCALL_JSTKFETCH: EQU &0124
SYSCALL_JSTKSTORE: EQU &0127
SYSCALL_JSBUFFET: EQU &012a
SYSCALL_JFARLDIR: EQU &012d
SYSCALL_JFARLDDR: EQU &0130
SYSCALL_JPUT: EQU &0133
SYSCALL_JGRAB: EQU &0136
SYSCALL_JPLOT: EQU &0139
SYSCALL_JDRAW: EQU &013c
SYSCALL_JDRAWTO: EQU &013f
SYSCALL_JCIRCLE: EQU &0142
SYSCALL_JFILL: EQU &0145
SYSCALL_JBLITZ: EQU &0148
SYSCALL_JROLL: EQU &014b
SYSCALL_JCLSBL: EQU &014e
SYSCALL_JCLSLOWER: EQU &0151
SYSCALL_JPALET: EQU &0154
SYSCALL_JOPSCR: EQU &0157
SYSCALL_JMODE: EQU &015a
SYSCALL_JTDUMP: EQU &015d
SYSCALL_JGDUMP: EQU &0160
SYSCALL_JRECLAIM: EQU &0163
SYSCALL_JKBFLUSH: EQU &0166
SYSCALL_JWAITKEY: EQU &016c
SYSCALL_JBEEP: EQU &016f
SYSCALL_JSAVE: EQU &0172
SYSCALL_JLOAD: EQU &0175
SYSCALL_JLDVD: EQU &0178
SYSCALL_JEDGE2: EQU &017b
SYSCALL_JSTRS: EQU &017e
SYSCALL_JSENDA: EQU &0181
SYSCALL_JNCHAR: EQU &0184
SYSCALL_JGRCOMP: EQU &0187
SYSCALL_JGTTOK: EQU &018a
SYSCALL_JCLSCR: EQU &018d
;--------------------------------------------------------------------------------------------
; Vectors
VEC_DMPV: EQU &5ada
VEC_SETIYV: EQU &5adc
VEC_PRTOKV: EQU &5ade
VEC_MNIV: EQU &5ae0
VEC_FRAMIV: EQU &5ae2
VEC_LINIV: EQU &5ae4
VEC_COMSV: EQU &5ae6
VEC_MIPV: EQU &5ae8
VEC_MOPV: EQU &5aea
VEC_EDITV: EQU &5aec
VEC_RSTOBV: EQU &5aee
VEC_RST28V: EQU &5af0
VEC_RST30V: EQU &5af2
VEC_CMDV: EQU &5af4
VEC_EVALUW: EQU &5af6
VEC_LPRTV: EQU &5af8
VEC_MTOKV: EQU &5afa
VEC_MOUSV: EQU &5afc
VEC_KURV: EQU &5afe
;--------------------------------------------------------------------------------------------
; System variables
SVAR_SLDEV: EQU &5a06
SVAR_SELNUM: EQU &5a07
SVAR_FL6OR8: EQU &5a35
SVAR_CSA: EQU &5a7b
SVAR_CHAD: EQU &5a97
SVAR_XPTR: EQU &5aa3
SVAR_SPROMPT: EQU &5abb
SVAR_PAGCOUNT: EQU &5b83
SVAR_MODCOUNT: EQU &5b84
SVAR_DOSFLG: EQU &5bc2
SVAR_DOSCNT: EQU &5bc3
SVAR_PRAMTP: EQU &5cb4
;--------------------------------------------------------------------------------------------
; DOS
DOS_INIT: EQU 128
DOS_HGTHD: EQU 129
DOS_HLOAD: EQU 130
DOS_HVERY: EQU 131
DOS_HSAVE: EQU 132
DOS_HVAR: EQU 139
DOS_HOFLE: EQU 147
DOS_SBYT: EQU 148
DOS_HWSAD: EQU 149
DOS_HSVBK: EQU 150
DOS_CFSM: EQU 152
DOS_HGFLE: EQU 158
DOS_LBYT: EQU 159
DOS_HRSAD: EQU 160
DOS_HLDBK: EQU 161
DOS_REST: EQU 164
DOS_PCAT: EQU 165
DOS_HERAZ: EQU 166
;--------------------------------------------------------------------------------------------
; SAMDOS
SAMDOS_UIFA: EQU &4b00
SAMDOS_DIFA: EQU &4b50
UIFA_FileType: EQU 0
UIFA_FileName: EQU 1
UIFA_Flags: EQU 15
UIFA_StartPage: EQU 31
UIFA_StartOffset: EQU 32
UIFA_LengthPages: EQU 34
UIFA_LengthMod: EQU 35
; Directory Track Offsets
DT_FileStatus: EQU 0
DT_FileName: EQU 1
DT_NumUsedSectorsH: EQU 11
DT_NumUsedSectorsL: EQU 12
DT_StartTrack: EQU 13
DT_StartSector: EQU 14
DT_SectorAddressMap: EQU 15
DT_StartPageNumber: EQU 236
DT_StartPageOffset: EQU 237 ; Remember this is &8000-&bfff
DT_NumLengthPages: EQU 239
DT_NumLengthMod: EQU 240
;--------------------------------------------------------------------------------------------
; System defines
SYS_ALLOCTABLE: EQU &5100
SYS_BUFF256: EQU &4c00
;--------------------------------------------------------------------------------------------