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 ; ---------------------------------------------------------------------------
52 PTR_READ_DEST := $2C ; Used for XFREAD and XWRITE only in TELEMON 3.x
67 ; 1111 => 19200 bps (please note that telestrat can't handle this speed without stopping all IRQ except ACIA's one)
68 ; 1100 => 9600 bps (default from TELEMON)
77 ; b4 : 0 external clock, 1 internal clock
90 ; b7-b6 : 00 in/out parity odd
91 ; : 01 on/out parity even
92 ; : 10 parity sent, answer not tested
93 ; : 11 SPACE SENT, reception not tested
100 ; ---------------------------------------------------------------------------
102 IRQVec := $02FB ; "fast" interrupt vector
104 ; ---------------------------------------------------------------------------
108 .struct VIA ; Versatile Interface Adapter
110 PRB .byte ; Port Register B
111 PRA .byte ; Port Register A
112 DDRB .byte ; Data Direction Register B
113 DDRA .byte ; Data Direction Register A
115 T1L .word ; Timer 1 Latch
117 SR .byte ; Shift Register
118 ACR .byte ; Auxiliary Control Register
119 PCR .byte ; Peripheral Control Register
120 IFR .byte ; Interrupt Flags Register
121 IER .byte ; Interrupt Enable Register
122 PRA2 .byte ; Port Register A without handshaking
126 .struct VIA2 ; Versatile Interface Adapter
128 PRB .byte ; Port Register B
129 PRA .byte ; Port Register A
130 DDRB .byte ; Data Direction Register B
131 DDRA .byte ; Data Direction Register A
133 T1L .word ; Timer 1 Latch
135 SR .byte ; Shift Register
136 ACR .byte ; Auxiliary Control Register
137 PCR .byte ; Peripheral Control Register
138 IFR .byte ; Interrupt Flags Register
139 IER .byte ; Interrupt Enable Register
140 PRA2 .byte ; Port Register A without handshaking
144 .struct ACIA ; Asynchronous Communications Interface Adapter
148 CMD .byte ; Command register
149 CTRL .byte ; Control register
155 ; ---------------------------------------------------------------------------
158 ; TELEMON primitives (2.4 & 3.x)
160 ; all values are used to call bank 7 of telestrat cardridge. It works with 'brk value'
161 XOP0 = $00 ; Open device on channel 0
162 XOP1 = $01 ; Open device on channel 1
163 XOP2 = $02 ; Open device on channel 2
164 XOP3 = $03 ; Open device on channel 3
166 XCL0 = $04 ; Close channel 0
167 XCL1 = $05 ; Close channel 1
168 XCL2 = $06 ; Close channel 2
169 XCL3 = $07 ; Close channel 3
174 XWR0 = $10 ; Write a char in channel 0
175 XWR1 = $11 ; Write a char in channel 1
176 XWR2 = $12 ; Write a char in channel 2
177 XWR3 = $13 ; Write a char in channel 3
179 XWSTR0 = $14 ; Write a string in text mode channel 0
180 XWSTR1 = $15 ; Write a string in text mode channel 1
181 XWSTR2 = $16 ; Write a string in text mode channel 2
182 XWSTR3 = $17 ; Write a string in text mode channel 3
190 XVARS = $24 ; Only in TELEMON 3.x, in TELEMON 2.4, it's XNOMFI ($24)
191 XCRLF = $25 ; Jump a line and return to the beginning of the line
192 XFREAD = $27 ; Only in TELEMON 3.x (bank 7 of Orix)
193 XHEXA = $2A ; Convert a number into hex
194 XBINDX = $28 ; Convert a number into hex and displays on channel 0
195 XOPEN = $30 ; Only in TELEMON 3.x (bank 7 of Orix)
196 XCOSCR = $34 ; Switch off cursor
197 XCSSCR = $35 ; Switch on cursor
199 XCLOSE = $3A ; Only in TELEMON 3.x close file (bank 7 of Orix)
200 XFWRITE = $3B ; Only in TELEMON 3.x write file (bank 7 of Orix)
201 XSONPS = $40 ; Send data to PSG register (14 values)
202 XOUPS = $42 ; Send Oups sound into PSG
203 XPLAY = $43 ; Play a sound
206 XZAP = $46 ; Send Zap sound to PSG
208 XMKDIR = $4B ; Create a folder. Only available in TELEMON 3.x (bank 7 of Orix)
209 XRM = $4D ; Remove a folder or a file. Only available in TELEMON 3.x (bank 7 of Orix)
211 XMALLOC = $5B ; Only in TELEMON 3.x (bank 7 of Orix)
212 XFREE = $62 ; Only in TELEMON 3.x (bank 7 of Orix)
213 XSOUT = $67 ; Send accumulator value (A) to RS232, available in TELEMON 2.4 & 3.x : if RS232 buffer is full, the Oric Telestrat freezes
214 XHRSSE = $8C ; Set hires position cursor
215 XDRAWA = $8D ; Draw a line
216 XDRAWR = $8E ; Draw a line (relative)
217 XCIRCL = $8F ; Draw a circle
218 XCURSE = $90 ; Plot a pixel
219 XCURMO = $91 ; Move to x,y pos in Hires
222 XBOX = $94 ; Draw a box
225 XCHAR = $97 ; Display a char on the screen in Hires
226 XSCHAR = $98 ; Draw a string in hires
227 XEXPLO = $9C ; Send Explode sound to PSG
228 XPING = $9D ; Send Ping sound to PSG
230 ; ---------------------------------------------------------------------------
231 ; ROM entries variables
235 ; ---------------------------------------------------------------------------
240 ; ---------------------------------------------------------------------------
246 HRSPAT := $2AA ; Hires pattern : it's used to draw pattern for a line or a circle
250 ; ---------------------------------------------------------------------------
256 MAX_BUFEDT_LENGTH=110
258 ; ---------------------------------------------------------------------------
261 CH376_COMMAND := $341
263 ; ---------------------------------------------------------------------------
266 .macro BRK_TELEMON value