]> git.sur5r.net Git - cc65/blob - asminc/telestrat.inc
remove TABs
[cc65] / asminc / telestrat.inc
1 ;
2 ; Oric TELEMON definition
3 ; TELEMON 2.4 & TELEMON 3.x
4 ; For TELEMON 3.x check http://orix.oric.org
5 ;
6
7 ; ---------------------------------------------------------------------------
8 ; Constants
9
10 SCREEN_XSIZE    = 40            ; Screen columns
11 SCREEN_YSIZE    = 28            ; Screen rows
12
13 FUNCTKEY        = $A5
14
15 FNAME_LEN       = 11            ; Maximum length of file-name
16
17 ; ---------------------------------------------------------------------------
18 ; I/O Identifier
19 ; Theses identifers are used for channel management
20
21
22 XKBD            = $80           ; Keyboard
23 XRSE            = $83           ; RS232 in
24 XSCR            = $88           ; Screen
25 XRSS            = $90           ; RS232 out
26
27 ; ---------------------------------------------------------------------------
28 ; Zero page
29
30 ; ---------------------------------------------------------------------------
31 ; Page 00
32 RES             := $00
33 RESB            := $02
34
35 DECDEB          := $04
36 DECFIN          := $06
37 DECCIB          := $08
38 DECTRV          := $0A
39
40 TR0             := $0C
41 TR1             := $0D
42 TR2             := $0E
43 TR3             := $0F
44 TR4             := $10
45 TR5             := $11
46 TR6             := $12
47 TR7             := $13
48
49 DEFAFF          := $14
50
51 IRQSVA          := $21           ; Used to save A when a BRK call occurs
52 IRQSVX          := $22           ; Used to save X when a BRK call occurs
53 IRQSVY          := $23           ; Used to save Y when a BRK call occurs
54 IRQSVP          := $24           ; Used to save P when a BRK call occurs
55
56 ADSCR           := $26
57
58 PTR_READ_DEST   := $2C           ; Used for XFREAD and XWRITE only in TELEMON 3.x
59
60 HRSX            := $46
61 HRSY            := $47
62
63 XLPRBI          := $48           ; Printer flag (b7)
64
65 HRSX40          := $49
66 HRSX6           := $4A
67 HRS1            := $4D
68 HRS2            := $4F
69 HRS3            := $51
70 HRS4            := $53
71 HRS5            := $55
72
73 HRSFB           := $57
74
75 ; RS232T
76 ; b0-b3 : speed 
77 ;         1111 => 19200 bps  (please note that telestrat can't handle this speed without stopping all IRQ except ACIA's one)
78 ;         1100 =>  9600 bps  (default from TELEMON)
79 ;         1110 =>  4800 bps 
80 ;         1010 =>  2400 bps 
81 ;         1000 =>  1200 bps 
82 ;         0111 =>   600 bps 
83 ;         0110 =>   300 bps 
84 ;         0101 =>   150 bps 
85 ;         0010 =>    75 bps 
86
87 ; b4    : 0 external clock, 1 internal clock
88 ; b6-b5 : 00 8 bits
89 ;         01 7 bits
90 ;         10 6 bits
91 ;         11 5 bits
92 ; b7    : 0  a stop  
93
94 RS232T          := $59
95
96 ; RS232C 
97 ; b0-b3 : 0
98 ; b4    : 1 if echo
99 ; b5    : 1 if parity
100 ; b7-b6 : 00 in/out parity odd
101 ;       : 01 on/out parity even
102 ;       : 10 parity sent, answer not tested
103 ;       : 11 SPACE SENT, reception not tested
104
105 RS232C          := $5A
106
107 VARLNG          := $8C
108 VARAPL          := $D0
109
110 ; ---------------------------------------------------------------------------
111 ; Low memory
112 IRQVec          := $02FB        ; "fast" interrupt vector
113
114 ; ---------------------------------------------------------------------------
115 ; I/O locations
116
117 ; 6522
118 .struct VIA                     ; Versatile Interface Adapter
119         .res    $0300
120 PRB     .byte                   ; Port Register B
121 PRA     .byte                   ; Port Register A
122 DDRB    .byte                   ; Data Direction Register B
123 DDRA    .byte                   ; Data Direction Register A
124 T1      .word                   ; Timer 1
125 T1L     .word                   ; Timer 1 Latch
126 T2      .word                   ; Timer 2
127 SR      .byte                   ; Shift Register
128 ACR     .byte                   ; Auxiliary Control Register
129 PCR     .byte                   ; Peripheral Control Register
130 IFR     .byte                   ; Interrupt Flags Register
131 IER     .byte                   ; Interrupt Enable Register
132 PRA2    .byte                   ; Port Register A without handshaking
133 .endstruct
134
135
136 .struct VIA2                    ; Versatile Interface Adapter
137         .res    $0320
138 PRB     .byte                   ; Port Register B
139 PRA     .byte                   ; Port Register A
140 DDRB    .byte                   ; Data Direction Register B
141 DDRA    .byte                   ; Data Direction Register A
142 T1      .word                   ; Timer 1
143 T1L     .word                   ; Timer 1 Latch
144 T2      .word                   ; Timer 2
145 SR      .byte                   ; Shift Register
146 ACR     .byte                   ; Auxiliary Control Register
147 PCR     .byte                   ; Peripheral Control Register
148 IFR     .byte                   ; Interrupt Flags Register
149 IER     .byte                   ; Interrupt Enable Register
150 PRA2    .byte                   ; Port Register A without handshaking
151 .endstruct
152
153 ; 6551
154 .struct ACIA                    ; Asynchronous Communications Interface Adapter
155         .res    $031C
156 DATA    .byte
157 STATUS  .byte
158 CMD     .byte                   ; Command register
159 CTRL    .byte                   ; Control register
160 .endstruct
161
162 SCREEN          := $BB80
163
164
165 ; ---------------------------------------------------------------------------
166 ; ROM entries
167
168 ; TELEMON primitives (2.4 & 3.x)
169
170 ; all values are used to call bank 7 of telestrat cardridge. It works with 'brk value' 
171 XOP0             = $00          ; Open device on channel 0
172 XOP1             = $01          ; Open device on channel 1
173 XOP2             = $02          ; Open device on channel 2
174 XOP3             = $03          ; Open device on channel 3
175
176 XCL0             = $04          ; Close channel 0
177 XCL1             = $05          ; Close channel 1
178 XCL2             = $06          ; Close channel 2
179 XCL3             = $07          ; Close channel 3
180
181 XRD0             = $08
182 XRDW0            = $0C
183
184 XWR0             = $10          ; Write a char in channel 0
185 XWR1             = $11          ; Write a char in channel 1
186 XWR2             = $12          ; Write a char in channel 2
187 XWR3             = $13          ; Write a char in channel 3
188
189 XWSTR0           = $14          ; Write a string in text mode channel 0
190 XWSTR1           = $15          ; Write a string in text mode channel 1
191 XWSTR2           = $16          ; Write a string in text mode channel 2
192 XWSTR3           = $17          ; Write a string in text mode channel 3
193
194 XDECAL           = $18
195
196 XTEXT            = $19
197 XHIRES           = $1A
198 XFILLM           = $1C
199 XMINMA           = $1F
200 XVARS            = $24          ; Only in TELEMON 3.x, in TELEMON 2.4, it's XNOMFI ($24)
201 XCRLF            = $25          ; Jump a line and return to the beginning of the line
202 XFREAD           = $27          ; Only in TELEMON 3.x (bank 7 of Orix)
203 XBINDX           = $28          ; Convert a number into hex and displays on channel 0
204 XDECIM           = $29
205 XHEXA            = $2A          ; Convert a number into hex
206 XSCELG           = $2F          ; Search a line in editor mode
207 XOPEN            = $30          ; Only in TELEMON 3.x (bank 7 of Orix)
208 XECRPR           = $33          ; Displays prompt
209 XCOSCR           = $34          ; Switch off cursor
210 XCSSCR           = $35          ; Switch on cursor
211 XSCRSE           = $36
212 XSCRNE           = $39          ; Load charset from rom to ram
213 XCLOSE           = $3A          ; Only in TELEMON 3.x close file (bank 7 of Orix)
214 XFWRITE          = $3B          ; Only in TELEMON 3.x write file (bank 7 of Orix)
215 XWRCLK           = $3E          ; Update clock
216 XSONPS           = $40          ; Send data to PSG register (14 values)
217 XOUPS            = $42          ; Send Oups sound into PSG
218 XPLAY            = $43          ; Play a sound
219 XSOUND           = $44 
220 XMUSIC           = $45 
221 XZAP             = $46          ; Send Zap sound to PSG
222 XSHOOT           = $47
223 XMKDIR           = $4B          ; Create a folder. Only available in TELEMON 3.x (bank 7 of Orix)
224 XRM              = $4D          ; Remove a folder or a file. Only available in TELEMON 3.x (bank 7 of Orix)
225 XGOKBD           = $52 
226 XMALLOC          = $5B          ; Only in TELEMON 3.x (bank 7 of Orix)
227 XFREE            = $62          ; Only in TELEMON 3.x (bank 7 of Orix)
228 XSOUT            = $67          ; Send accumulator value (A) to RS232, available in TELEMON 2.4 & 3.x : if RS232 buffer is full, the Oric Telestrat freezes
229 XHRSSE           = $8C          ; Set hires position cursor
230 XDRAWA           = $8D          ; Draw a line absolute
231 XDRAWR           = $8E          ; Draw a line (relative)
232 XCIRCL           = $8F          ; Draw a circle
233 XCURSE           = $90          ; Plot a pixel 
234 XCURMO           = $91          ; Move to x,y pos in Hires
235 XPAPER           = $92
236 XINK             = $93
237 XBOX             = $94          ; Draw a box
238 XABOX            = $95
239 XFILL            = $96
240 XCHAR            = $97          ; Display a char on the screen in Hires
241 XSCHAR           = $98          ; Draw a string in hires
242 XEXPLO           = $9C          ; Send Explode sound to PSG
243 XPING            = $9D          ; Send Ping sound to PSG
244
245 ; ---------------------------------------------------------------------------
246 ; ROM entries variables
247
248 PWD_PTR          = $00
249
250 ; ---------------------------------------------------------------------------
251
252 BUFTRV          := $100         
253
254
255 ; ---------------------------------------------------------------------------
256 ; Page $200
257 BNKST            := $200        ; Used to store signature of 8 bank (length : 8 bytes)
258 TABDRV           := $208
259 FLGTEL           := $20D
260 KOROM            := $20E        ; Used to compute the size of all rom bank. The result is store here. The value is in KB
261 KORAM            := $20F        ; Used to compute the size of all ram bank. The result is store here. The value is in KB
262 TIMED            := $210
263 TIMES            := $211
264 TIMEM            := $212
265 ADSCRL           := $218
266 ADSCRH           := $21C
267 SCRX             := $220
268 SCRY             := $224
269 KBDVRL           := $273
270 FLGKBD           := $275
271 KBDFCT           := $276
272 KBDSHT           := $278
273 KBDCTC           := $27E
274 LPRFX            := $288
275 LPRFY            := $289
276 HRSPAT           := $2AA        ; Hires pattern : it's used to draw pattern for a line or a circle
277 ADIOB            := $2BE
278 FLGRST           := $2EE
279 CSRND            := $2EF
280 VNMI             := $2F4
281 IRQVECTOR        := $2FA
282 VAPLIC           := $2FD
283
284 ; ---------------------------------------------------------------------------
285 ; Page $400
286 EXBNK            := $40C
287 VEXBNK           := $414
288 BNKCIB           := $417
289
290 ; ---------------------------------------------------------------------------
291 ; Page $500
292
293 DRIVE            := $500
294 ERRNB            := $512
295 SAVES            := $513
296 BUFNOM           := $517
297 VSALO0           := $528
298 VSALO1           := $529
299 FTYPE            := $52C        ; File type
300 DESALO           := $52D
301 FISALO           := $52F
302 EXSALO           := $531
303 EXTDEF           := $55D        ; Default extension. At the start of telemon, it's set to ".COM"
304 BUFEDT           := $590        ; Buffer edition 
305
306 MAX_BUFEDT_LENGTH=110
307
308 ; ---------------------------------------------------------------------------
309 ; Hardware
310 CH376_DATA       := $340
311 CH376_COMMAND    := $341
312
313 ; ---------------------------------------------------------------------------
314 ; Stratsed vectors
315 ; Stratsed is the main OS for Telestrat 
316 XMERGE           := $FF0E
317 XFST             := $FF11
318 XSPUT            := $FF14
319 XSTAKE           := $FF17
320 XTAKE            := $FF20
321 XOPENS           := $FF1A       ; XOPEN from Stratsed
322 XCLOSES          := $FF1D       ; XCLOSE from Stratsed
323 XPUT             := $FF23
324 XREWIN           := $FF29
325 XJUMP            := $FF2C
326 XLGBUF           := $FF2F
327 XERVEC           := $FF32
328 XESAVE           := $FF35
329 XCOPY            := $FF38
330 XDNAME           := $FF3B
331 XSTATU           := $FF3E
332 XUPDAT           := $FF41
333 XFORMA           := $FF44
334 XDELBK           := $FF4A
335 XDELN            := $FF4D
336 XPROT            := $FF50
337 XUNPRO           := $FF53
338 XDIRN            := $FF56
339 XBKP             := $FF59
340 XINITI           := $FF5C
341 XERREU           := $FF5F
342 XLOAD            := $FF62
343 XDEFSA           := $FF65
344 XDEFLO           := $FF68
345 XSAVE            := $FF6B
346 XNOMDE           := $FF6E
347 XCREAY           := $FF71
348 XDETSE           := $FF74
349 XLIBSE           := $FF77
350 XTRVCA           := $FF7A
351 XTRVNM           := $FF7D
352 XTRVNX           := $FF80
353 XBUCA            := $FF86
354 XVBUF1           := $FF89
355 XSVSEC           := $FF8C
356 XSAY             := $FF8F
357 XSBUF1           := $FF92
358 XSBUF2           := $FF95
359 XSBUF3           := $FF98
360 XSCAT            := $FF9B
361 XPRSEC           := $FFA1
362 XPBUF1           := $FFA4
363 XPMAP            := $FFA7
364 XRWTS            := $FFAA
365
366 ; ---------------------------------------------------------------------------
367 ; MACRO 
368
369 .macro  BRK_TELEMON   value
370         .byte $00,value
371 .endmacro