2 ; Oric TELEMON definition
3 ; TELEMON 2.4 & TELEMON 3.x
4 ; For TELEMON 3.x check http://orix.oric.org
7 ; ---------------------------------------------------------------------------
10 SCREEN_XSIZE = 40 ; Screen columns
11 SCREEN_YSIZE = 28 ; Screen rows
15 FNAME_LEN = 11 ; Maximum length of file-name
17 ; ---------------------------------------------------------------------------
19 ; Theses identifers are used for channel management
25 XRSS = $90 ; RS232 out
27 ; ---------------------------------------------------------------------------
30 ; ---------------------------------------------------------------------------
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
58 PTR_READ_DEST := $2C ; Used for XFREAD and XWRITE only in TELEMON 3.x
63 XLPRBI := $48 ; Printer flag (b7)
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)
87 ; b4 : 0 external clock, 1 internal clock
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
110 ; ---------------------------------------------------------------------------
112 IRQVec := $02FB ; "fast" interrupt vector
114 ; ---------------------------------------------------------------------------
118 .struct VIA ; Versatile Interface Adapter
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
125 T1L .word ; Timer 1 Latch
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
136 .struct VIA2 ; Versatile Interface Adapter
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
143 T1L .word ; Timer 1 Latch
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
154 .struct ACIA ; Asynchronous Communications Interface Adapter
158 CMD .byte ; Command register
159 CTRL .byte ; Control register
165 ; ---------------------------------------------------------------------------
168 ; TELEMON primitives (2.4 & 3.x)
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
176 XCL0 = $04 ; Close channel 0
177 XCL1 = $05 ; Close channel 1
178 XCL2 = $06 ; Close channel 2
179 XCL3 = $07 ; Close channel 3
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
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
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
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
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
221 XZAP = $46 ; Send Zap sound to PSG
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)
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
237 XBOX = $94 ; Draw a box
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
245 ; ---------------------------------------------------------------------------
246 ; ROM entries variables
250 ; ---------------------------------------------------------------------------
255 ; ---------------------------------------------------------------------------
257 BNKST := $200 ; Used to store signature of 8 bank (length : 8 bytes)
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
276 HRSPAT := $2AA ; Hires pattern : it's used to draw pattern for a line or a circle
284 ; ---------------------------------------------------------------------------
290 ; ---------------------------------------------------------------------------
299 FTYPE := $52C ; File type
303 EXTDEF := $55D ; Default extension. At the start of telemon, it's set to ".COM"
304 BUFEDT := $590 ; Buffer edition
306 MAX_BUFEDT_LENGTH=110
308 ; ---------------------------------------------------------------------------
311 CH376_COMMAND := $341
313 ; ---------------------------------------------------------------------------
315 ; Stratsed is the main OS for Telestrat
321 XOPENS := $FF1A ; XOPEN from Stratsed
322 XCLOSES := $FF1D ; XCLOSE from Stratsed
366 ; ---------------------------------------------------------------------------
369 .macro BRK_TELEMON value