comparison CoCoOS9/defs/systype.l2 @ 31:bd2b07db8917 cocoos9lv2v3

CoCoOS9 version
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 14 Jul 2018 15:16:13 +0900
parents
children
comparison
equal deleted inserted replaced
30:7b1b25ff010a 31:bd2b07db8917
1 nam SysType.l2
2 ttl CoCo 3 OS-9 Level 2 System Type Definitions
3
4 *****************
5 * Edition History
6 *
7 * Date Changes Made by
8 * -------- ------------------------------------------------------------ ---
9 * 98/10/13 Added defs by Bruce Isted from his Eliminator archive BGP
10 * 98/10/31 Merged cc3global.defs into this file BGP
11
12 **********************
13 * CPU Type Definitions
14 *
15 org 1
16 Color rmb 1
17 COLOR3 rmb 1
18 CPUType set COLOR3
19
20 ******************************
21 * Clock Speed Type Definitions
22 *
23 OneMHz equ 1
24 TwoMHz equ 2
25 CPUSpeed set OneMHz
26
27 **********************************
28 * Power Line Frequency Definitions
29 *
30 Hz50 equ 1 Assemble clock for 50 hz power
31 Hz60 equ 2 Assemble clock for 60 hz power
32 PwrLnFrq set Hz60 Set to Appropriate freq
33
34 ******************
35 * ACIA type set up
36 *
37 org 1
38 ACIA6850 rmb 1 MC6850 acia.
39 ACIA6551 rmb 1 SY6551 acia.
40 ACIA2661 rmb 1 SC2661 acia.
41 ACIATYPE set ACIA6551
42
43 ****************************************
44 * Dynamic Address Translator Definitions
45 *
46 DAT.BlCt equ 8 D.A.T. blocks/address space
47 DAT.BlSz equ (256/DAT.BlCt)*256 D.A.T. block size
48 DAT.ImSz equ DAT.BlCt*2 D.A.T. Image size
49 DAT.Addr equ -(DAT.BlSz/256) D.A.T. MSB Address bits
50 DAT.Task equ $FF91 Task Register address
51 DAT.TkCt equ 32 Number of DAT Tasks
52 DAT.Regs equ $FFA0 DAT Block Registers base address
53 DAT.Free equ $333E Free Block Number
54 DAT.BlMx equ $3F Maximum Block number
55 DAT.BMSz equ $40 Memory Block Map size
56 DAT.WrPr equ 0 no write protect
57 DAT.WrEn equ 0 no write enable
58 SysTask equ 0 Coco System Task number
59 IOBlock equ $3F
60 ROMBlock equ $3F
61 IOAddr equ $7F
62 ROMCount equ 1 number of blocks of ROM (High RAM Block)
63 RAMCount equ 1 initial blocks of RAM
64 MoveBlks equ DAT.BlCt-ROMCount-2 Block numbers used for copies
65 BlockTyp equ 1 chk only first bytes of RAM block
66 ByteType equ 2 chk entire block of RAM
67 Limited equ 1 chk only upper memory for ROM modules
68 UnLimitd equ 2 chk all NotRAM for modules
69 * NOTE: this check assumes any NotRAM with a module will
70 * always start with $87CD in first two bytes of block
71 RAMCheck equ BlockTyp chk only beg bytes of block
72 ROMCheck equ Limited chk only upper few blocks for ROM
73 LastRAM equ IOBlock maximum RAM block number
74
75 ***************************
76 * Color Computer 3 Specific
77 *
78 CPUType set Color3
79 CPUSpeed set TwoMHz
80 MappedIO equ True (Actually False but it works better this way)
81
82 ********************
83 * Hardware addresses
84 *
85 GIMERegs equ $FF00 Base address of GIME registers
86 IrqEnR equ $FF92 GIME IRQ enable/status register
87 BordReg equ $FF9A Border color register
88 PalAdr equ $FFB0 Palette registers
89 PIA0Base equ $FF00
90 PIA1Base equ $FF20
91
92 HW.Page set $07 Device descriptor hardware page
93
94 ******************
95 * Device addresses
96 *
97 A.AciaP set $FF68 Aciapak Address
98 A.ModP set $FF6C ModPak Address
99 DPort set $FF40 Disk controller base address
100 MPI.Slct set $FF7F Multi-Pak slot select
101 MPI.Slot set $03 Multi-Pak default slot
102 *** Eliminator addresses
103 WD05Port set $FF70
104 A.DACIA1 set $FF60
105 A.DACIA2 set A.DACIA1+4
106 PPIABase set WD05Port+6
107 RTC.Base set WD05Port+2
108
109 *
110 * VDG Devices
111 *
112 A.TermV set $FFC0 VDG Term
113 A.V1 set $FFC1 Possible additional VDG Devices
114 A.V2 set $FFC2
115 A.V3 set $FFC3
116 A.V4 set $FFC4
117 A.V5 set $FFC5
118 A.V6 set $FFC6
119 A.V7 set $FFC7
120 *
121 * Window Devices
122 *
123 org $FF9F
124 A.W rmb 1 $FF9F Generic Window Descriptor
125 A.TermW rmb 1 $FFA0 Windowing Term
126 A.W1 rmb 1 $FFA1
127 A.W2 rmb 1 $FFA2
128 A.W3 rmb 1 $FFA3
129 A.W4 rmb 1 $FFA4
130 A.W5 rmb 1 $FFA5
131 A.W6 rmb 1 $FFA6
132 A.W7 rmb 1 $FFA7
133 A.W8 rmb 1 $FFA8
134 A.W9 rmb 1 $FFA9
135 A.W10 rmb 1 $FFAA
136 A.W11 rmb 1 $FFAB
137 A.W12 rmb 1 $FFAC
138 A.W13 rmb 1 $FFAD
139 A.W14 rmb 1 $FFAE
140 A.W15 rmb 1 $FFAF
141
142 ****************************************
143 * Special character Bit position equates
144 *
145 SHIFTBIT equ %00000001
146 CNTRLBIT equ %00000010
147 ALTERBIT equ %00000100
148 UPBIT equ %00001000
149 DOWNBIT equ %00010000
150 LEFTBIT equ %00100000
151 RIGHTBIT equ %01000000
152 SPACEBIT equ %10000000
153
154 **********************************
155 * Pointer Device Packet Definition
156 *
157 org 0
158 Pt.Valid rmb 1 Is returned info valid (0=no/1=yes)
159 Pt.Actv rmb 1 Active Side 0=off/1=Right/2=left
160 Pt.ToTm rmb 1 Time out Initial value
161 rmb 2 reserved
162 Pt.TTTo rmb 1 Time Till Timeout
163 Pt.TSSt rmb 2 Time Since Start Counter
164 Pt.CBSA rmb 1 Current Button State Button A
165 Pt.CBSB rmb 1 Current Button State Button B
166 Pt.CCtA rmb 1 Click Count Button A
167 Pt.CCtB rmb 1 Click Count Button B
168 Pt.TTSA rmb 1 Time This State Counter Button A
169 Pt.TTSB rmb 1 Time This State Counter Button B
170 Pt.TLSA rmb 1 Time Last State Counter Button A
171 Pt.TLSB rmb 1 Time Last State Counter Button B
172 rmb 2 Reserved
173 Pt.BDX rmb 2 Button down X value EXPERIMENTAL
174 Pt.BDY rmb 2 Button down Y value
175 Pt.Stat rmb 1 Window Pointer type location
176 Pt.Res rmb 1 Resolution (0..640 by: 0=ten/1=one)
177 Pt.AcX rmb 2 Actual X Value
178 Pt.AcY rmb 2 Actual Y Value
179 Pt.WRX rmb 2 Window Relative X
180 Pt.WRY rmb 2 Window Relative Y
181 Pt.Siz equ . Packet Size 32 bytes
182
183 **************************
184 * window regions for mouse
185 *
186 WR.Cntnt equ 0 content region
187 WR.Cntrl equ 1 control region
188 WR.OfWin equ 2 off window
189
190 *************************************
191 * Standard system get/put buffer defs
192 *
193 *
194 * system group numbers
195 *
196 org 200
197 Grp.Fnt rmb 1 font group
198 Grp.Clip rmb 1 clipboard group
199 Grp.Ptr rmb 1 pointer group
200 Grp.Pat2 rmb 1 pattern group 2 color
201 Grp.Pat4 rmb 1 pattern group 4 color
202 Grp.Pat6 rmb 1 pattern group 16 color
203 *
204 * font buffer numbers
205 *
206 org 1
207 Fnt.S8x8 rmb 1 standard 8x8 font
208 Fnt.S6x8 rmb 1 standard 6x8 font
209 Fnt.G8x8 rmb 1 standard graphics 8x8 font
210 *
211 * pattern buffer numbers
212 *
213 org 1
214 Pat.Dot rmb 1
215 Pat.Vrt rmb 1
216 Pat.Hrz rmb 1
217 Pat.XHtc rmb 1
218 Pat.LSnt rmb 1
219 Pat.RSnt rmb 1
220 Pat.SDot rmb 1
221 Pat.BDot rmb 1
222 *
223 * pointer buffer numbers
224 *
225 org 1
226 Ptr.Arr rmb 1 Arrow pointer
227 Ptr.Pen rmb 1 Pencil pointer
228 Ptr.LCH rmb 1 Large cross hair pointer
229 Ptr.Slp rmb 1 Wait timer pointer
230 Ptr.Ill rmb 1 Illegal action pointer
231 Ptr.Txt rmb 1 Text pointer
232 Ptr.SCH rmb 1 Small cross hair pointer
233
234 ********************************
235 * Window/Menu Bar Data Structure
236 *
237 * To be used in SS.WnSet SETSTAT to set up a Framed Window
238 * for use in the high level windowing package.
239 *
240 NUMMENS equ 10 maximum number of menus on menu bar
241 NUMITMS equ 20 maximum number of items in a menu
242 MXTTLEN equ 15 max chars for menu and item names
243 WINSYNC equ $C0C0 synch bytes for window validation
244 *
245 * Menu Item Descriptor : (MN.ITEMS)
246 * one required for each item within the menu
247 *
248 org 0
249 MI.TTL rmb MXTTLEN item name
250 MI.ENBL rmb 1 enable flag
251 MI.RES rmb 5 reserved bytes
252 MI.SIZ equ . size of menu item descriptor
253 *
254 * Menu Descriptor :
255 * one for each menu on the manu bar
256 * each is pointed to by MB.MPTR below
257 *
258 org 0
259 MN.TTL rmb MXTTLEN menu title
260 MN.ID rmb 1 menu id number (1-255)
261 MN.XSIZ rmb 1 horiz. size of desired pull down
262 MN.NITS rmb 1 number of items in menu
263 MN.ENBL rmb 1 enable flag
264 MN.RES rmb 2 reserved bytes
265 MN.ITEMS rmb 2 pointer to array of menu items
266 MN.SIZ equ . size of menu descriptor
267 *
268 * Window Descriptor:
269 * one required for each application in a framed window
270 *
271 org 0
272 WN.TTL rmb 20 title of window for title bar
273 WN.NMNS rmb 1 number of menus in menu bar
274 WN.XMIN rmb 1 minimal horiz. size for application to run
275 WN.YMIN rmb 1 minimal vert. size for application to run
276 WN.SYNC rmb 2 synch bytes ($C0C0)
277 WN.RES rmb 7 reserved bytes
278 WN.BAR rmb 2 pointer to arry of menu descriptors
279 WN.SIZ equ . size of window/menu bar descriptor
280
281 *************************
282 * Window Type Definitions
283 *
284 * To be used in setting up the border of the window in
285 * the SS.WnSel SETSTAT
286 *
287 org 0
288 WT.NBox rmb 1 No Box
289 WT.FWin rmb 1 Framed Window
290 WT.FSWin rmb 1 Framed Window w/Scroll Bars
291 WT.SBox rmb 1 Shadowed Box
292 WT.DBox rmb 1 Double Box
293 WT.PBox rmb 1 Plain Box
294
295 *************************************
296 * Pre-Defined Menu IDs for the system
297 *
298 org 1
299 MId.Mov rmb 1 move box
300 MId.Cls rmb 1 close box
301 MId.Grw rmb 1 grow box
302 MId.SUp rmb 1 scroll up
303 MId.SDn rmb 1 scroll down
304 MId.SRt rmb 1 scroll right
305 MId.SLt rmb 1 scroll left
306 MId.Chr rmb 1 character was depressed
307 org 20
308 MId.Tdy rmb 1 Tandy menu
309 MId.Fil rmb 1 Files Menu
310 MId.Edt rmb 1 Edit Menu
311 MId.Sty rmb 1 Styles menu
312 MId.Fnt rmb 1 Font menu
313
314
315 ******************************************************************************
316 ******************************************************************************
317 ** **
318 ** OS-9 Windowing system Global data definitions **
319 ** **
320 ******************************************************************************
321 ******************************************************************************
322 ** **
323 ** System memory block 0 layout: **
324 ** **
325 ** $0000-$0001 : FHL/Isted WD 1002-05 - interface base address **
326 ** $0002 : FHL/Isted WD 1002-05 - boot device physical drive # **
327 ** $0008 : Bruce Isted Serial mouse - button counter & rx count **
328 ** $0009-$000B : Bruce Isted Serial mouse - RX buffer **
329 ** $000C-$000D : Bruce Isted Serial mouse - Current X position **
330 ** $000E-$000F : Bruce Isted Serial mouse - Current Y position **
331 ** $0010-$001F : unused (User definable) **
332 ** $0020-$00FF : system direct page & some IRQ vectors **
333 ** $0100-$011F : Task usage table **
334 ** $0120-$01FF : Virtual DAT tasks (pointed to by <D.TskIPt) **
335 ** $0200-$02FF : memory block usage map ($80=Not RAM,$01=in use,$02=module) **
336 ** $0300-$03FF : system's system call dispatch table **
337 ** $0400-$04FF : user's sysem call dispatch table **
338 ** $0500-$05FF : process descriptor pointer table **
339 ** $0600-$07FF : System task (Task 0, ID 1) process descriptor **
340 ** $0800-$08FF : System's stack space (initial ptr is $0900) **
341 ** $0900-$09FF : SMAP table ($01=in used, $80=NOT RAM) **
342 ** $0A00-$0FFF : module directory DAT Images (8 bytes each) **
343 ** $1000-$10FF : System Global memory (pointed to by D.CCMem) **
344 ** $1100-$11FF : GRFDRV global memory (DP=$11 in GRFDRV) **
345 ** $1200-$1247 : shared buffer between Grf/WindInt & GRFDRV (GP buffers) **
346 ** $1248-$127F : ???? **
347 ** $1280-$1A7F : the window tables (32 of $40 bytes each) **
348 ** $1A80-$1C7F : the screen tables (16 of $20 bytes each) **
349 ** $1C80-$2000 : the CC3 global mem stack (for windowing) **
350 ** **
351 ******************************************************************************
352 ******************************************************************************
353
354 * User settable values for CC3IO/TC9IO/GrfInt/WindInt & GrfDrv
355 MaxLines equ 25 Max. Y coord text value
356 Meg set false "true" if 1 or 2 meg machine
357
358 COMP equ 0 composite monitor
359 RGB equ 1 RGB Analog monitor
360 MONO equ 2 monochrome monitor
361
362 Monitor set RGB
363
364 * Global definitions
365 KeyMse equ %00000001 keyboard mouse enabled
366 NumLck equ %00000010 Numlock enabled (TC-9 use only)
367 CapsLck equ %00000100 Capslock enabled
368 MaxRows equ 640 maximum X co-ordinate allowed on mouse
369 ifeq MaxLines-25
370 MaxLine equ 198 maximum Y co-ordinate allowed on mouse
371 else
372 MaxLine equ 191 maximum Y co-ordinate allowed on mouse
373 endc
374
375 *****************************************************************************
376 * Static memory area for each window (CC3IO/TC9IO)
377 * Should set up a write buffer (using parm area?) between SCF, CC3IO & Grfdrv
378 * so we can 'burst mode' text output (copy up to 48 chars to Grfdrv's parm
379 * area, and have grfdrv loop through & write all 48 chars to screen in 1 loop
380 * May have to have smaller limit for text to gfx screens, as it will run much
381 * slower, unless GrfDrv is made Partially/Fully Re-Entrant
382 *
383 * STRONG CAUTION: scfdefs MUST be included first before this file if
384 * V.SCF is to be resolved properly in pass 1!!
385 org V.SCF
386
387 WinType rmb 1 window type (0=Windint/GrfInt,2=VDGInt) $1D
388 InfVld rmb 1 Rest of info here valid? (0=NO, >0 = YES) $1E
389 DevPar rmb 2 high bit=window device $1F
390 ULCase rmb 1 special key flags (Capslck & keyboard mouse) $21
391 KySnsFlg rmb 1 flag for key sense setstat $22
392 ScrChg rmb 1 screen change flag $23
393 SS.SigID rmb 1 data ready process ID $24
394 SS.SigSg rmb 1 data ready signal code $25
395 MS.SigID rmb 1 mouse signal process ID $26
396 MS.SigSg rmb 1 mouse signal signal code $27
397 MS.Smpl rmb 1 mouse sample rate $28
398 MS.Time rmb 1 mouse timeout value $29
399 MS.Side rmb 1 MSB of mouse auto-follow flag $2A
400 PrtSide rmb 1 auto follow mouse flag $2B
401 ParmCnt rmb 1 parameter count $2C
402 ParmVct rmb 2 parameter vector $2D
403 PrmStrt rmb 2 pointer to params start $2F
404 NxtPrm rmb 2 pointer to next param storage $31
405 EndPtr rmb 1 last character read offset $33
406 InpPtr rmb 1 next character read offset $34
407 WinNum rmb 1 window table entry # $35
408 DWNum rmb 1 dwnum from descriptor $36
409 CallCde rmb 1 internal comod call code # $37
410 CC3Parm rmb 128-. global parameter area
411 ReadBuf rmb 256-. read input buffer (keyboard)
412 CC3DSiz equ .
413
414 *****************************************************************************
415 * GrfInt/WindInt global memory area
416 * This area sits in system block 0 from $1000 to $10ff
417 WGlobal equ $1000 useful value (points to address starting below)
418 org 0
419 G.CurTik rmb 1 Constant - # Clock ticks/cursor updates (2)
420 G.CntTik rmb 1 Current tick count for cursor updates
421 G.GfBusy rmb 1 Grfdrv is busy flag (1=busy)
422 g0003 rmb 2 NEW: UNUSED
423 g0005 rmb 2 ???
424 G.GrfStk rmb 2 grfdrv stack pointer ($07)
425 G.MonTyp rmb 1 monitor type
426 g000A equ . Old label for compatibility
427 G.CrDvFl rmb 1 Are we current device flag (only set when all
428 * Parms have been moved to Dev Mem)
429 * 0=We are not on our device
430 * 1=We are the current device
431 * (Used by comod (GRF/WIND/VDGInt) to determine
432 * whether or not to update GIME regs themselves
433 * If not current device, they don't.)
434 g000B rmb 1 current device's V.TYPE
435 G.CurDvM rmb 2 current device memory pointer for co-module use
436 G.WIBusy rmb 1 WindInt is busy flag (1=busy)
437 G.AlPckt rmb 6 F$Alarm time packet
438 G.AlPID rmb 1 F$Alarm proc ID ($15)
439 G.AlSig rmb 1 F$Alarm signal code ($16)
440 G.BelVec rmb 2 BELL routine vector
441 G.DefPal rmb 2 pointer to default palette data in global mem
442 G.TnCnt rmb 1 SS.Tone duration counter
443 G.BelTnF rmb 1 BELL tone flag
444 g001D rmb 3
445 G.CurDev rmb 2 current device's static memory pointer ($20)
446 G.PrWMPt rmb 2 previous window static mem pointer $(22)
447 G.BCFFlg rmb 1 bit coded co-module found flags ($24)
448 * 00000010 : VDGInt found
449 * 10000000 : GrfDrv found
450 g0025 rmb 1
451 G.KTblLC rmb 1 Key table entry# last checked (1-3)
452 * ifeq TC9-true
453 *CurLght rmb 1 current keyboard light settings
454 * else
455 G.LastCh rmb 1 last keyboard character (ASCII value)
456 * endc
457 G.LKeyCd rmb 1 last keyboard code
458 G.KyRept rmb 1 key repeat counter
459 * A secondary 3 key table (same format as g002D below)
460 G.2Key1 rmb 1
461 G.2Key2 rmb 1
462 G.2Key3 rmb 1
463 * Up to 3 keys can be registerd at once, and they are stored here. If more
464 * than 3 are hit, the last key is overwritten with the very last key down that
465 * was checked. Format for all three is the same as the PIA column/row byte @
466 * KeyFlag below.
467 G.Key1 rmb 1 Key 1 being held down (Row/Column #)
468 G.Key2 rmb 1 Key 2 being held down (Row/Column #)
469 G.Key3 rmb 1 Key 3 being held down (Row/Column #)
470 G.ShftDn rmb 1 SHIFT key down flag (COM'd) ($30)
471 G.CntlDn rmb 1 CTRL key down flag (0=NO)
472 G.KeyFlg rmb 1 Keyboard PIA bit #'s for columns/rows
473 * %00000111-Column # (Output, 0-7)
474 * %00111000-Row # (Input, 0-6)
475 G.AltDwn rmb 1 ALT key down flag (0=NO)
476 G.KySns rmb 1 key sense byte
477 G.KySame rmb 1 same key flag
478 G.CapLok rmb 1 CapsLock/SysRq key down flag
479 rmb 1
480 g0038 rmb 1 grfdrv initialized flag
481 rmb 2
482 G.MSmpRt rmb 1 Current mouse sample # (# ticks till next read)
483 G.Mouse rmb Pt.Siz mouse packet ($3C)
484 g005C rmb 2 Temp for relative mouse X coord calculation
485 g005E rmb 2 Temp for relative mouse Y coord calculation
486 G.MSmpRV rmb 1 Mouse sample reset value (# ticks till next read)
487 G.KyDly rmb 1 initial key repeat delay constant
488 G.KySpd rmb 1 secondary key repeat delay constant
489 * ifeq TC9-true
490 *KeyParm rmb 1 keyboard command parameter byte
491 * else
492 G.KyMse rmb 1 keyboard mouse flag
493 * endc
494 G.Clear rmb 1 "one-shot" CapsLock/SysRq key flag
495 G.KyButt rmb 1 keyboard F1 and F2 "fire" button info
496 G.AutoMs rmb 1 Auto-follow mouse flag for current device (0=NO)
497 G.MseMv rmb 1 mouse moved flag
498 G.CoTble rmb 6 co-module table
499 G.GrfEnt rmb 2 GRFDRV Entry address ($6E)
500 g0070 rmb 1 # bytes to move in 1 block (1-72)
501 G.WUseTb rmb 4 windows in use bit table (0=unused, 32 windows) ($71)
502 G.GfxTbl rmb 2 Pointer to GFX tables ($75)
503 G.WrkWTb rmb $40 Work window table. WindInt only ($77)
504 g00B7 rmb 2 Current Device static mem ptr for WindInt
505 g00B9 rmb 2 Current window table ptr for WindInt
506 g00BB rmb 2 Pointer to work window table (g0077+$10)
507 g00BD rmb 1 Current screen type for work window table
508 g00BE rmb 1 Topmost overlay window # when check for title bars
509 g00BF rmb 1 Flag for keypress while processing menu select
510 g00C0 rmb 2 Ptr to current path descriptor
511 G.WindBk rmb 2 shift-clear routine vector
512 G.MsInit rmb 2 set mouse routine vector
513 G.MsSig rmb 1 mouse signal flag
514 G.DefPls rmb 16 Default palettes (2 repeats of 8 is default) ($C7)
515 g00D7 rmb 41
516
517 *****************************************************************************
518 * GrfDrv global memory data definitions
519 * This area sits in system block 0 from $1100 to $119E
520 GrfMem equ $1100 useful label used to point to mem starting below
521 org 0
522 gr0000 rmb 1 Pixel mask for 1st byte of GP line
523 gr0001 rmb 1 Pixel mask for last byte of a GP line
524 gr0002 rmb 2 Ptr to table of bit masks for colors
525 gr0004 rmb 1 # of bytes wide GP buffer is (including partials)
526 gr0005 rmb 1 # pixels per byte in GP Buffer
527 gr0006 rmb 1 # of pixels used in 1st byte of GP buffer line
528 gr0007 rmb 1 # of pixels used in last byte of GP buffer line
529 gr0008 rmb 1 Bit mask that is common to both screen & GP buffer
530 gr0009 rmb 1 # bytes for width of overlay window
531 gr000A rmb 1 # bytes to offset to get to next line after
532 * overlay width has been copied
533 gr000B rmb 1
534 gr000C rmb 2 Cursor address for proportional spacing?
535 gr000E rmb 1
536 gr000F rmb 1 Left-based bit mask for proportional spacing?
537 gr0010 rmb 2 Vector for text to gfx screen (either prop. or normal)
538 gr0012 rmb 6
539 gr0018 rmb 2 Working Center X coord for Circle/Ellipse
540 gr001A rmb 2 Working Center Y coord for Circle/Ellipse
541 gr001C rmb 2 Some variable for Circle/Ellipse (initially 0)
542 gr001E rmb 2 Working Y radius value for Circle/Ellipse
543 gr0020 rmb 2 Arc 'clip line' X01
544 gr0022 rmb 2 Arc 'clip line' Y01
545 gr0024 rmb 2 Arc 'clip line' X02
546 gr0026 rmb 2 Arc 'clip line' Y02
547 gr0028 rmb 1 full-byte background color to FFILL on mask
548 gr0029 rmb 1 pixels per byte: set up by FFILL
549 gr002A rmb 1 Flag for FFill: 1=no error, 0=Stack overflow error
550 gr002B rmb 1 current Y-direction to travel in FFILL
551 gr002C rmb 2
552 gr002E rmb 2 current window table entry
553 gr0030 rmb 2 current screen table ptr
554 gr0032 rmb 1 Last block # we used for buffers
555 gr0033 rmb 2 Last offset we used for buffers
556 gr0035 rmb 1 group
557 gr0036 rmb 2 offset
558 gr0038 rmb 1 group returned (new)
559 gr0039 rmb 1 0=Text cursor inverted off, >0 is inverted on
560 gr003A rmb 1 0=Graphics cursor XOR'd off,>0 is XOR'd on scrn
561 gr003B rmb 2 end of vars ptr?
562 gr003D rmb 2 Last X coordinate Graphics cursor was ON at
563 gr003F rmb 2 Last Y coordinate Graphics cursor was ON at
564 gr0041 rmb 2 Screen address for start of current gfx cursor
565 gr0043 rmb 1 Pixel mask for start of gfx cursor
566 gr0044 rmb 1 Block # Graphics cursor is in
567 gr0045 rmb 2 Offset in block Graphics cursor is in
568 gr0047 rmb 2 'Working' X coordinate
569 gr0049 rmb 2 'Working' Y coordinate
570 gr004B rmb 2 current X
571 gr004D rmb 2 current Y
572 gr004F rmb 2 X Size (in bytes)
573 gr0051 rmb 2 Y Size (in bytes)
574 gr0053 rmb 2 Horizontal radius (circle/ellipse/arc)
575 gr0055 rmb 2 Vertical radius (circle/ellipse/arc)
576 gr0057 rmb 1 group
577 gr0058 rmb 1 buffer #
578 gr0059 rmb 1 save switch for overlay
579 gr005A rmb 1 PRN
580 gr005B rmb 2 X coordinate of Graphics cursor
581 gr005D rmb 2 Y coordinate of Graphics cursor
582 gr005F rmb 1 ATD: new video mode for 24/25/28-line windows
583 Gr.STYMk rmb 1 STY marker
584 gr0061 rmb 1 foreground RGB data
585 gr0062 rmb 1 background RGB data
586 gr0063 rmb 1 bytes/row (on current screen...not window)
587 gr0064 rmb 2 PSet vector
588 gr0066 rmb 2 pset offset
589 gr0068 rmb 2 LSet vector
590 gr006A rmb 2 max X co-ordinate
591 gr006C rmb 2 max Y co-ordinate
592 gr006E rmb 2 X pixel count
593 gr0070 rmb 2 Y pixel count
594 gr0072 rmb 2 Screen address of pixel we are doing
595 gr0074 rmb 1 Pixel mask for pixel we are doing
596 gr0075 rmb 2 ??? Pixel mask for last byte of GP buffer?
597 gr0077 rmb 2 Vector for right direction FFill
598 gr0079 rmb 1 bit mask for 1st pixel in byte for right dir. FFill
599 gr007A rmb 2 Vector for left direction FFill
600 gr007C rmb 1 bit mask for last pixel in byte for left dir. FFill
601 gr007D rmb 1 buffer block #
602 gr007E rmb 2 buffer offset #
603 gr0080 rmb 2 Buffer length (in bytes)
604 gr0082 rmb 3 3 byte extended screen address
605 gr0085 rmb 2 temp
606 gr0087 rmb 16 grfdrv (sysmap 1) DAT image
607 gr0097 rmb 1 temp
608 gr0098 rmb 1 temp
609 * In ARC, 97-98 is the width of the clip line in pixels (after scaling)
610 gr0099 rmb 2 temp
611 * In ARC, 99-9A is the height of the clip line in pixels (after scaling)
612 gr009B rmb 1 counter temp
613 gr009C rmb 1
614 gr009D rmb 2 offset to buffer in block
615 gr009F rmb 1
616 gr00A0 rmb 1 # lines left to do of GP buffer onto screen
617 gr00A1 rmb 2 vector routine for (changes lots)
618 * In ARC A1-A2 is the vector to the proper clipping routine
619 gr00A3 rmb 2 Vector for shifting GP buffers
620 gr00A5 rmb 2 Vector for shifting GP buffers (can dupe A1)
621 gr00A7 rmb 2
622 gr00A9 rmb 2 NEW: Window tbl ptr for last window GRFDRV used
623 gr00AB rmb 256-. ??? UNUSED?
624 * GPLoad buffer - $1200 in system block 0
625 GPBuf rmb 72 common move buffer for gpload/get/put
626 gb0000 equ 72 Size of get/put buffer ($48)
627
628 *****************************************************************************
629 * Window table entry structure
630 * These tables sit in system block 0 and there is 1 for every window init'd
631 * including any overlay windows.
632 MaxWind equ 32 maximum allowable window tables
633 WinBase equ $1290 base address to start of window tables
634 org -$10
635 Wt.STbl rmb 2 Screen table pointer ($FFFF=Not used) -$10
636 Wt.BLnk rmb 1 overlay window parent entry # ($FF=base) -$0E
637 Wt.LStrt rmb 2 screen logical start address -$0D
638 Wt.CPX rmb 1 current X coord. start -$0B
639 Wt.CPY rmb 1 current Y coord. start -$0A
640 Wt.SZX rmb 1 current X size (CWArea) -$09
641 Wt.SZY rmb 1 current Y size (CWArea) -$08
642 Wt.SXFct rmb 1 X scaling factor -$07
643 Wt.SYFct rmb 1 Y scaling factor (0=no scaling) -$06
644 Wt.Cur rmb 2 cursor physical address on screen -$05
645 Wt.FMsk rmb 1 font bit mask (based from left) -$03
646 Wt.CurX rmb 2 X coord of cursor -$02
647 Wt.CurY rmb 2 Y Coord of cursor $00
648 Wt.XBCnt rmb 1 width of window (in bytes) $02
649 Wt.CWTmp rmb 1 bytes wide each text chr (1,2,4) $03
650 Wt.BRow rmb 2 bytes/text row (8x width in gfx) $04
651 Wt.Fore rmb 1 foreground palette # $06
652 Wt.Back rmb 1 background palette # $07
653 Wt.Attr rmb 1 default attributes (FUTTTBBB) $08
654 Wt.BSW rmb 1 character BSW switches $09
655 Wt.LSet rmb 1 LSet type $0A
656 Wt.FBlk rmb 1 Font memory block # $0B
657 Wt.FOff rmb 2 Font offset in block $0C
658 Wt.PBlk rmb 1 PSet memory block # $0E
659 Wt.POff rmb 2 PSet offset in block $0F
660 Wt.OBlk rmb 1 Overlay memory block # $11
661 Wt.OOff rmb 2 Overlay offset in block $12
662 Wt.LVec rmb 2 LSet vector $14
663 Wt.PVec rmb 2 PSet vector $16
664 Wt.GBlk rmb 1 GCursor memory block # $18
665 Wt.GOff rmb 2 GCursor offset in block $19
666 Wt.MaxX rmb 2 Maximum X cord. (0-79,0-639) $1B
667 Wt.MaxY rmb 2 Maximum Y cord. (0-24,0-191) $1D
668 Wt.BLen rmb 2 bytes left in GPLoad block below $1F
669 Wt.NBlk rmb 1 memory block # for next GPLoad $21
670 Wt.NOff rmb 2 Offset in block for next GPLoad $22
671 Wt.LStDf rmb 2 screen logical start default $24
672 * NOTE: The following default settings are what the window was initialized
673 * with, and thus are the MAXIMUM start/size the window can handle
674 * until it is restarted (DWEnd & DWSet)
675 * They also appear to be used in WindInt to determine the coords &
676 * sizes for control+content regions
677 Wt.DfCPX rmb 1 default X cord. start $26
678 Wt.DfCPY rmb 1 default Y cord. start $27
679 Wt.DfSZX rmb 1 default X size $28
680 Wt.DfSZY rmb 1 default Y size $29
681 Wt.Res rmb 6 unused $2A-$2F
682 Wt.Siz equ .+$10
683
684 *****************************************************************************
685 * Screen table entrys
686 * These tables sit in system block 0 base=$1A80
687
688 STblMax equ 16 Maximum number of screen tables
689 STblBse equ $1A80 base address of screen tables
690 org 0
691 St.Sty rmb 1 Screen type $00
692 St.SBlk rmb 1 Ram block start # $01
693 St.LStrt rmb 2 Screen logical start (for GIME) $02
694 St.BRow rmb 1 Bytes per row $04
695 St.Brdr rmb 1 Border palette register # $05
696 St.Fore rmb 1 Foreground palette register # $06
697 St.Back rmb 1 Background palette register # $07
698 St.ScSiz rmb 1 screen size: 24..28 lines $08
699 St.Res rmb 7 UNUSED??? $09
700 * NOTE: SHOULD USE ONE OF THESE UNUSED BYTES TO KEEP THE # OF DEVICE WINDOW
701 * TABLES THAT ARE USING THIS SCREEN TABLE. DWSET & DWEND WOULD KEEP TRACK OF
702 * THESE, AND THE WINDINT TITLE BAR ROUTINE WOULD CHECK IT. IF IT IS ONLY 1,
703 * IT WON'T BOTHER CHANGING THE TITLE BAR WHEN SELECTING WINDOWS
704 St.Pals rmb 16 Palette register contents $10
705 St.Siz equ .
706
707 *****************************************************************************
708 * Graphics buffer tables
709 * They contain a 20 byte header (shown below), followed by the raw pixel
710 * data.
711 org 0
712 Grf.Bck rmb 1 back block link # $00
713 Grf.Off rmb 2 back block header offset $01
714 Grf.Grp rmb 1 group # $03
715 Grf.Buff rmb 1 buffer # $04
716 Grf.BSz rmb 2 buffer size (not including header) $05
717 Grf.XSz rmb 2 X size (in pixels) $07
718 Grf.YSz rmb 2 Y size (in pixels/bytes) $09
719 Grf.XBSz rmb 1 X size in bytes $0B
720 Grf.LfPx rmb 1 # pixels used in first byte of line $0C
721 Grf.RtPx rmb 1 # pixels used in last byte of line $0D
722 Grf.STY rmb 1 Screen type buffer intended for $0E
723 Grf.NBlk rmb 1 number blocks used $0F
724 Grf.Pal rmb 16 Copy of palette registers? $10
725 Grf.Siz equ . $20
726
727 *****************************************************************************
728 * GFX tables (1 for each window, 18 ($12) bytes each) pointed to by
729 * $1075-$0176
730 * GRFINT only uses gt0001-gt0004, the rest is exclusive to WINDINT
731 org 0
732 Gt.WTyp rmb 1 WindInt window type (Framed, Scroll Bar, etc.) $00
733 Gt.GXCur rmb 2 X coord of graphics cursor $01
734 Gt.GYCur rmb 2 Y coord of graphics cursor $03
735 Gt.DPtr rmb 2 Ptr to WindInt window descriptor $05
736 Gt.FClr rmb 1 Foreground color $07
737 Gt.BClr rmb 1 Background color $08
738 Gt.FMsk rmb 1 Foreground mask $09
739 Gt.BMsk rmb 1 Background mask $0A
740 Gt.GBlk rmb 1 Block # of graphics cursor $0B
741 Gt.GOff rmb 2 Offset into block of graphics cursor $0C
742 Gt.Proc rmb 1 Process # of window creator $0E
743 Gt.PBlk rmb 1 Process descriptor block # of creator $0F
744 Gt.Res rmb 2 ??? RESERVED ??? $10
745 GTabSz equ .
746
747 *****************************************************************************
748 * This table is located in the graphics table memory and is offset from
749 * graphics table pointer stored at $1075-$1076. This is used exclusively by
750 * WindInt.
751 * NOTE: USING UNUSED BYTES IN CC3 GLOBAL MEM, SET UP SEPARATE PTRS FOR EACH
752 * OF THE BELOW SO WE CAN SPEED UP ACCESS BY NOT HAVING TO DO A LOAD/LEAx
753 * COMBINATION EVERY TIME
754 org $0240
755 rmb WN.SIZ copy of last accessed window descriptor
756 rmb MN.SIZ copy of last accessed menu descriptor
757 rmb MI.SIZ copy of last accessed item descriptor
758 rmb 65 menu handling table (16 entrys of 4 bytes)
759
760 *****************************************************************************
761 * WindInt menu handling table entry definition
762 org 0
763 MnuXNum rmb 1 menu #
764 MnuXStrt rmb 1 X start text co-ordinate
765 MnuXEnd rmb 1 X end text co-ordinate
766 rmb 1 unused?
767 MnuHSiz equ .
768
769 *****************************************************************************
770 * Character binary switches
771 TChr equ %10000000 transparent characters
772 Under equ %01000000 underline characters
773 Bold equ %00100000 bold characters
774 Prop equ %00010000 proportional spacing of characters
775 Scale equ %00001000 automatic window scaling
776 Invers equ %00000100 inverse characters
777 NoCurs equ %00000010 no cursor display
778 Protect equ %00000001 device window protection
779
780 *****************************************************************************
781 * Screen types (high bit set=hardware text, else graphics) in GRFDRV
782 Current equ $ff Current screen
783 * equ 1 640x200x2
784 * equ 2 320x200x4
785 * equ 3 640x200x4
786 * equ 4 320x200x16
787 * equ $85 80 column text
788 * equ $86 40 column text
789
790 *************************************
791 * Window default palette color codes
792 *
793 org 0
794 White. rmb 1
795 Blue. rmb 1
796 Black. rmb 1
797 Green. rmb 1
798 Red. rmb 1
799 Yellow. rmb 1
800 Magenta. rmb 1
801 Cyan. rmb 1
802
803 * end of cc3global.defs