home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-02-04 | 211.1 KB | 5,875 lines |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos pROGRAMMER'S rEFERENCE gUIDE
-
-
-
- WRITTEN BY
-
-
-
- aLEXANDER dONALD bOYCE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- pREFACE
-
-
-
-
-
- tHIS DOCUMENT WAS WRITTEN AFTER HAVING DISASSEMBLED THE geos
-
- kERNAL AND COMPLETELY COMMENTING AND REVERSE ENGINEERING IT. iT
-
- TOOK A GREAT DEAL OF TIME TO DO THIS, BUT i DID IT BECAUSE i
-
- ENJOY COMPUTER PROGRAMMING AND DECIPHERING OTHER PEOPLE'S
-
- PROGRAMS. bECAUSE OF THE AMOUNT OF EFFORT INVOLVED IN CREATING
-
- THIS DOCUMENT, i DO NOT REALLY WISH TO GIVE IT AWAY. hOWEVER, i
-
- KNOW THERE ARE OTHER PROGRAMMERS WHO WILL BENEFIT FROM MY HARD
-
- WORK. tHEREFORE i AM OFFERING THIS DOCUMENT AS SHAREWARE. iF YOU
-
- GET GOOD USE OUT OF THIS DOCUMENT, SEND ME WHATEVER YOU FEEL IT
-
- IS WORTH TO YOU (OR SOME REASONABLE AMOUNT, PERSONNALY i FIND IT
-
- INVALUABLE). a FEW DOLLARS WOULD BE APPRECIATED. hERE IS MY
-
- ADDRESS:
-
- aLEXANDER dONALD bOYCE
-
- 2269 gRANDVIEW aVE., aPT. 1
-
- cLEVELAND hEIGHTS, oHIO 44106-3144
-
-
-
- tHANK YOU AND HAPPY COMPUTING!!
-
-
-
- aLEX bOYCE
-
- oCTOBER 1986
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- tABLE OF cONTENTS
-
-
-
-
-
-
-
- cHAPTER 1 geos kERNAL rOUTINES
-
- dEFINES ALL THE geos KERNAL ROUTINES ALONG WITH
-
- THEIR INPUT AND OUTPUT REQUIREMENTS.
-
-
-
- cHAPTER 2 dEVICE dRIVERS
-
- dEFINES THE FORMAT FOR iNPUT AND pRINTER dRIVERS.
-
-
-
- cHAPTER 3 fILE fORMATS
-
- dESCRIBES THE FORMAT OF ALL OF geos'S VARIOUS
-
- FILES.
-
-
-
- cHAPTER 4 dIRECTORY sTRUCTURE
-
- dESCRIBES THE STRUCTURE OF A geos DISK'S
-
- DIRECTORY.
-
-
-
- cHAPTER 5 iNFORMATION sECTOR fORMAT
-
- dESCRIBES THE STRUCTURE AND THE DATA CONTAINED IN
-
- A FILE'S INFORMATION SECTOR.
-
-
-
- cHAPTER 6 mEMORY mAP
-
- dEFINES THE MEMORY LOCATIONS USED BY geos.
-
-
-
-
-
- aPPENDIX i geos eRRORS
-
- dEFINES THE ERROR NUMBERS THAT CAN BE RETURNED BY
-
- THE geos kERNAL ROUTINES.
-
-
-
- aPPENDIX ii gLOSSARY
-
- dEFINES SEVERAL TERMS USED IN THIS DOCUMENT.
-
-
-
- aPPENDIX iii fILL pATTERNS
-
- a REPRESENTATION OF geos'S 32 FILL PATTERNS.
-
-
-
- aPPENDIX iv pROGRAMMING nOTES
-
- iNFORMATION NECESSARY FOR geos PROGRAMMING.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-1
-
-
-
-
-
- aLPHABETICAL lISTING
-
-
-
- abs16 $c16f 16 BIT ABSOLUTE VALUE 1-9
-
- alloc $c292 fIND AND ALLOCATE A DISK BLOCK 1-9
-
- append $c289 aDD A vlir CHAIN 1-9
-
- basic $c241 rESTART basic 1-10
-
- blkcmp $c26e mEMORY BLOCK COMPARISON 1-10
-
- blkfil $c17b mEMORY BLOCK FILL 1-10
-
- blkfl2 $c1b4 mEMORY BLOCK FILL WITH INLINE DATA 1-11
-
- blkmov $c268 mEMORY BLOCK MOVE 1-11
-
- blkset $c181 mULTIPLE MEMORY LOCATION
-
- INITIALIZATION 1-11
-
- cbox $c142 dRAW A CLICK BOX 1-12
-
- cbox2 $c1ab dRAW A CLICK BOX WITH INLINE DATA 1-12
-
- cboxes $c15a dRAW A TABLE OF CLICK BOXES 1-13
-
- charst $c1b1 gET A CHARACTER'S STATS 1-13
-
- chgdrv $c2bc cHANGE DISK DRIVE DEVICE NUMBER 1-14
-
- ckmous $c2b3 cHECK IF MOUSE IS INSIDE A WINDOW 1-14
-
- clrrdy $c232 sTOP TURBODOS IN A DRIVE 1-14
-
- clrsts $c235 sTOP AND REMOVE TURBODOS IN A DRIVE 1-15
-
- clsmnu $c190 cLOSE CURRENT MENU 1-15
-
- clsser $c25f cLOSE SERIAL COMMUNICATION 1-15
-
- clswin $c2bf cLOSE A WINDOW 1-15
-
- cmdtbl $c103 iNITIALIZE A TABLE OF RECURRING
-
- TIMED EVENTS 1-16
-
- cmenus $c1bd cLOSE ALL MENU LEVELS 1-16
-
- convrt $c1ea cONVERT A DISK TO geos FORMAT 1-16
-
- copyb $c12d cOPY A BOX FROM SCREEN 1 TO SCREEN 2 1-17
-
- copyb2 $c1a5 cOPY A BOX FROM SCREEN 1 TO SCREEN 2
-
- WITH INLINE DATA 1-17
-
- copyb3 $c250 cOPY A BOX FROM SCREEN 2 TO SCREEN 1 1-17
-
- copyb4 $c253 cOPY A BOX FROM SCREEN 2 TO SCREEN 1
-
- WITH INLINE DATA 1-17
-
- copyl $c11e cOPY A LINE FROM SCREEN 2 TO SCREEN 1 1-18
-
- copysp $c1c6 cOPY A SPRITE DATA BLOCK 1-18
-
- cursof $c29e tURN OFF THE TEXT CURSOR 1-18
-
- curson $c29b tURN ON THE TEXT CURSOR 1-18
-
- cwidth $c1c9 gET A CHARACTER'S WIDTH 1-19
-
- cwrite $c223 vERIFY BEFORE WRITING SECTOR 1-19
-
- dec16 $c175 dECREMENT A 16 BIT INTEGER 1-19
-
- decode $c20e cOMPUTE THE CHECKSUM OF A MEMORY
-
- REGION 1-20
-
- delay $c199 sET UP A TIME DELAY 1-20
-
- delet2 $c244 dELETE A TEMPORARY FILE 1-20
-
- delete $c238 dELETE A FILE 1-20
-
- dirdsk $c1f0 cREATE A DIRECTORY ENTRY ON DISK 1-21
-
- dirmem $c1f3 cREATE A DIRECTORY ENTRY IN MEMORY 1-21
-
- draw $c2aa dRAW A CODED IMAGE 1-22
-
- draw2 $c2c5 dRAW A CODED IMAGE WITH USER PATCHES 1-22
-
- drawch $c202 dRAW A CHARACTER ON THE SCREEN 1-23
-
- drvnam $c298 cOMPUTE ADDRESS OF DISK'S NAME 1-23
-
- drvset $c2b0 sELECT A DRIVE 1-23
-
- drwmnu $c193 dRAW THE CURRENT MENU 1-23
-
- dsetup $c214 sETUP A DRIVE WITH TURBODOS 1-24
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-2
-
-
-
-
-
- dspchr $c145 dISPLAY A CHARACTER 1-24
-
- dspnum $c184 dISPLAY A 16 BIT INTEGER 1-25
-
- dsptx2 $c1ae dISPLAY A TEXT STRING WITH INLINE
-
- DATA 1-26
-
- dsptxt $c148 dISPLAY A TEXT STRING 1-26
-
- enable $c106 eNABLE A RECURRING TIMED EVENT 1-26
-
- eramns $c157 eRASE ALL MENUS 1-27
-
- eramnu $c154 eRASE THE CURRENT MENU 1-27
-
- exertn $c109 fORCE A RECURRING TIMED EVENT TO RUN 1-27
-
- falloc $c1fc aLLOCATE SECTORS FOR A FILE 1-27
-
- faloc2 $c24d aLLOCATE SECTORS FOR A FILE 1-28
-
- font $c1cc mAKE A MEMORY RESIDENT FONT THE
-
- CURRENT FONT 1-28
-
- forbid $c10c pREVENT A RECURRING TIMED EVENT FROM
-
- RUNNING 1-28
-
- free $c226 fREE A FILE'S SECTORS 1-29
-
- geosck $c1de cHECK IF A DISK IS geos FORMAT 1-29
-
- getbyt $c2b6 gET A BYTE FROM A FILE 1-29
-
- getin $c2a7 rEAD A CHARACTER FROM THE KEYBOARD 1-30
-
- goto $c280 gOTO A SPECIFIC vlir CHAIN 1-30
-
- grphc2 $c1a8 pROCESS A GRAPHIC COMMAND TABLE WITH
-
- INLINE DATA 1-30
-
- grphic $c136 pROCESS A GRAPHIC COMMAND TABLE 1-30
-
- hline $c118 dRAW A HORIZONTAL LINE IN A PATTERN 1-31
-
- hole $c1f6 fIND A HOLE IN THE DIRECTORY 1-32
-
- indjmp $c1d8 pERFORM AN INDIRECT JUMP 1-32
-
- init01 $c271 iNITIALIZE geos VARIABLES 1-32
-
- initdv $c1e1 iNITIALIZE A DRIVE 1-32
-
- initms $c14e iNITIALIZE THE MOUSE 1-33
-
- input $c1ba rEAD A LINE OF TEXT FROM THE USER 1-33
-
- insert $c286 iNSERT A vlir CHAIN 1-34
-
- intbm $c17e iNTELLIGENT MEMORY BLOCK MOVE 1-34
-
- intbm2 $c1b7 iNTELLIGENT MEMORY BLOCK MOVE WITH
-
- INLINE DATA 1-34
-
- inuse $c2ad cHECK IF A DISK SECTOR IS IN USE 1-35
-
- invbox $c12a rEVERSE VIDEO A BOX 1-35
-
- invlin $c11b rEVERSE VIDEO A HORIZONTAL LINE 1-35
-
- irqrtn $c100 irq ROUTINE 1-36
-
- lchain $c1ff lOAD A CHAIN INTO MEMORY, GIVEN THE
-
- INITIAL TRACK AND SECTOR 1-36
-
- ldswap $c23e lOAD THE swapfile 1-36
-
- line $c130 dRAW/eRASE/cOPY AN ARBITRARY LINE 1-37
-
- load $c208 lOAD A FILE, GIVEN A FILE NAME 1-37
-
- load2 $c211 lOAD A FILE, GIVEN A DIRECTORY ENTRY 1-38
-
- load3 $c21d lOAD AND RUN A FILE, GIVEN A
-
- DIRECTORY ENTRY 1-38
-
- loadad $c229 gET A FILE'S LOAD ADDRESS 1-39
-
- loadsw $c217 lOAD A FILE WITH MEMORY SWAPPING 1-39
-
- lookup $c20b lOOKUP A FILE IN THE DIRECTORY 1-40
-
- main $c1c3 geos'S MAIN LOOP 1-40
-
- makcur $c1c0 cREATE THE TEXT CURSOR SPRITE 1-41
-
- masl $c15d mULTIPLE 16 BIT ARITHMETIC SHIFT
-
- LEFT 1-41
-
- menu $c151 mENU PROCESSOR 1-42
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-3
-
-
-
-
-
- mlsr $c262 mULTIPLE 16 BIT LOGICAL SHIFT RIGHT 1-43
-
- mousof $c18d tURN OFF THE MOUSE 1-43
-
- mouson $c18a tURN ON THE MOUSE 1-43
-
- neg16 $c172 nEGATE A 16 BIT INTEGER 1-43
-
- next $c27a mOVE TO NEXT vlir CHAIN 1-44
-
- numblk $c1db cOMPUTE NUMBER OF FREE BLOCKS ON
-
- DISK 1-44
-
- opndsk $c2a1 oPEN A DISK 1-44
-
- opnser $c25c oPEN SERIAL COMMUNICATION 1-45
-
- pbox $c127 dRAW AN OUTLINE IN A PATTERN 1-45
-
- pbox2 $c1a2 dRAW A SOLID OUTLINE WITH INLINE
-
- DATA 1-45
-
- permit $c10f aLLOW A RECURRING TIMED EVENT TO
-
- EXECUTE 1-45
-
- pfill $c124 fILL A BOX WITH A PATTERN 1-46
-
- pfill2 $c19f fILL A BOX WITH A PATTERN WITH
-
- INLINE DATA 1-46
-
- plot $c133 dRAW/eRASE/cOPY A POINT ON THE
-
- SCREEN 1-46
-
- posspr $c1cf pOSITION A SPRITE 1-47
-
- prev $c27d mOVE TO PREVIOUS vlir CHAIN 1-47
-
- random $c187 cHANGE THE RANDOM NUMBER 1-47
-
- rd180 $c247 rEAD TRACK 18 SECTOR 0 1-47
-
- read $c1e4 rEAD A SECTOR 1-48
-
- read2 $c21a rEAD A SECTOR WITH DRIVE PRESET 1-48
-
- reboot $c000 rEBOOT geos 1-48
-
- remove $c283 rEMOVE A vlir CHAIN 1-49
-
- rename $c259 rENAME A FILE 1-49
-
- resetm $c19c rESET THE MOUSE 1-49
-
- restrt $c22c lOAD AND RUN desktop 1-49
-
- rowadr $c13c cOMPUTE MEMORY ADDRESS OF A ROW ON
-
- THE SCREEN 1-50
-
- run $c22f rUN A PROGRAM THAT IS IN MEMORY 1-50
-
- save $c1ed sAVE MEMORY TO A FILE 1-51
-
- save2 $c1f9 sAVE MEMORY TO PREALLOCATED SECTORS 1-51
-
- sd1616 $c16c sIGNED 16 BIT DIVISION 1-51
-
- selbsw $c14b sELECT THE bsw FONT 1-52
-
- setpat $c139 sELECT A FILL PATTERN 1-52
-
- sproff $c1d5 tURN OFF A SPRITE 1-52
-
- spron $c1d2 tURN ON A SPRITE 1-52
-
- start $c115 sTART A RECURRING TIMED EVENT'S
-
- TIMER 1-53
-
- stop $c112 sTOP A RECURRING TIMED EVENT'S TIMER 1-53
-
- strcmp $c26b sTRING COMPARE 1-53
-
- strcpy $c265 sTRING COPY 1-53
-
- syserr $c2c2 rEPORT SYSTEM ERROR 1-54
-
- table $c23b cREATE A TABLE OF FILE NAMES 1-54
-
- tbljmp $c2a4 pERFORM A JUMP THROUGH A TABLE 1-54
-
- test $c13f tEST THE VALUE OF A PIXEL 1-55
-
- trace $c205 cREATE A LIST OF SECTORS USED BY A
-
- FILE 1-55
-
- ud1616 $c169 uNSIGNED 16 BIT DIVISION 1-55
-
- um1616 $c166 uNSIGNED 16 BIT BY 16 BIT MULTIPLY 1-56
-
- um168 $c163 uNSIGNED 16 BIT BY 8 BIT MULTIPLY 1-56
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-4
-
-
-
-
-
- umul88 $c160 uNSIGNED 8 BIT BY 8 BIT MULTIPLY 1-56
-
- update $c295 uPDATE A vlir FILE 1-57
-
- vclose $c277 cLOSE A vlir FILE 1-57
-
- vline $c121 dRAW A VERTICAL LINE IN A PATTERN 1-57
-
- vload $c28c lOAD A vlir CHAIN 1-58
-
- vopen $c274 oPEN A vlir FILE 1-58
-
- vsave $c28f sAVE MEMORY TO A vlir CHAIN 1-59
-
- whatis $c196 wHO KNOWS WHAT THIS ROUTINE DOES??? 1-59
-
- window $c256 wINDOW PROCESSOR 1-60
-
- wr180 $c24a wRITE TO TRACK 18 SECTOR 0 1-62
-
- write $c1e7 wRITE A SECTOR 1-62
-
- write2 $c220 wRITE A SECTOR WITH DRIVE PRESET 1-62
-
- zfill $c178 fILL A MEMORY REGION WITH ZEROES 1-62
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-5
-
-
-
-
-
- sEQUENTIAL lISTING
-
-
-
- reboot $c000 rEBOOT geos 1-48
-
- irqrtn $c100 irq ROUTINE 1-36
-
- cmdtbl $c103 iNITIALIZE A TABLE OF RECURRING
-
- TIMED EVENTS 1-16
-
- enable $c106 eNABLE A RECURRING TIMED EVENT 1-26
-
- exertn $c109 fORCE A RECURRING TIMED EVENT TO RUN 1-27
-
- forbid $c10c pREVENT A RECURRING TIMED EVENT FROM
-
- RUNNING 1-28
-
- permit $c10f aLLOW A RECURRING TIMED EVENT TO
-
- EXECUTE 1-45
-
- stop $c112 sTOP A RECURRING TIMED EVENT'S TIMER 1-53
-
- start $c115 sTART A RECURRING TIMED EVENT'S
-
- TIMER 1-53
-
- hline $c118 dRAW A HORIZONTAL LINE IN A PATTERN 1-31
-
- invlin $c11b rEVERSE VIDEO A HORIZONTAL LINE 1-35
-
- copyl $c11e cOPY A LINE FROM SCREEN 2 TO SCREEN 1 1-18
-
- vline $c121 dRAW A VERTICAL LINE IN A PATTERN 1-57
-
- pfill $c124 fILL A BOX WITH A PATTERN 1-46
-
- pbox $c127 dRAW AN OUTLINE IN A PATTERN 1-45
-
- invbox $c12a rEVERSE VIDEO A BOX 1-35
-
- copyb $c12d cOPY A BOX FROM SCREEN 1 TO SCREEN 2 1-17
-
- line $c130 dRAW/eRASE/cOPY AN ARBITRARY LINE 1-37
-
- plot $c133 dRAW/eRASE/cOPY A POINT ON THE
-
- SCREEN 1-46
-
- grphic $c136 pROCESS A GRAPHIC COMMAND TABLE 1-30
-
- setpat $c139 sELECT A FILL PATTERN 1-52
-
- rowadr $c13c cOMPUTE MEMORY ADDRESS OF A ROW ON
-
- THE SCREEN 1-50
-
- test $c13f tEST THE VALUE OF A PIXEL 1-55
-
- cbox $c142 dRAW A CLICK BOX 1-12
-
- dspchr $c145 dISPLAY A CHARACTER 1-24
-
- dsptxt $c148 dISPLAY A TEXT STRING 1-26
-
- selbsw $c14b sELECT THE bsw FONT 1-52
-
- initms $c14e iNITIALIZE THE MOUSE 1-33
-
- menu $c151 mENU PROCESSOR 1-42
-
- eramnu $c154 eRASE THE CURRENT MENU 1-27
-
- eramns $c157 eRASE ALL MENUS 1-27
-
- cboxes $c15a dRAW A TABLE OF CLICK BOXES 1-13
-
- masl $c15d mULTIPLE 16 BIT ARITHMETIC SHIFT
-
- LEFT 1-41
-
- umul88 $c160 uNSIGNED 8 BIT BY 8 BIT MULTIPLY 1-56
-
- um168 $c163 uNSIGNED 16 BIT BY 8 BIT MULTIPLY 1-56
-
- um1616 $c166 uNSIGNED 16 BIT BY 16 BIT MULTIPLY 1-56
-
- ud1616 $c169 uNSIGNED 16 BIT DIVISION 1-55
-
- sd1616 $c16c sIGNED 16 BIT DIVISION 1-51
-
- abs16 $c16f 16 BIT ABSOLUTE VALUE 1-9
-
- neg16 $c172 nEGATE A 16 BIT INTEGER 1-43
-
- dec16 $c175 dECREMENT A 16 BIT INTEGER 1-19
-
- zfill $c178 fILL A MEMORY REGION WITH ZEROES 1-62
-
- blkfil $c17b mEMORY BLOCK FILL 1-10
-
- intbm $c17e iNTELLIGENT MEMORY BLOCK MOVE 1-34
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-6
-
-
-
-
-
- blkset $c181 mULTIPLE MEMORY LOCATION
-
- INITIALIZATION 1-11
-
- dspnum $c184 dISPLAY A 16 BIT INTEGER 1-25
-
- random $c187 cHANGE THE RANDOM NUMBER 1-47
-
- mouson $c18a tURN ON THE MOUSE 1-43
-
- mousof $c18d tURN OFF THE MOUSE 1-43
-
- clsmnu $c190 cLOSE CURRENT MENU 1-15
-
- drwmnu $c193 dRAW THE CURRENT MENU 1-23
-
- whatis $c196 wHO KNOWS WHAT THIS ROUTINE DOES??? 1-59
-
- delay $c199 sET UP A TIME DELAY 1-20
-
- resetm $c19c rESET THE MOUSE 1-49
-
- pfill2 $c19f fILL A BOX WITH A PATTERN WITH
-
- INLINE DATA 1-46
-
- pbox2 $c1a2 dRAW A SOLID OUTLINE WITH INLINE
-
- DATA 1-45
-
- copyb2 $c1a5 cOPY A BOX FROM SCREEN 1 TO SCREEN 2
-
- WITH INLINE DATA 1-17
-
- grphc2 $c1a8 pROCESS A GRAPHIC COMMAND TABLE WITH
-
- INLINE DATA 1-30
-
- cbox2 $c1ab dRAW A CLICK BOX WITH INLINE DATA 1-12
-
- dsptx2 $c1ae dISPLAY A TEXT STRING WITH INLINE
-
- DATA 1-26
-
- charst $c1b1 gET A CHARACTER'S STATS 1-13
-
- blkfl2 $c1b4 mEMORY BLOCK FILL WITH INLINE DATA 1-11
-
- intbm2 $c1b7 iNTELLIGENT MEMORY BLOCK MOVE WITH
-
- INLINE DATA 1-34
-
- input $c1ba rEAD A LINE OF TEXT FROM THE USER 1-33
-
- cmenus $c1bd cLOSE ALL MENU LEVELS 1-16
-
- makcur $c1c0 cREATE THE TEXT CURSOR SPRITE 1-41
-
- main $c1c3 geos'S MAIN LOOP 1-40
-
- copysp $c1c6 cOPY A SPRITE DATA BLOCK 1-18
-
- cwidth $c1c9 gET A CHARACTER'S WIDTH 1-19
-
- font $c1cc mAKE A MEMORY RESIDENT FONT THE
-
- CURRENT FONT 1-28
-
- posspr $c1cf pOSITION A SPRITE 1-47
-
- spron $c1d2 tURN ON A SPRITE 1-52
-
- sproff $c1d5 tURN OFF A SPRITE 1-52
-
- indjmp $c1d8 pERFORM AN INDIRECT JUMP 1-32
-
- numblk $c1db cOMPUTE NUMBER OF FREE BLOCKS ON
-
- DISK 1-44
-
- geosck $c1de cHECK IF A DISK IS geos FORMAT 1-29
-
- initdv $c1e1 iNITIALIZE A DRIVE 1-32
-
- read $c1e4 rEAD A SECTOR 1-48
-
- write $c1e7 wRITE A SECTOR 1-62
-
- convrt $c1ea cONVERT A DISK TO geos FORMAT 1-16
-
- save $c1ed sAVE MEMORY TO A FILE 1-51
-
- dirdsk $c1f0 cREATE A DIRECTORY ENTRY ON DISK 1-21
-
- dirmem $c1f3 cREATE A DIRECTORY ENTRY IN MEMORY 1-21
-
- hole $c1f6 fIND A HOLE IN THE DIRECTORY 1-32
-
- save2 $c1f9 sAVE MEMORY TO PREALLOCATED SECTORS 1-51
-
- falloc $c1fc aLLOCATE SECTORS FOR A FILE 1-27
-
- lchain $c1ff lOAD A CHAIN INTO MEMORY, GIVEN THE
-
- INITIAL TRACK AND SECTOR 1-36
-
- drawch $c202 dRAW A CHARACTER ON THE SCREEN 1-23
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-7
-
-
-
-
-
- trace $c205 cREATE A LIST OF SECTORS USED BY A
-
- FILE 1-55
-
- load $c208 lOAD A FILE, GIVEN A FILE NAME 1-37
-
- lookup $c20b lOOKUP A FILE IN THE DIRECTORY 1-40
-
- decode $c20e cOMPUTE THE CHECKSUM OF A MEMORY
-
- REGION 1-20
-
- load2 $c211 lOAD A FILE, GIVEN A DIRECTORY ENTRY 1-38
-
- dsetup $c214 sETUP A DRIVE WITH TURBODOS 1-24
-
- loadsw $c217 lOAD A FILE WITH MEMORY SWAPPING 1-39
-
- read2 $c21a rEAD A SECTOR WITH DRIVE PRESET 1-48
-
- load3 $c21d lOAD AND RUN A FILE, GIVEN A
-
- DIRECTORY ENTRY 1-38
-
- write2 $c220 wRITE A SECTOR WITH DRIVE PRESET 1-62
-
- cwrite $c223 vERIFY BEFORE WRITING SECTOR 1-19
-
- free $c226 fREE A FILE'S SECTORS 1-29
-
- loadad $c229 gET A FILE'S LOAD ADDRESS 1-39
-
- restrt $c22c lOAD AND RUN desktop 1-49
-
- run $c22f rUN A PROGRAM THAT IS IN MEMORY 1-50
-
- clrrdy $c232 sTOP TURBODOS IN A DRIVE 1-14
-
- clrsts $c235 sTOP AND REMOVE TURBODOS IN A DRIVE 1-15
-
- delete $c238 dELETE A FILE 1-20
-
- table $c23b cREATE A TABLE OF FILE NAMES 1-54
-
- ldswap $c23e lOAD THE swapfile 1-36
-
- basic $c241 rESTART basic 1-10
-
- delet2 $c244 dELETE A TEMPORARY FILE 1-20
-
- rd180 $c247 rEAD TRACK 18 SECTOR 0 1-47
-
- wr180 $c24a wRITE TO TRACK 18 SECTOR 0 1-62
-
- faloc2 $c24d aLLOCATE SECTORS FOR A FILE 1-28
-
- copyb3 $c250 cOPY A BOX FROM SCREEN 2 TO SCREEN 1 1-17
-
- copyb4 $c253 cOPY A BOX FROM SCREEN 2 TO SCREEN 1
-
- WITH INLINE DATA 1-17
-
- window $c256 wINDOW PROCESSOR 1-60
-
- rename $c259 rENAME A FILE 1-49
-
- opnser $c25c oPEN SERIAL COMMUNICATION 1-45
-
- clsser $c25f cLOSE SERIAL COMMUNICATION 1-15
-
- mlsr $c262 mULTIPLE 16 BIT LOGICAL SHIFT RIGHT 1-43
-
- strcpy $c265 sTRING COPY 1-53
-
- blkmov $c268 mEMORY BLOCK MOVE 1-11
-
- strcmp $c26b sTRING COMPARE 1-53
-
- blkcmp $c26e mEMORY BLOCK COMPARISON 1-10
-
- init01 $c271 iNITIALIZE geos VARIABLES 1-32
-
- vopen $c274 oPEN A vlir FILE 1-58
-
- vclose $c277 cLOSE A vlir FILE 1-57
-
- next $c27a mOVE TO NEXT vlir CHAIN 1-44
-
- prev $c27d mOVE TO PREVIOUS vlir CHAIN 1-47
-
- goto $c280 gOTO A SPECIFIC vlir CHAIN 1-30
-
- remove $c283 rEMOVE A vlir CHAIN 1-49
-
- insert $c286 iNSERT A vlir CHAIN 1-34
-
- append $c289 aDD A vlir CHAIN 1-9
-
- vload $c28c lOAD A vlir CHAIN 1-58
-
- vsave $c28f sAVE MEMORY TO A vlir CHAIN 1-59
-
- alloc $c292 fIND AND ALLOCATE A DISK BLOCK 1-9
-
- update $c295 uPDATE A vlir FILE 1-57
-
- drvnam $c298 cOMPUTE ADDRESS OF DISK'S NAME 1-23
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-8
-
-
-
-
-
- curson $c29b tURN ON THE TEXT CURSOR 1-18
-
- cursof $c29e tURN OFF THE TEXT CURSOR 1-18
-
- opndsk $c2a1 oPEN A DISK 1-44
-
- tbljmp $c2a4 pERFORM A JUMP THROUGH A TABLE 1-54
-
- getin $c2a7 rEAD A CHARACTER FROM THE KEYBOARD 1-30
-
- draw $c2aa dRAW A CODED IMAGE 1-22
-
- inuse $c2ad cHECK IF A DISK SECTOR IS IN USE 1-35
-
- drvset $c2b0 sELECT A DRIVE 1-23
-
- ckmous $c2b3 cHECK IF MOUSE IS INSIDE A WINDOW 1-14
-
- getbyt $c2b6 gET A BYTE FROM A FILE 1-29
-
- chgdrv $c2bc cHANGE DISK DRIVE DEVICE NUMBER 1-14
-
- clswin $c2bf cLOSE A WINDOW 1-15
-
- syserr $c2c2 rEPORT SYSTEM ERROR 1-54
-
- draw2 $c2c5 dRAW A CODED IMAGE WITH USER PATCHES 1-22
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-9
-
-
-
-
-
- fUNCTION nAME: abs16
-
- pURPOSE: 16 BIT ABSOLUTE VALUE.
-
- cALL ADDRESS: $c16f
-
- iNPUT REQUIREMENTS:
-
- x tHE ADDRESS OF THE 16 BIT INTEGER.
-
- oUTPUT:
-
- x tHE ADDRESS A POSITIVE 16 BIT INTEGER.
-
-
-
- dESCRIPTION: tHIS ROUTINE IS ONE OF THE geos MATH ROUTINES. x
-
- POINTS TO A 16 BIT VALUE WHICH IF FOUND TO BE NEGATIVE, neg16 IS
-
- CALLED TO MAKE IT POSITIVE.
-
-
-
-
-
- fUNCTION nAME: alloc
-
- pURPOSE: aLLOCATE A BLOCK ON THE DISK.
-
- cALL ADDRESS: $c292
-
- iNPUT REQUIREMENTS:
-
- $08 tRACK TO START SCANNING FROM.
-
- $09 sECTOR TO START SCANNING FROM.
-
- $8200-$82ff tRACK 18 SECTOR 0, bam.
-
- $849c sKEW FACTOR (DEFAULT IS 8).
-
- oUTPUT:
-
- $08 nEW TRACK NUMBER.
-
- $09 nEW SECTOR NUMBER.
-
- eRRORS: sEE APPENDIX i.
-
-
-
- dESCRIPTION: tHIS ROUTINE EXPECTS THAT THE bam IS ALREADY IN
-
- MEMORY. iT SCANS THE bam STARTING AT A SPECIFIED LOCATION,
-
- LOOKING FOR A FREE SECTOR. iF ONE IS FOUND IT IS RETURNED,
-
- OTHERWISE AN ERROR RESULTS. tHE SECTOR IS ALLOCATED IN THE bam,
-
- AND THE bam MUST BE UPDATED TO DISK AFTERWARDS IN ORDER FOR THE
-
- SECTOR TO REMAIN ALLOCATED.
-
-
-
-
-
- fUNCTION nAME: append
-
- pURPOSE: aPPEND A NEW CHAIN IN A vlir FILE.
-
- cALL ADDRESS: $c289
-
- iNPUT REQUIREMENTS:
-
- $8496 cURRENT CHAIN NUMBER.
-
- oUTPUT:
-
- $8496 iNCREMENTED BY 1.
-
- $8497 iNCREMENTED BY 1.
-
- pREPARATORY ROUTINES: vopen
-
- eRRORS: sEE APPENDIX i.
-
-
-
- dESCRIPTION: a HOLE IS OPENED UP IN THE vlir SECTOR IMMEDIATELY
-
- FOLLOWING THE CURRENT CHAIN. tHE HOLE IS FILLED WITH $00,$ff.
-
- tHIS REPRESENTS A NULL CHAIN. tHIS HOLE BECOMES THE CURRENT
-
- CHAIN.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-10
-
-
-
-
-
- fUNCTION nAME: basic
-
- pURPOSE: rESTART basic WITH OPTIONAL PROGRAM LOAD.
-
- cALL ADDRESS: $c241
-
- iNPUT REQUIREMENTS:
-
- $02-$03 pOINTER TO 40 CHARACTERS OF TEXT.
-
- $0c-$0d pOINTER TO FILE'S DIRECTORY ENTRY.
-
- $10-$11 lOAD ADDRESS.
-
- pREPARATORY ROUTINES: lookup
-
-
-
- dESCRIPTION: tHE 40 CHARACTERS POINTED TO BY $02-$03 ARE SAVED IN
-
- A BUFFER. iF $0c-$0d IS NON-ZERO, THE FILE IS LOADED INTO MEMORY
-
- AT THE ADDRESS SPECIFIED BY $10-$11. basic IS RESTARTED WITH AN
-
- INTERRUPT VECTOR. tHIS INTERRUPT IS SET UP TO GIVE basic A CHANCE
-
- TO START UP. aFTER THE TIME HAS ELAPSED, THE 40 CHARACTERS IN THE
-
- BUFFER ARE COPIED TO THE SCREEN AND A cr IS PLACED IN THE
-
- KEYBOARD BUFFER. tHE INTERRUPT VECTOR IS THEN REMOVED, BUT THE
-
- nmi VECTOR IS SET UP TO REBOOT geos. tHE REBOOT CODE IS AT $c000-
-
- $c037.
-
-
-
-
-
- fUNCTION nAME: blkcmp
-
- pURPOSE: cOMPARES TWO BLOCKS OF MEMORY FOR A FIXED LENGTH.
-
- cALL ADDRESS: $c26e
-
- iNPUT REQUIREMENTS:
-
- a bYTE COUNT.
-
- x aDDRESS OF ZERO PAGE SOURCE POINTER.
-
- y aDDRESS OF ZERO PAGE DESTINATION POINTER.
-
- oUTPUT:
-
- z FLAG sET ACCORDINGLY.
-
-
-
- dESCRIPTION: tHE x AND y REGISTERS POINT TO ZERO PAGE POINTERS. a
-
- HAS THE NUMBER OF BYTES TO BE COMPARED (1-255). iF a IS ZERO,
-
- THIS ROUTINE WILL COMPARE UP TO AND INCLUDING A ZERO BYTE. tHE z
-
- FLAG IS SET ACCORDINGLY. sEE strcmp.
-
-
-
-
-
- fUNCTION nAME: blkfil
-
- pURPOSE: fILLS A MEMORY REGION WITH A SPECIFIED BYTE.
-
- cALL ADDRESS: $c17b
-
- iNPUT REQUIREMENTS:
-
- $02-$03 tHE LENGTH OF THE REGION.
-
- $04-$05 tHE ADDRESS OF THE REGION.
-
- $06 tHE BYTE TO FILL THE REGION WITH.
-
-
-
- dESCRIPTION: a SIMPLE LOOP FILLS MEMORY WITH THE SPECIFIED BYTE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-11
-
-
-
-
-
- fUNCTION nAME: blkfl2
-
- pURPOSE: iDENTICAL TO blkfil, BUT WITH INLINE DATA.
-
- cALL ADDRESS: $c1b4
-
-
-
- dESCRIPTION: tHIS ROUTINE TAKES THE INLINE DATA AND SETS
-
- EVERYTHING UP BEFORE CALLING blkfil. fOR EXAMPLE:
-
- jsr blkfl2
-
- .word lENGTH OF REGION
-
- .word aDDRESS OF REGION
-
- .byte bYTE TO FILL MEMORY WITH
-
- cONTROL RETURNS HERE UPON COMPLETION.
-
-
-
-
-
- fUNCTION nAME: blkmov
-
- pURPOSE: cOPY A BLOCK OF MEMORY.
-
- cALL ADDRESS: $c268
-
- iNPUT REQUIREMENTS:
-
- a bYTE COUNT.
-
- x aDDRESS OF ZERO PAGE SOURCE POINTER.
-
- y aDDRESS OF ZERO PAGE DESTINATION POINTER.
-
-
-
- dESCRIPTION: tHE x AND y REGISTERS POINT TO ZERO PAGE POINTERS.
-
- a HAS THE NUMBER OF BYTES TO BE TRANSFERRED (1-255). iF a IS
-
- ZERO, THIS ROUTINE WILL COPY UP TO AND INCLUDING A ZERO BYTE. sEE
-
- strcpy.
-
-
-
-
-
- fUNCTION nAME: blkset
-
- pURPOSE: uSES A TABLE TO SET VARIOUS MEMORY LOCATIONS IN A
-
- UNIFORM MANNER.
-
- cALL ADDRESS: $c181
-
- iNPUT REQUIREMENTS:
-
- $02-$03 aDDRESS OF A DATA TABLE.
-
-
-
- dESCRIPTION: tHIS ROUTINE ALLOWS MANY MEMORY LOCATIONS TO BE
-
- SPECIFIED AND SET IN AN ORDERLY MANNER. tHE FORMAT OF THE DATA
-
- TABLE IS AS FOLLOWS:
-
- #BYTES dESCRIPTION
-
- 2 aDDRESS TO STORE VALUES AT.
-
- 1 # OF VALUES THAT FOLLOW.
-
- ? vALUES TO BE STORED AT THE DESIGNATED MEMORY
-
- REGION.
-
- ... mORE DEFINITIONS.
-
- 2 aN ADDRESS OF $0000 ENDS THE TABLE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-12
-
-
-
-
-
- fUNCTION nAME: cbox
-
- pURPOSE: dRAWS A CLICK BOX ON THE SCREEN.
-
- cALL ADDRESS: $c142
-
- iNPUT REQUIREMENTS:
-
- $02-$03 pOINTER TO THE GRAPHIC DATA.
-
- $04 cOLUMN IN CHARACTERS.
-
- $05 tHE ROW IN PIXELS.
-
- $06 tHE WIDTH IN BYTES.
-
- $07 tHE HEIGHT IN PIXELS.
-
-
-
- dESCRIPTION: tHIS ROUTINE DRAWS A CLICK BOX ON THE SCREEN. a
-
- CLICK BOX IS A BOX LIKE oK, oPEN, ETC. tHESE BOXES ARE GENERALLY
-
- PART OF A WINDOW DESCRIPTION. tHE GRAPHIC DATA IS IN A CODED
-
- FORMAT. tHIS FORMAT CONSISTS OF A CODE BYTE FOLLOWED BY 1 OR MORE
-
- DATA BYTES.
-
- 1) cODE BYTES LESS THAN 128 MEAN THAT THE FOLLOWING BYTE IS
-
- TO BE REPEATED THAT MANY TIMES.
-
- 2) cODE BYTES RANGING FROM 128 TO 219 MEAN THAT IF 128 IS
-
- SUBTRACTED FROM THE CODE BYTE, THEN THE RESULT IS THE
-
- NUMBER OF DATA BYTES THAT FOLLOW.
-
- 3) cODE BYTES RANGING FROM 220 TO 225 ARE SPECIAL. fIRST 219
-
- IS SUBTRACTED FROM THE CODE BYTE, THE RESULT IS THE
-
- NUMBER OF BYTES IN THE PATTERN. fOLLOWING THIS CODE BYTE
-
- IS A REPETITION COUNT FOR THE PATTERN. fOLLOWING THIS ARE
-
- THE BYTES THAT CONSTITUTE THE PATTERN. tHESE COULD
-
- INCLUDE EITHER OF THE PREVIOUS TWO CODE TYPES.
-
-
-
-
-
- fUNCTION nAME: cbox2
-
- pURPOSE: iDENTICAL TO cbox, BUT WITH INLINE DATA.
-
- cALL ADDRESS: $c1ab
-
-
-
- dESCRIPTION: tHIS ROUTINE TAKES A CLICK BOX DESCRIPTOR FROM
-
- INLINE DATA AND DRAWS IT. tHE INLINE DATA DOES not INCLUDE THE
-
- PROCESSING VECTOR, IE.
-
- jsr drwcb2
-
- .word ADDRESS OF GRAPHIC IMAGE
-
- .byte START COLUMN IN BYTES
-
- .byte START MARGIN IN PIXELS
-
- .byte WIDTH OF BOX IN BYTES
-
- .byte HEIGHT OF BOX IN PIXELS
-
- cONTROL RETURNS HERE AFTER THE BOX IS DRAWN.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-13
-
-
-
-
-
- fUNCTION nAME: cboxes
-
- pURPOSE: dRAWS ALL OF THE CLICK BOXES IN A TABLE.
-
- cALL ADDRESS: $c15a
-
- iNPUT REQUIREMENTS:
-
- $02-$03 pOINTER TO A CLICK BOX TABLE (uSUALLY $880c).
-
- pREPARATORY ROUTINES: window (OPTIONAL).
-
-
-
- dESCRIPTION: tHIS ROUTINE DRAWS ALL OF THE CLICK BOXES BY CALLING
-
- cbox REPEATEDLY UNTIL THE TABLE IS EXHAUSTED. tHE initms IS
-
- CALLED TO SET THE MOUSE'S POSITION. cLICK TABLE FORMAT:
-
- #BYTES dESCRIPTION
-
- 1 # CLICK BOXES IN TABLE.
-
- 2 cOLUMN TO PLACE MOUSE IN (0 WILL PREVENT
-
- PLACEMENT).
-
- 1 rOW TO PLACE MOUSE IN.
-
- tHIS IS FOLLOWED BY SETS OF 8 BYTES, ONE FOR EACH CLICK BOX.
-
- 2 aDDRESS OF GRAPHIC DATA.
-
- 1 cOLUMN POSITION OF BOX IN CHARACTERS.
-
- 1 rOW POSITION OF BOX IN PIXELS.
-
- 1 wIDTH OF BOX IN BYTES.
-
- 1 hEIGHT OF BOX IN PIXELS.
-
- 2 aDDRESS OF ROUTINE TO PROCESS THIS BOX.
-
-
-
-
-
- fUNCTION nAME: charst
-
- pURPOSE: gET STATISTICS FOR A CHARACTER.
-
- cALL ADDRESS: $c1b1
-
- iNPUT REQUIREMENTS:
-
- a tHE CHARACTER.
-
- oUTPUT:
-
- a tHE POSITION OF THE UNDERLINE.
-
- y tHE CHARACTER'S WIDTH.
-
- x tHE CHARACTER'S HEIGHT.
-
-
-
- dESCRIPTION: gIVEN THE ascii VALUE OF A CHARACTER, THIS ROUTINE
-
- COMPUTES AND RETURNS THE HEIGHT AND WIDTH, TAKING THE STYLE INTO
-
- ACCOUNT. tHE # PIXELS ABOVE THE UNDERLINE FOR THE PRESENT FONT IS
-
- ALSO RETURNED.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-14
-
-
-
-
-
- fUNCTION nAME: chgdrv
-
- pURPOSE: cHANGE THE DEVICE NUMBER OF A DRIVE.
-
- cALL ADDRESS: $c2bc
-
- iNPUT REQUIREMENTS:
-
- a nEW DEVICE NUMBER FOR DRIVE.
-
- $8489 cURRENT DRIVE NUMBER.
-
- oUTPUT:
-
- $ba nEW DEVICE NUMBER.
-
- $8489 nEW DEVICE NUMBER.
-
- $8492-$8495 aPPROPRIATE BYTES ARE RESET AND SET.
-
- eRRORS: sEE APPENDIX i.
-
-
-
- dESCRIPTION: tHE CURRENT DRIVE IS MADE READY, THEN THE NEW DEVICE
-
- NUMBER IS SENT TO TURBODOS WHICH WILL CHANGE IT. tHIS RESULTS IN
-
- THE DRIVE BEING SET AS THE CURRENT DRIVE BUT WITH A NEW DEVICE
-
- NUMBER, AND WITH TURBODOS UP AND RUNNING. tHE STATUS BYTES AT
-
- $8492-$8495 ARE CHANGED, THE OLD ONE IS RESET AND THE NEW ONE HAS
-
- BITS 6 AND 7 SET.
-
-
-
-
-
- fUNCTION nAME: ckmous
-
- pURPOSE: cHECK IF THE MOUSE IS IN A BOX.
-
- cALL ADDRESS: $c2b3
-
- iNPUT REQUIREMENTS:
-
- $06 tOP MARGIN.
-
- $07 bOTTOM MARGIN.
-
- $08-$09 lEFT MARGIN.
-
- $0a-$0b rIGHT MARGIN.
-
- oUTPUT:
-
- a $00 - OUTSIDE BOX, $ff - INSIDE BOX.
-
-
-
- dESCRIPTION: tHIS ROUTINE SIMPLY COMPARES THE PRESENT MOUSE
-
- LOCATION STORED AT LOCATIONS $3a-$3c AGAINST THE BOX'S
-
- BOUNDARIES. a IS SET TO $00 IF THE MOUSE IS OUTSIDE, $ff IF IT IS
-
- INSIDE.
-
-
-
-
-
- fUNCTION nAME: clrrdy
-
- pURPOSE: tURN OFF TURBODOS.
-
- cALL ADDRESS: $c232
-
- iNPUT REQUIREMENTS:
-
- $8489 cURRENT DRIVE NUMBER.
-
-
-
- dESCRIPTION: tURBODOS IS TERMINATED IN THE CURRENT DRIVE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-15
-
-
-
-
-
- fUNCTION nAME: clrsts
-
- pURPOSE: cLEAR THE DRIVE READY STATUS.
-
- cALL ADDRESS: $c235
-
- iNPUT REQUIREMENTS:
-
- $8489 cURRENT DRIVE NUMBER.
-
- oUTPUT:
-
- aPPROPRIATE STATUS BYTE IS RESET.
-
-
-
- dESCRIPTION: tHIS ROUTINE TERMINATES TURBODOS IN THE CURRENT
-
- DRIVE, AND RESETS THE DRIVE STATUS BYTE AT $8492-$8495.
-
-
-
-
-
- fUNCTION nAME: clsmnu
-
- pURPOSE: bACKS UP A MENU LEVEL.
-
- cALL ADDRESS: $c190
-
-
-
- dESCRIPTION: tHIS ROUTINE ERASES THE PRESENT MENU, AND POPS BACK
-
- ONE LEVEL.
-
-
-
-
-
- fUNCTION nAME: clsser
-
- pURPOSE: cLOSE OFF SERIAL COMMUNICATION.
-
- cALL ADDRESS: $c25f
-
- eRRORS: sEE APPENDIX i.
-
-
-
- dESCRIPTION: tHIS ROUTINE RESETS THE i/o PORTS AFTER SERIAL
-
- COMMUNICATION IS COMPLETE. tHIS ROUTINE IS CALLED AFTER CALLS TO
-
- read2, write2 OR cwrite.
-
-
-
-
-
- fUNCTION nAME: clswin
-
- pURPOSE: cLOSE A WINDOW.
-
- cALL ADDRESS: $c2bf
-
- oUTPUT:
-
- $02 cOMMAND BYTE FROM WINDOW PROCESSOR.
-
- $851d cOMMAND BYTE FROM WINDOW PROCESSOR.
-
-
-
- dESCRIPTION: tHE WINDOW IS ERASED AND THE MEMORY ADDRESSES THAT
-
- THE WINDOW PROCESSOR SAVED ARE RESTORED. cONTROL RETURNS TO THE
-
- CALLER OF window.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-16
-
-
-
-
-
- fUNCTION nAME: cmdtbl
-
- pURPOSE: sETS UP A TABLE OF RECURRING TIMED EVENTS.
-
- cALL ADDRESS: $c103
-
- iNPUT REQUIREMENTS:
-
- a tHE NUMBER OF ENTRIES IN THE TABLE.
-
- $02-$03 a POINTER TO THE TABLE OF COUNTERS AND ROUTINE
-
- ADDRESSES.
-
-
-
- dESCRIPTION: tHIS ROUTINE COPIES A TABLE OF SUBROUTINE ADDRESSES
-
- AND COUNTER VALUES INTO geos'S TABLES AT $872d AND $8755. tHE
-
- COUNTERS WILL BE DECREMENTED ON EACH CALL TO irqrtn. wHEN THEY
-
- REACH ZERO, THEY ARE RESET AND THE ASSOCIATED ROUTINE IS CALLED
-
- BY THE geos MAIN LOOP. tHE COMMAND BYTES ARE INITIALLY SET TO
-
- DISABLE THE COUNTERS. sEVERAL CALLS TO enable ARE NEEDED TO START
-
- THE COUNTERS RUNNING, ONE FOR EACH ENTRY IN THE TABLE. tHE TABLE
-
- CONSISTS OF PAIRS OF WORDS. tHE FIRST IS THE ADDRESS OF THE
-
- SUBROUTINE TO BE EXECUTED EACH TIME THE COUNTER REACHES ZERO AND
-
- THE SECOND IS THE COUNTER VALUE . tHIS APPEARS TO BE THE
-
- RUDIMENTS OF MULTITASKING geos. tHE TABLE OF COMMAND BYTES AT
-
- $8719 ARE BIT ORIENTED AND OPERATE ACCORDING TO THE FOLLOWING
-
- TABLE:
-
- bIT 7 - tIMER REACHED ZERO, CALL THE SUBROUTINE.
-
- bIT 6 - dISABLE THE EXECUTION OF THE ROUTINE. tHIS DOES not
-
- AFFECT THE COUNTER.
-
- bIT 5 - iNITIALLY SET BY cmdtbl, CAUSES THE COUNTER TO STOP
-
- RUNNING.
-
- bIT 4 - tHOUGH NOT REFERENCED ANYWHERE IN THE geos kERNAL,
-
- THIS BIT ALSO STOPS THE COUNTER. tHIS BIT IS not
-
- TOUCHED BY ANY OF THE geos ROUTINES, INCLUDING
-
- enable.
-
-
-
-
-
- fUNCTION nAME: cmenus
-
- pURPOSE: cLOSES ALL MENU LEVELS.
-
- cALL ADDRESS: $c1bd
-
- pREPARATORY ROUTINES: menu
-
-
-
- dESCRIPTION: tHIS ROUTINE IS NOT THE SAME eramns. tHE MENUS ARE
-
- CLEARED ONE AT A TIME AND THE PREVIOUS LEVELS ARE REPROCESSED IN
-
- REVERSE ORDER UNTIL ALL MENUS ARE CLOSED.
-
-
-
-
-
- fUNCTION nAME: convrt
-
- pURPOSE: cONVERTS A DISK TO geos FORMAT.
-
- cALL ADDRESS: $c1ea
-
- eRRORS: sEE APPENDIX
-
-
-
- dESCRIPTION: tHIS ROUTINE MODIFIES THE DIRECTORY HEADER TO
-
- INCLUDE THE geos FORMAT MESSAGE. iT ALSO ALLOCATES A SECTOR TO BE
-
- USED FOR THE BORDER FROM desktop.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-17
-
-
-
-
-
- fUNCTION nAME: copyb
-
- pURPOSE: cOPIES A BOX FROM SCREEN 2 TO SCREEN 1.
-
- cALL ADDRESS: $c12d
-
- iNPUT REQUIREMENTS:
-
- $06 tHE TOP MARGIN.
-
- $07 tHE BOTTOM MARGIN.
-
- $08-$09 tHE LEFT MARGIN.
-
- $0a-$0b tHE RIGHT MARGIN.
-
-
-
- dESCRIPTION: tHIS ROUTINE COPIES A BOX FROM SCREEN 2 ($6000) TO
-
- SCREEN 1 ($a000). lOCATION $2f IS UNAFFECTED. tHIS ROUTINE CALLS
-
- copyl REPEATEDLY TO COPY EACH LINE OF THE BOX.
-
-
-
-
-
- fUNCTION nAME: copyb2
-
- pURPOSE: iDENTICAL TO copyb, BUT WITH INLINE DATA.
-
- cALL ADDRESS: $c1a5
-
-
-
- dESCRIPTION: tHIS ROUTINE COPIES A BOX FROM SCREEN 2 ($6000) TO
-
- SCREEN 1 ($a000). tHE BOX DESCRIPTOR IS INLINE WITH THE CALLING
-
- CODE. sEE pfill2 FOR AN EXAMPLE.
-
-
-
-
-
- fUNCTION nAME: copyb3
-
- pURPOSE: cOPIES A BOX FROM SCREEN 2 TO SCREEN 1.
-
- cALL ADDRESS: $c250
-
- iNPUT REQUIREMENTS:
-
- $06 tHE TOP MARGIN.
-
- $07 tHE BOTTOM MARGIN.
-
- $08-$09 tHE LEFT MARGIN.
-
- $0a-$0b tHE RIGHT MARGIN.
-
-
-
- dESCRIPTION: tHIS ROUTINE COPIES A BOX FROM SCREEN 1 ($a000) TO
-
- SCREEN 2 ($6000). lOCATION $2f IS UNAFFECTED. tHIS ROUTINE CALLS
-
- copyl REPEATEDLY TO COPY EACH LINE OF THE BOX.
-
-
-
-
-
- fUNCTION nAME: copyb4
-
- pURPOSE: iDENTICAL TO copyb3, BUT WITH INLINE DATA.
-
- cALL ADDRESS: $c253
-
-
-
- dESCRIPTION: tHIS ROUTINE COPIES A BOX FROM SCREEN 1 ($a000) TO
-
- SCREEN 2 ($6000). tHE BOX DESCRIPTOR IS INLINE WITH THE CALLING
-
- CODE. sEE pfill2 FOR AN EXAMPLE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-18
-
-
-
-
-
- fUNCTION nAME: copyl
-
- pURPOSE: cOPIES A HORIZONAL LINE FROM SCREEN 2 TO SCREEN 1.
-
- cALL ADDRESS: $c11e
-
- iNPUT REQUIREMENTS:
-
- $08-$09 tHE LEFT MARGIN.
-
- $0a-$0b tHE RIGHT MARGIN.
-
- $18 tHE ROW NUMBER.
-
-
-
- dESCRIPTION: tHIS ROUTINE COPIES A HORIZONTAL LINE FROM SCREEN 2
-
- ($6000) TO SCREEN 1 ($a000). lOCATION $2f IS UNAFFECTED.
-
-
-
-
-
- fUNCTION nAME: copysp
-
- pURPOSE: cOPIES A SPRITE INTO geos'S STORAGE AREA.
-
- cALL ADDRESS: $c1c6
-
- iNPUT REQUIREMENTS:
-
- $08 tHE SPRITE NUMBER (0-7).
-
- $0a-$0b pOINTER TO THE SPRITE DATA.
-
-
-
- dESCRIPTION: tHIS ROUTINE SIMPLY COPIES 63 BYTES OF DATA POINTED
-
- TO BY $0a-$0b TO THE SPECIFIED SPRITE BLOCK. geos USES SPRITE
-
- BLOCKS 40 TO 47.
-
-
-
-
-
- fUNCTION nAME: cursof
-
- pURPOSE: tURN OFF TEXT CURSOR.
-
- cALL ADDRESS: $c29e
-
- oUTPUT:
-
- $84b4 bIT 6 IS CLEARED.
-
- pREPARATORY ROUTINES: curson
-
-
-
- dESCRIPTION: sPRITE 1 (geos'S TEXT CURSOR) IS TURNED OFF, BIT 6
-
- OF LOCATION $84b4 IS RESET. tHE BLINK RATE IS SET TO 60 (ONCE PER
-
- SECOND).
-
-
-
-
-
- fUNCTION nAME: curson
-
- pURPOSE: tURN ON TEXT CURSOR.
-
- cALL ADDRESS: $c29b
-
- iNPUT REQUIREMENTS:
-
- $84be-$84bf cOLUMN TO PLACE CURSOR IN.
-
- $84c0 rOW TO PLACE CURSOR ON.
-
- oUTPUT:
-
- $84b4 bIT 6 IS SET.
-
-
-
- dESCRIPTION: tURNS ON SPRITE 1 AND POSITIONS IT. iT ALSO SETS BIT
-
- 6 OF LOCATION $84b4. tHE BLINK RATE IS SET TO 60, ONCE PER
-
- SECOND. sPRITE 1 IS THE TEXT CURSOR FOR geos.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-19
-
-
-
-
-
- fUNCTION nAME: cwidth
-
- pURPOSE: rETURNS THE WIDTH OF A CHARACTER.
-
- cALL ADDRESS: $c1c9
-
- iNPUT REQUIREMENTS:
-
- a tHE ascii VALUE OF THE CHARACTER.
-
- oUTPUT:
-
- a tHE WIDTH OF THE CHARACTER.
-
-
-
- dESCRIPTION: tHIS ROUTINE SIMPLY TAKES THE DIFFERENCE OF THE BIT
-
- STREAM INDICES TO GET THE CHARACTERS WIDTH. tHE DELETE CHARACTER
-
- HAS ITS WIDTH LOADED FROM $8807. tHIS ROUTINE IS CALLED BY
-
- charst.
-
-
-
-
-
- fUNCTION nAME: cwrite
-
- pURPOSE: cONDITIONALLY WRITE A SECTOR TO DISK.
-
- cALL ADDRESS: $c223
-
- iNPUT REQUIREMENTS:
-
- $04 tRACK NUMBER.
-
- $05 sECTOR NUMBER.
-
- $0a-$0b pOINTER TO DATA BUFFER.
-
- pREPARATORY ROUTINES: dsetup
-
- eRRORS: sEE APPENDIX i.
-
-
-
- dESCRIPTION: tHE FIRST THING THIS ROUTINE DOES IS TRY TO READ THE
-
- DESIRED SECTOR. iF THE READ SUCCEEDS, NOTHING HAPPENS. tHREE
-
- ATTEMPTS ARE MADE AT THE READ. aFTER THESE READ ATTEMPTS, THE
-
- SECTOR IS WRITTEN TO THE DISK, BY CALLING write2. iF THE WRITE
-
- SUCCEEDED WITHOUT ANY ERRORS, THEN THE ROUTINE RESTARTS ITSELF.
-
- iT WILL MAKE FIVE ATTEMPTS AT THIS LOOP. iF AFTER FIVE ATTEMPTS,
-
- THE SECTOR CAN NOT BE READ RELIABLY, AN ERROR 39 RESULTS. tHIS
-
- ROUTINE IS USUALLY CALLED AFTER THE SECTOR HAS BEEN WRITTEN OUT
-
- WITH A CALL TO write2. write CALLS THIS ROUTINE TO VERIFY THE
-
- SECTOR.
-
-
-
-
-
- fUNCTION nAME: dec16
-
- pURPOSE: dECREMENTS A 16 BIT VALUE.
-
- cALL ADDRESS: $c175
-
- iNPUT REQUIREMENTS:
-
- x tHE ADDRESS OF THE 16 BIT INTEGER.
-
- oUTPUT:
-
- x tHE ADDRESS OF THE 16 BIT RESULT.
-
-
-
- dESCRIPTION: tHIS ROUTINE IS ONE OF THE geos MATH ROUTINES. x
-
- POINTS TO A 16 BIT VALUE WHICH IS DECREMENTED BY 1.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-20
-
-
-
-
-
- fUNCTION nAME: decode
-
- pURPOSE: cOMPUTE A CHECKSUM FOR A DATA REGION.
-
- cALL ADDRESS: $c20e
-
- iNPUT REQUIREMENTS:
-
- $02-$03 pOINTER TO DATA REGION.
-
- $04-$05 lENGTH OF REGION.
-
- oUTPUT:
-
- $06-$07 cHECKSUM OF REGION.
-
-
-
- dESCRIPTION: tHIS ROUTINE IS CALLED BY THE BOOTUP ROUTINES TO
-
- COMPUTE THE CHECKSUM OF geos boot. tHIS CHECKSUM IS USED TO
-
- CREATE THE INTERRUPT VECTOR ADDRESS. tHE REASON FOR THIS WAS TO
-
- PREVENT PIRACY. tHIS CAN BE USED TO CHECK THE INTEGRITY OF A
-
- MEMORY REGION. tHIS IS ACTUALLY MORE OF A crc COMPUTATION THEN A
-
- CHECKSUM AND THE FORMULA IS A LITTLE TOO COMPLEX TO EXPLAIN HERE.
-
-
-
-
-
- fUNCTION nAME: delay
-
- pURPOSE: sETS UP A TIME DELAY.
-
- cALL ADDRESS: $c199
-
- iNPUT REQUIREMENTS:
-
- $02-$03 aMOUNT OF TIME DELAY VALUE IN 60THS OF A SECOND.
-
-
-
- dESCRIPTION: tHE COUNTER IS SAVED ON A STACK, AS WELL AS THE
-
- RETURN ADDRESS OF THE CALLER. cONTROL IS PASSED BACK A LEVEL
-
- HIGHER THAN THE CALLER. wHEN THE TIMER RUNS OUT, CONTROL WILL
-
- RETURN WHERE IT LEFT OFF. tHIS ALLOWS PROGRAMS TO INCORPORATE
-
- DELAYS WITHOUT HALTING geos'S MANY INDEPENDANT PROCESSES. tHIS
-
- AND cmdtbl APPEAR TO BE THE BEGINNINGS OF MULTITASKING FOR geos.
-
-
-
-
-
- fUNCTION nAME: delet2
-
- pURPOSE: dELETE A TEMPORARY FILE.
-
- cALL ADDRESS: $c244
-
- iNPUT REQUIREMENTS:
-
- $08-$09 pOINTER TO TABLE OF TRACKS AND SECTORS.
-
- $0e-$0f pOINTER TO FILE NAME.
-
- eRRORS: sEE APPENDIX i.
-
-
-
- dESCRIPTION: tHIS ROUTINE REMOVES THE FILE FROM THE DIRECTORY. iT
-
- USES THE TABLE OF TRACKS AND SECTORS TO FREE UP THE SECTORS USED
-
- BY THE FILE. tHIS ROUTINE IS USED TO CLEAN UP A TEMPORARY FILE
-
- THAT WAS NOT COMPLETED.
-
-
-
-
-
- fUNCTION nAME: delete
-
- pURPOSE: dELETE A FILE FROM THE DISK.
-
- cALL ADDRESS: $c238
-
- iNPUT REQUIREMENTS:
-
- $02-$03 pOINTER TO FILE NAME.
-
- eRRORS: sEE APPENDIX i.
-
-
-
- dESCRIPTION: tHE SPECIFIED FILE IS DELETED FROM THE CURRENT
-
- DRIVE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-21
-
-
-
-
-
- fUNCTION nAME: dirdsk
-
- pURPOSE: cREATES A DIRECTORY ENTRY ON THE DISK.
-
- cALL ADDRESS: $c1f0
-
- iNPUT REQUIREMENTS:
-
- $14-$15 $8100, REQUIRED.
-
- $16 # OF DIRECTORY SECTORS TO SKIP FIRST.
-
- $8100-$81ff iNFORMATION SECTOR FOR FILE.
-
- $8300- tRACK AND SECTOR LIST FOR FILE.
-
- oUTPUTS:
-
- $8400-$841d dIRECTORY ENTRY.
-
- dIRECTORY ENTRY IS WRITTEN TO THE DISK.
-
- pREPARATORY ROUTINES: falloc
-
- eRRORS: sEE APPENDIX
-
-
-
- dESCRIPTION: tHIS ROUTINE IS USED BY save AND CALLS dirmem.
-
- bECAUSE OF THIS, ASSUMPTIONS ARE MADE. tHE FIRST IS THAT THE
-
- INFORMATION SECTOR IS AT $8100-$81ff AND THAT $14-$15 POINT
-
- THERE. tHE FIRST TWO BYTES OF THE INFORMATION SECTOR ARE THE
-
- ADDRESS OF THE FILENAME. tHESE ARE RESET BY THIS ROUTINE TO $00,
-
- $ff. aNOTHER ASSUMPTION MADE BY THIS ROUTINE IS THAT $8300 IS A
-
- LIST OF USEABLE TRACKS AND SECTORS; SPECIFICALLY, $8300-$8301 ARE
-
- THE TRACK AND SECTOR FOR THE INFORMATION SECTOR AND $8302-$8303
-
- ARE THE TRACK AND SECTOR OF THE FIRST SECTOR OF THE FILE.
-
-
-
-
-
- fUNCTION nAME: dirmem
-
- pURPOSE: cREATE A DIRECTORY ENTRY IN MEMORY.
-
- cALL ADDRESS: $c1f3
-
- iNPUT REQUIREMENTS:
-
- $14-$15 $8100, REQUIRED.
-
- $8100-$81ff iNFORMATION SECTOR FOR FILE.
-
- $8300- tRACK AND SECTOR LIST FOR FILE.
-
- oUTPUTS:
-
- $8400-$841d dIRECTORY ENTRY.
-
- pREPARATORY ROUTINES: falloc
-
- eRRORS: sEE APPENDIX
-
-
-
- dESCRIPTION: sEE dirdsk FOR A COMPLETE LIST OF ALL THE
-
- ASSUMPTIONS MADE BY THIS ROUTINE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-22
-
-
-
-
-
- fUNCTION nAME: draw
-
- pURPOSE: dRAW A SECTION OF A CODED GRAPHIC IMAGE.
-
- cALL ADDRESS: $c2aa
-
- iNPUT REQUIREMENTS:
-
- $02-$03 pOINTER TO GRAPHIC IMAGE DATA.
-
- $04 cOLUMN TO START ON, IN BYTES.
-
- $05 rOW TO START DRAWING THE IMAGE ON.
-
- $06 iMAGE WIDTH IN BYTES.
-
- $07 iMAGE HEIGHT IN PIXELS
-
- $18 # BYTES TO SKIP ON THE LEFT SIDE.
-
- $19 # BYTES ON THE RIGHT SIDE.
-
- $1a-$1b # ROWS TO SKIP DOWN.
-
-
-
- dESCRIPTION: tHE CODING OF THE IMAGE IS THE SAME AS THAT OF THE
-
- CLICK BOXES, SEE cbox FOR MORE INFORMATION. tHIS ROUTINE SEEMS TO
-
- BE FOR DRAWING PIECES OF pHOTO sCRAPS. pHOTO sCRAPS HAVE THIS
-
- CODED FORMAT. tHE PARAMETERS FOR THIS ROUTINE ALLOW A SECTION OF
-
- THE IMAGE TO BE DRAWN BY SPECIFYING HOW MANY ROWS TO SKIP DOWN,AS
-
- WELL AS HOW MANY BYTES TO SKIP ON THE LEFT AND THE RIGHT OF THE
-
- DESIRED SECTION. tHIS IS NOT USED BY geoPAINT UNLESS geoPAINT
-
- CONVERTS ITS FILES BECAUSE THEY ARE IN A DIFFERENT FORMAT;
-
- HOWEVER, pHOTO sCRAPS ARE IN THIS FORMAT.
-
-
-
-
-
- fUNCTION nAME: draw2
-
- pURPOSE: dRAW A SECTION OF A CODED GRAPHIC IMAGE.
-
- cALL ADDRESS: $c2c5
-
- iNPUT REQUIREMENTS:
-
- $02-$03 pOINTER TO GRAPHIC IMAGE DATA.
-
- $04 cOLUMN TO START ON, IN BYTES.
-
- $05 rOW TO START DRAWING THE IMAGE ON.
-
- $06 iMAGE WIDTH IN BYTES.
-
- $07 iMAGE HEIGHT IN PIXELS
-
- $18 # BYTES TO SKIP ON THE LEFT SIDE.
-
- $19 # BYTES ON THE RIGHT SIDE.
-
- $1a-$1b # ROWS TO SKIP DOWN.
-
- $1c-$1d fIRST USER VECTOR.
-
- $1e-$1f sECOND USER VECTOR.
-
-
-
- dESCRIPTION: tHIS ROUTINE IS IDENTICAL TO draw, EXCEPT THAT
-
- BEFORE EACH BYTE IS READ, THE FIRST USER ROUTINE IS CALLED. tHE
-
- SECOND USER ROUTINE IS CALLED BEFORE READING EACH BYTE THAT IS
-
- NOT PART OF A PATTERN (cOMMAND BYTES GREATER THAN 219). tHESE
-
- USER ROUTINES MIGHT BE FOR DISK READING, IN ORDER TO DRAW AN
-
- IMAGE THAT IS NOT MEMORY RESIDENT.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-23
-
-
-
-
-
- fUNCTION nAME: drawch
-
- pURPOSE: dRAWS A CHARACTER.
-
- cALL ADDRESS: $c202
-
- iNPUT REQUIREMENTS:
-
- a tHE ascii VALUE OF THE CHARACTER.
-
- $05 rOW TO PRINT ON (1 ABOVE THE UNDERLINE).
-
- $18-$19 cOLUMN TO PRINT IN.
-
- $33 tHE TOP MARGIN (uSUALLY 0).
-
- $34 tHE BOTTOM MARGIN (uSUALLY 199).
-
-
-
- dESCRIPTION: tHIS ROUTINE IS NOT EXACTLY THE SAME AS dspchr. tHIS
-
- ROUTINE DOES NOT PROCESS CONTROL CHARACTERS AT ALL. iT ALSO DOES
-
- NOT CHECK LEFT AND RIGHT MARGINS AT ALL. iT ONLY CHECKS TOP AND
-
- BOTTOM MARGINS SO THAT IT STAYS ON SCREEN.
-
-
-
-
-
- fUNCTION nAME: drvnam
-
- pURPOSE: cOMPUTE THE ADDRESS OF THE DISK'S NAME.
-
- cALL ADDRESS: $c298
-
- iNPUT REQUIREMENTS:
-
- x aDDRESS TO PLACE POINTER IN.
-
- $8489 cURRENT DRIVE NUMBER.
-
- oUTPUT:
-
- lOCATION IN ZERO PAGE POINTED TO BY x HAS THE ADDRESS OF THE
-
- CURRENT DRIVE'S NAME.
-
- pREPARATORY ROUTINES: opndsk
-
-
-
- dESCRIPTION: tHIS ROUTINE COMPUTES THE ADDRESS OF THE CURRENT
-
- DRIVE'S NAME BY MULTIPLYING THE DRIVE NUMBER (MINUS 8) BY 18,
-
- THEN THE OFFSET OF $841e IS ADDED TO THAT. tHE RESULT OF THE
-
- COMPUTATION IS STORED AT THE ZERO PAGE ADDRESS IN x.
-
-
-
-
-
- fUNCTION nAME: drvset
-
- pURPOSE: sET CURRENT DRIVE.
-
- cALL ADDRESS: $c2b0
-
- iNPUT REQUIREMENTS:
-
- a dEVICE NUMBER OF DRIVE (8-11).
-
- oUTPUT:
-
- $ba sET TO NEW DEVICE NUMBER.
-
- $8489 sET TO NEW DRIVE NUMBER.
-
-
-
- dESCRIPTION: iF THE DRIVE BEING SPECIFIED IS NOT THE CURRENT
-
- DRIVE THEN clrrdy IS CALLED TO CLEAR THE CURRENT DRIVE. tHEN
-
- LOCATIONS $ba AND $8489 ARE SET TO THE NEW DRIVE NUMBER. nO OTHER
-
- LOCATIONS ARE AFFECTED, NOR IS ANYTHING ACTUALLY DONE WITH THE
-
- DRIVE.
-
-
-
-
-
- fUNCTION nAME: drwmnu
-
- pURPOSE: rEDRAWS THE PRESENT MENU.
-
- cALL ADDRESS: $c193
-
-
-
- dESCRIPTION: tHIS ROUTINE REDRAWS THE CURRENT MENU.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-24
-
-
-
-
-
- fUNCTION nAME: dsetup
-
- pURPOSE: sETS UP A DRIVE WITH TURBODOS.
-
- cALL ADDRESS: $c214
-
- iNPUT REQUIREMENTS:
-
- $8489 cURRENT DRIVE NUMBER.
-
- eRRORS: sEE aPPENDIX i.
-
-
-
- dESCRIPTION: tHIS ROUTINE INITIALIZES THE CURRENT DRIVE, SENDING
-
- TURBODOS IF NECESSARY. iT THEN CAUSES THE DRIVE TO RUN TURBODOS.
-
- tHIS ROUTINE IS CALLED BY SEVERAL OF THE DISK i/o ROUTINES, MOST
-
- NOTABLY ARE read AND write. uPON INITIALIZING THE DRIVE, THE
-
- DRIVE'S STATUS BYTE IS SET TO THE APPROPRIATE VALUE. tHE STATUS
-
- BYTES ARE STORED AT $8492-$8495 AND HAVE THE FOLLOWING BIT
-
- DEFINITIONS:
-
- bIT 7 tURBODOS IS LOADED.
-
- bIT 6 tURBODOS IS RUNNING.
-
-
-
-
-
- fUNCTION nAME: dspchr
-
- pURPOSE: dISPLAYS A CHARACTER ON THE SCREEN.
-
- cALL ADDRESS: $c145
-
- iNPUT REQUIREMENTS:
-
- a tHE CHARACTER TO BE PRINTED.
-
- $02-$03 pOINTER TO EXTRA DATA (uSED BY A FEW CONTROL
-
- CHARACTERS, NOT NEEDED OTHERWISE).
-
- $05 tHE ROW FOR PRINTING (1 ABOVE THE UNDERLINE).
-
- $18-$19 tHE COLUMN TO START PRINTING.
-
- $33 tHE TOP MARGIN (uSUALLY 0).
-
- $34 tHE BOTTOM MARGIN (uSUALLY 199).
-
- $35-$36 tHE LEFT MARGIN.
-
- $37-$38 tHE RIGHT MARGIN.
-
- pREPARATORY ROUTINES: selbsw OR font
-
- eRRORS: bRANCHES THROUGH $84ab-$84ac IF RIGHT MARGIN IS EXCEEDED.
-
-
-
- dESCRIPTION: tHIS ROUTINE DISPLAYS A CHARACTER IN A GIVEN
-
- LOCATION IN THE CURRENT FONT AND STYLE. tHE STYLE BYTE IN
-
- LOCATION $2e IS CODED AS FOLLOWS:
-
- bIT dESCRIPTION
-
- 7 uNDERLINE
-
- 6 bOLDFACE
-
- 5 rEVERSED
-
- 4 iTALICS
-
- 3 oUTLINED
-
- eITHER selbsw OR font MUST BE CALLED PRIOR TO USING THIS ROUTINE,
-
- IN ORDER TO SET UP THE FONT POINTERS. selbsw IS CALLED DURING
-
- geos'S BOOTUP PROCEDURE, AS WELL AS BY THE MENU PROCESSOR.
-
- sEVERAL CONTROL CHARACTERS HAVE SPECIAL PROPERTIES. tHOSE WHICH
-
- REQUIRE A DATA POINTER ARE MARKED WITH AN ASTERISK.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-25
-
-
-
-
-
- cONTROL cHARACTER tABLE
-
-
-
- cTRL-h dELETE PREVIOUS CHARACTER.
-
- cTRL-i tAB.
-
- cTRL-j mOVE STRAIGHT DOWN A LINE.
-
- cTRL-k sET TEXT CURSOR TO 0,0.
-
- cTRL-l mOVE STRAIGHT UP A LINE.
-
- cTRL-m mOVE TO THE BEGINNING OF THE NEXT LINE.
-
- cTRL-n tURN ON UNDERLINING.
-
- cTRL-o tURN OFF UNDERLINING.
-
- * cTRL-p fOLLOWED BY A TABLE SUITABLE FOR grphic.
-
- cTRL-r tURN ON REVERSE VIDEO.
-
- cTRL-s tURN OFF REVERSE VIDEO.
-
- * cTRL-t fOLLOWED BY 2 BYTES WHICH SPECIFY THE NEW COLUMN.
-
- * cTRL-u fOLLOWED BY A BYTE WHICH SPECIFIES THE NEW ROW.
-
- * cTRL-v fOLLOWED BY 3 BYTES WHICH SPECIFY THE NEW PRINT
-
- POSITION.
-
- * cTRL-w sKIPS THE NEXT 3 BYTES.
-
- cTRL-x tURN ON bOLDFACE.
-
- cTRL-y tURN ON iTALICS.
-
- cTRL-z tURN ON oUTLINE.
-
- cTRL- tURN OFF ALL EFFECTS, RETURN TO PLAIN TEXT.
-
-
-
- tHOSE ENTRIES MARKED WITH AN ASTERISK (*) SHOULD ONLY BE USED
-
- FROM dsptxt BECAUSE THEY REQUIRE $02-$03 TO BE A POINTER TO GET
-
- EXTRA DATA. aS WITH grphic, cTRL-p MUST BE THE LAST COMMAND
-
- BECAUSE THE ZERO BYTE THAT TERMINATES grphic WILL TERMINATE
-
- dsptxt.
-
-
-
-
-
- fUNCTION nAME: dspnum
-
- pURPOSE: dISPLAY AN UNSIGNED 16 BIT INTEGER.
-
- cALL ADDRESS: $c184
-
- iNPUT REQUIREMENTS:
-
- a cONTROL VALUE (sEE DESCRIPTION).
-
- $02-$03 tHE VALUE TO BE DISPLAYED.
-
-
-
- dESCRIPTION: tHIS ROUTINE CONVERTS THE VALUE AT $02-$03 TO
-
- DECIMAL ascii AND DISPLAYS IT USING dspchr. tHE CONTROL VALUE IN
-
- a IS DEFINED AS FOLLOWS:
-
- BIT 7 0 - RIGHT JUSTIFY THE NUMBER.
-
- 1 - LEFT JUSTIFY THE NUMBER, IE. NO JUSTIFY.
-
- BIT 6 0 - PRINT LEADING ZEROES.
-
- 1 - SKIP LEADING ZEROES.
-
- BITS 0-5 tHE FIELD WIDTH IN PIXELS FOR RIGHT JUSTIFICATION.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-26
-
-
-
-
-
- fUNCTION nAME: dsptx2
-
- pURPOSE: iDENTICAL TO dsptxt, BUT WITH INLINE CODE.
-
- cALL ADDRESS: $c1ae
-
- iNPUT REQUIREMENTS:
-
- $35-$36 tHE LEFT MARGIN.
-
- $37-$38 tHE RIGHT MARGIN.
-
- pREPARATORY ROUTINES: selbsw OR font
-
- eRRORS: bRANCHES THROUGH $84ab-$84ac IF RIGHT MARGIN IS EXCEEDED.
-
-
-
- dESCRIPTION: tHIS ROUTINE CREATES A POINTER TO THE TEXT, CALLS
-
- dsptxt, THEN RETURNS TO THE CODE IMMEDIATELY FOLLOWING THE TEXT.
-
- jsr dsptx2
-
- .word tHE COLUMN TO START PRINTING IN
-
- .byte rOW FOR LINE OF PRINT (1 ABOVE THE UNDERLINE)
-
- .byte tEXT TO BE DISPLAYED
-
- .byte 0
-
- cONTROL RETURNS HERE AFTER TEXT IS PRINTED.
-
-
-
-
-
- fUNCTION nAME: dsptxt
-
- pURPOSE: dISPLAYS AN ENTIRE STRING OF TEXT.
-
- cALL ADDRESS: $c148
-
- iNPUT REQUIREMENTS:
-
- $02-$03 pOINTER TO TEXT STRING.
-
- $05 tHE ROW FOR PRINTING (1 ABOVE THE UNDERLINE).
-
- $18-$19 tHE COLUMN IN WHICH TO START PRINTING.
-
- $33 tHE TOP MARGIN (uSUALLY 0).
-
- $34 tHE BOTTOM MARGIN (uSUALLY 199).
-
- $35-$36 tHE LEFT MARGIN.
-
- $37-$38 tHE RIGHT MARGIN.
-
- pREPARATORY ROUTINES: selbsw OR font
-
- eRRORS: bRANCHES THROUGH $84ab-$84ac IF RIGHT MARGIN IS EXCEEDED.
-
-
-
- dESCRIPTION: tHIS ROUTINE CALLS dspchr TO DISPLAY EACH CHARACTER
-
- IN A STRING. tHE STRING IS TERMINATED BY A ZERO BYTE.
-
-
-
-
-
- fUNCTION nAME: enable
-
- pURPOSE: eNABLES A RECURRING TIMED EVENT.
-
- cALL ADDRESS: $c106
-
- iNPUT REQUIREMENTS:
-
- x tHE INDEX INTO THE COMMAND TABLE AT $8719.
-
- pREPARATORY ROUTINES: cmdtbl
-
-
-
- dESCRIPTION: tHIS ROUTINE ENABLES A SPECIFIC TIMER IN THE TABLE
-
- AT $8719 BY RESETTING BITS 5 AND 6 IN THE COMMAND TABLE. iT ALSO
-
- COPIES THE INITIAL VALUE INTO THE TIMER TABLE AT $87f1. tHE
-
- COMMAND TABLE MUST HAVE BEEN PREVIOUSLY SET UP BY A CALL TO
-
- cmdtbl.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-27
-
-
-
-
-
- fUNCTION nAME: eramns
-
- pURPOSE: eRASES ALL OPEN MENUS.
-
- cALL ADDRESS: $c157
-
- pREPARATORY ROUTINES: menu
-
-
-
- dESCRIPTION: tHIS ROUTINE ERASES ALL OF THE MENUS. iT CALLS
-
- eramnu REPEATEDLY TO ACCOMPLISH THIS. iT THEN SETS THE MENU LEVEL
-
- COUNTER ($84b7) TO $00.
-
-
-
-
-
- fUNCTION nAME: eramnu
-
- pURPOSE: eRASES THE CURRENT MENU FROM THE SCREEN.
-
- cALL ADDRESS: $c154
-
- pREPARATORY ROUTINES: menu
-
-
-
- dESCRIPTION: tHIS ROUTINE WILL ERASE THE CURRENT MENU. iT DOES
-
- not POP UP A LEVEL. iT SIMPLY ERASES IT FROM THE SCREEN. iF THE
-
- VECTOR AT $84b1 WAS SET, THEN THAT IS THE ROUTINE CALLED TO ERASE
-
- THE MENU; OTHERWISE, A BLANK PATTERN IS SELECTED WITH setpat AND
-
- pfill IS CALLED. tHE DEFAULT SETTING FOR $84b1 IS copyb.
-
-
-
-
-
- fUNCTION nAME: exertn
-
- pURPOSE: fORCES A TIMED EVENT TO EXECUTE,REGARDLESS OF ITS TIMER.
-
- cALL ADDRESS: $c109
-
- iNPUT REQUIREMENTS:
-
- x tHE INDEX INTO THE COMMAND BYTE TABLE AT $8719.
-
- pREPARATORY ROUTINES: cmdtbl
-
-
-
- dESCRIPTION: tHIS ROUTINE SETS BIT 7 OF A SPECIFIC COMMAND BYTE
-
- IN THE TABLE AT $8719. tHIS SIMULATES THE TIMER HAVING RUN OUT.
-
-
-
-
-
- fUNCTION nAME: falloc
-
- pURPOSE: aLLOCATE ENOUGH SECTORS FOR A FILE.
-
- cALL ADDRESS: $c1fc
-
- iNPUT REQUIREMENTS:
-
- $06-$07 nUMBER OF BYTES TO BE SAVED.
-
- $0a-$0b aDDRESS OF BUFFER FOR TRACK AND SECTOR LIST.
-
- oUTPUT:
-
- bUFFER IS FILLED WITH A SET OF TRACKS AND SECTORS.
-
- eRRORS: sEE aPPENDIX
-
-
-
- dESCRIPTION: gIVEN A BYTE COUNT AND A POINTER TO A BUFFER, THIS
-
- ROUTINE ATTEMPTS TO ALLOCATE ENOUGH SECTORS. tHIS ROUTINE IS
-
- CALLED PRIOR TO SAVING A FILE. tHE TRACK AND SECTOR LIST IS NOT
-
- LIMITED IN LENGTH, AVAILABLE DISK SPACE NOT WITHSTANDING. tHE
-
- LIST IS TERMINATED WITH A TRACK NUMBER OF ZERO AND THE
-
- APPROPRIATE BYTE COUNT IN THE SECTOR LOCATION. nOTE IF AN ERROR
-
- OCCURS DURING THE ALLOCATION, THE SECTORS ALREADY ALLOCATED ARE
-
- NOT FREED UP. eITHER THIS MUST BE DONE OR THE DISK MUST BE
-
- VALIDATED.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-28
-
-
-
-
-
- fUNCTION nAME: faloc2
-
- pURPOSE: aLLOCATE ENOUGH SECTORS FOR A FILE.
-
- cALL ADDRESS: $c24d
-
- iNPUT REQUIREMENTS:
-
- $06-$07 nUMBER OF BYTES TO BE SAVED.
-
- $08 tRACK TO START LOOKING FROM.
-
- $09 sECTOR TO START LOOKING FROM.
-
- $0a-$0b aDDRESS OF BUFFER FOR TRACK AND SECTOR LIST.
-
- oUTPUT:
-
- bUFFER IS FILLED WITH A SET OF TRACKS AND SECTORS.
-
- eRRORS: sEE aPPENDIX
-
-
-
- dESCRIPTION: tHIS ROUTINE IS ALMOST IDENTICAL TO falloc. aS A
-
- MATTER OF FACT, falloc FALLS INTO THIS ROUTINE AFTER SETTING $08-
-
- $09 TO POINT TO TRACK 1 SECTOR 0. tHIS ROUTINE ALLOWS THE USER TO
-
- SPECIFY WHERE ON THE DISK TO START LOOKING FOR FREE SECTORS,
-
- POSSIBLY SPEEDING THINGS UP.
-
-
-
-
-
- fUNCTION nAME: font
-
- pURPOSE: cHANGE THE CURRENT FONT.
-
- cALL ADDRESS: $c1cc
-
- iNPUT REQUIREMENTS:
-
- $02-$03 pOINTER TO FONT HEADER IN MEMORY.
-
- oUTPUT:
-
- $26 # PIXELS ABOVE LINE OF PRINT.
-
- $27-$28 tHE NUMBER OF BYTES IN THE BIT STREAM.
-
- $29 tHE POINT SIZE.
-
- $2a-$2b pOINTER TO THE TABLE OF THE BIT STREAM INDICES.
-
- $2c-$2d pOINTER TO THE BIT STREAM.
-
-
-
- dESCRIPTION: tHIS ROUTINE SIMPLY COPIES THE HEADER BLOCK FROM THE
-
- FONT TO ZERO PAGE. tHIS MAKES THE FONT THE CURRENT FONT FOR ALL
-
- CHARACTER OUTPUT. (sEE dspchr, dsptxt AND dsptx2).
-
-
-
-
-
- fUNCTION nAME: forbid
-
- pURPOSE: dISABLES THE EXECUTION OF A TIMED EVENT.
-
- cALL ADDRESS: $c10c
-
- iNPUT REQUIREMENTS:
-
- x tHE INDEX INTO THE COMMAND TABLE AT $8719.
-
- pREPARATORY ROUTINES: cmdtbl
-
-
-
- dESCRIPTION: tHIS ROUTINE SETS BIT 6 OF A SPECIFIC COMMAND BYTE
-
- IN THE TABLE AT $8719. tHIS PREVENTS THE ASSOCIATED ROUTINE FROM
-
- EXECUTING, REGARDLESS OF ITS TIMER. tHIS DOES not STOP THE TIMER
-
- FROM RUNNING. iF THE TIMER RUNS OUT WHILE THE ROUTINE IS
-
- DISABLED, WHEN THE TIMER IS REENABLED, THE ASSOCIATED ROUTINE
-
- WILL BE EXECUTED. tHIS ROUTINE IS THE COMPLEMENT TO permit.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-29
-
-
-
-
-
- fUNCTION nAME: free
-
- pURPOSE: dEALLOCATES ALL OF A FILE'S SECTORS.
-
- cALL ADDRESS: $c226
-
- iNPUT REQUIREMENTS:
-
- $14-$15 pOINTER TO DIRECTORY ENTRY.
-
- pREPARATORY ROUTINES: lookup (pOINTER MUST BE COPIED).
-
- eRRORS: sEE aPPENDIX i.
-
-
-
- dESCRIPTION: gIVEN THE DIRECTORY ENTRY OF A FILE, ALL OF ITS
-
- SECTORS ARE RETURNED TO THE FREE POOL. tHE DIRECTORY POINTER
-
- SHOULD BE POINTING TO THE DIRECTORY ENTRY AT $8400 AND NOT THE
-
- POINTER RETURNED BY lookup. tHIS IS DUE TO MEMORY CONFLICTS THAT
-
- WILL ARISE. tHIS ROUTINE USES $8000-$82ff FOR ITS BUFFER AREAS.
-
-
-
-
-
- fUNCTION nAME: geosck
-
- pURPOSE: cHECKS IF A DISK IS geos FORMAT OR NOT.
-
- cALL ADDRESS: $c1de
-
- iNPUT REQUIREMENTS:
-
- $0c-$0d pOINTER TO BUFFER WITH TRACK 18 SECTOR 0.
-
- oUTPUT:
-
- z sET IF NON-geos, RESET IF geos FORMAT.
-
- a,$848b $00 IF NON-geos, $ff IF geos FORMAT.
-
-
-
- dESCRIPTION: tHIS ROUTINE EXPECTS THAT TRACK 18 SECTOR 0 HAS
-
- ALREADY BEEN READ. iT COMPARES 11 BYTES, STARTING WITH THE
-
- 173RD, AGAINST 'geos FORMAT'. iT SETS $848b SO THAT THE CURRENT
-
- DRIVE IS KEPT TRACK OF.
-
-
-
-
-
- fUNCTION nAME: getbyt
-
- pURPOSE: rEAD A BYTE FROM A FILE.
-
- cALL ADDRESS: $c2b6
-
- iNPUT REQUIREMENTS:
-
- $0c iNDEX OF LAST BYTE IN BUFFER.
-
- $0d iNDEX TO NEXT CHARACTER IN BUFFER.
-
- $0a-$0b pOINTER TO DISK BUFFER.
-
- oUTPUT:
-
- a cHARACTER THAT WAS READ.
-
- eRRORS: sEE aPPENDIX i.
-
-
-
- dESCRIPTION: tHE INITIAL SECTOR MUST HAVE BEEN READ BECAUSE THE
-
- FIRST TWO BYTES IN THE BUFFER ARE USED TO FIND THE NEXT TRACK AND
-
- SECTOR. bYTES ARE READ FROM THE BUFFER UNTIL THERE ARE NO MORE,
-
- THEN THE NEXT SECTOR IS READ FROM THE DISK. tHIS CAN CONTINUE
-
- UNTIL THE LAST CHARACTER OF THE LAST SECTOR IS READ. aFTER THIS
-
- AN ERROR 11 (eND OF FILE) WILL BE RETURNED.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-30
-
-
-
-
-
- fUNCTION nAME: getin
-
- pURPOSE: gET A KEY FROM THE KEYBOARD.
-
- cALL ADDRESS: $c2a7
-
- oUTPUT:
-
- a cHARACTER OR $00 IF THERE ARE NONE.
-
-
-
- dESCRIPTION: tHIS ROUTINE TAKES A KEY FROM THE KEYBOARD BUFFER,
-
- IF THERE IS ONE. iF THERE ARE NO CHARACTERS IN THE BUFFER, THEN A
-
- ZERO IS RETURNED.
-
-
-
-
-
- fUNCTION nAME: goto
-
- pURPOSE: gET A SPECIFIC vlir CHAIN.
-
- cALL ADDRESS: $c280
-
- iNPUT REQUIREMENTS:
-
- a vlir CHAIN NUMBER.
-
- oUTPUT:
-
- y tRACK OF vlir CHAIN.
-
- $04 tRACK OF vlir CHAIN.
-
- $05 sECTOR OF vlir CHAIN.
-
- $8496 sET TO a.
-
- pREPARATORY ROUTINES: vopen
-
- eRRORS: sEE aPPENDIX i.
-
-
-
- dESCRIPTION: tHIS ROUTINE GETS THE TRACK AND SECTOR OF A SPECIFIC
-
- CHAIN IN THE OPEN vlir FILE. iT DOES NOT CHECK TO SEE IF THE
-
- CHAIN EXISTS (IE. TRACK IS ZERO). iT DOES CHECK IF THIS CHAIN IS
-
- GREATER THAN ZERO AND LESS THAN THE NUMBER OF vlir CHAINS
-
- (lOCATION $8497). vlir CHAINS ARE NUMBERED FROM 0 TO n-1, WHERE n
-
- IS THE NUMBER OF CHAINS.
-
-
-
-
-
- fUNCTION nAME: grphc2
-
- pURPOSE: iDENTICAL TO grphic, BUT WITH INLINE DATA.
-
- cALL ADDRESS: $c1a8
-
-
-
- dESCRIPTION: tHIS ROUTINE TAKES AN INLINE DATA TABLE, CREATES A
-
- POINTER TO IT, THEN CALLS grphic TO PROCESS IT. sEE pfill2 FOR AN
-
- EXAMPLE OF INLINE DATA TABLES.
-
-
-
-
-
- fUNCTION nAME: grphic
-
- pURPOSE: pROCESS SEVERAL GRAPHICS COMMANDS DESIGNATED BY A TABLE.
-
- cALL ADDRESS: $c136
-
- iNPUT REQUIREMENTS:
-
- $02-$03 pOINTER TO THE TABLE OF COMMANDS.
-
-
-
- dESCRIPTION: tHIS ROUTINE EXECUTES THE GRAPHIC COMMANDS PRESENT
-
- IN A TABLE. tHIS ROUTINE IS USED BY dspchr (cONTROL-p),dsptxt (bY
-
- CALLING dspchr), AND window (cOMMAND 15). tHE FOLLOWING TABLE
-
- DESCRIBES THE AVAILABLE COMMANDS.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-31
-
-
-
-
-
- gRAPHIC cOMMAND tABLE
-
-
-
- cOMMAND #bYTES dESCRIPTION
-
- 0 1 sTOP, END OF TABLE.
-
- 1 4 sET COLUMN AND ROW VARIABLES.
-
- 2 4 dRAW A LINE.
-
- 3 4 pATTERN FILL A REGION.
-
- 4 1 nO OPERATION.
-
- 5 2 sET FILL PATTERN.
-
- 6 4+ sET POSITION AND DISPLAY TEXT. must be
-
- LAST COMMAND BECAUSE THE ZERO BYTE THAT
-
- ENDS THE TEXT ALSO ENDS THIS COMMAND
-
- TABLE.
-
- 7 4 dRAW A SOLID LINED BOX.
-
- 8 3 aDD AN OFFSET TO COLUMN VARIABLE.
-
- 9 2 aDD AN OFFSET TO ROW VARIABLE.
-
- 10 4 aDD OFFSETS TO BOTH COLUMN AND ROW
-
- VARIABLES.
-
-
-
- cOMMAND 1 IS USED TO SET THE COLUMN AND ROW VARIABLES USED BY ALL
-
- OF THE OTHER COMMANDS WHICH REQUIRE TWO POINTS. tHE FORMAT OF THE
-
- COMMANDS IS THAT ALL OF THE NECESSARY DATA FOLLOWS THE COMMAND
-
- BYTE. fOR EXAMPLE, THE COMMANDS TO ERASE THE ENTIRE SCREEN WOULD
-
- LOOK LIKE THIS:
-
- .byte $05,$00
-
- .byte $01
-
- .word 0
-
- .byte 0
-
- .byte $03
-
- .word 320
-
- .byte 199
-
- .byte $00
-
- iN THE CASE OF COMMAND 6, AFTER THE COLUMN AND ROW BYTES IN THE
-
- COMMAND COMES THE TEXT THAT IS TO BE DISPLAYED. fOR EXAMPLE:
-
- .byte $06
-
- .word 50
-
- .byte 50
-
- .byte 'hELLO WORLD!'
-
- .byte $00
-
-
-
-
-
- fUNCTION nAME: hline
-
- pURPOSE: dRAWS A HORIZONAL LINE ON THE SCREEN.
-
- cALL ADDRESS: $c118
-
- iNPUT REQUIREMENTS:
-
- a tHE ACTUAL BIT PATTERN FOR THE LINE.
-
- $08-$09 tHE LEFT MARGIN.
-
- $0a-$0b tHE RIGHT MARGIN.
-
- $18 tHE ROW NUMBER.
-
-
-
- dESCRIPTION: tHIS ROUTINE DRAWS A HORIZONTAL LINE ON THE HIRES
-
- SCREEN IN A GIVEN PATTERN. sEE ALSO rowadr.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-32
-
-
-
-
-
- fUNCTION nAME: hole
-
- pURPOSE: fIND A HOLE IN THE DIRECTORY, OR MAKE ONE.
-
- cALL ADDRESS: $c1f6
-
- oUTPUT:
-
- y iNDEX OF HOLE IN BUFFER.
-
- $04 dIRECTORY TRACK NUMBER (sHOULD BE 18).
-
- $05 dIRECTORY SECTOR NUMBER.
-
- $16 # DIRECTORY SECTORS TO SKIP FIRST.
-
- $8000-$80ff bUFFER FOR DIRECTORY SECTOR.
-
-
-
- dESCRIPTION: tHIS ROUTINE SCANS THE DISK'S DIRECTORY LOOKING FOR
-
- A DELETED FILE, BY FIRST SKIPPING A CERTAIN NUMBER OF SECTORS.
-
- tHIS ALLOWS THE USER TO FIND A HOLE IN A GIVEN DIRECTORY PAGE.
-
- iF ONE IS NOT FOUND IN ANY OF THE AVAILABLE DIRECTORY SECTORS,
-
- THEN A NEW SECTOR IS ADDED TO THE DIRECTORY.
-
-
-
-
-
- fUNCTION nAME: indjmp
-
- pURPOSE: cONDITIONAL JUMP.
-
- cALL ADDRESS: $c1d8
-
- iNPUT REQUIREMENTS:
-
- a tHE HIGH BYTE OF THE JUMP VECTOR.
-
- x tHE LOW BYTE OF THE JUMP VECTOR.
-
-
-
- dESCRIPTION: iF a AND x ARE ZERO, THE JUMP IS NOT PERFORMED. iF a
-
- AND x ARE NONZERO, THE JUMP IS PERFORMED.
-
-
-
-
-
- fUNCTION nAME: init01
-
- pURPOSE: pART OF geos'S BOOTUP PROCESS.
-
- cALL ADDRESS: $c271
-
-
-
- dESCRIPTION: iNITIALIZES THE vic CHIP AND THE i/o CHIPS. sOME
-
- GLOBAL MEMORY IS ALSO INITIALIZED. iT ALSO RESETS THE
-
- PREFERENCES AND ALL THE DRIVES. tHE DEFAULT DRIVE IS RESET BY A
-
- CALL TO dsetup.
-
-
-
-
-
- fUNCTION nAME: initdv
-
- pURPOSE: iNITIALIZES A DRIVE.
-
- cALL ADDRESS: $c1e1
-
- iNPUT REQUIREMENTS:
-
- $04 tRACK TO POSITION THE DISK DRIVE HEAD AT.
-
- $05 sECTOR TO POSITION THE DISK DRIVE HEAD AT.
-
- eRRORS: sEE aPPENDIX
-
-
-
- dESCRIPTION: mAKES SURE THAT CURRENT DRIVE HAS TURBODOS RUNNING.
-
- iT ALSO POSITIONS THE HEAD OVER A PARTICULAR SECTOR.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-33
-
-
-
-
-
- fUNCTION nAME: initms
-
- pURPOSE: iNITIALIZES THE MOUSE.
-
- cALL ADDRESS: $c14e
-
- iNPUT REQUIREMENTS:
-
- c FLAG cLEAR IF THE MOUSE POSITION SHOULD NOT BE SET.
-
- c FLAG sET IF THE MOUSE POSITION SHOULD BE SET.
-
- y tHE ROW POSITION FOR THE MOUSE (OPTIONAL).
-
- $18-$19 tHE COLUMN POSITION FOR THE MOUSE (OPTIONAL).
-
-
-
- dESCRIPTION: tHIS ROUTINE TURNS ON THE MOUSE AND POSITIONS IT IF
-
- DESIRED. iF THE COLUMN IS SET TO 0, THE MOUSE IS NOT POSITIONED
-
- EVEN IS THE c FLAG IS SET. iT ALSO SETS UP THE BUTTON PRESSED
-
- VECTOR $84a1-$84a2 AND THE CLOSE MENU VECTOR $84a7-$84a8. iT ALSO
-
- CLEARS THE FLAG AT $84b6. tHIS ROUTINE DOES NOT ACTUALLY TURN ON
-
- THE MOUSE. iT CALLS mouson TO RESET BIT 7 OF LOCATION $30; THIS
-
- WILL CAUSE geos'S INTERRUPT ROUTINES TO TURN ON THE MOUSE.
-
-
-
-
-
- fUNCTION nAME: input
-
- pURPOSE: iNPUT A LINE OF TEXT FROM THE USER.
-
- cALL ADDRESS: $c1ba
-
- iNPUT REQUIREMENTS:
-
- $02-$03 aDDRESS OF TEXT AND BUFFER.
-
- $04 fLAG BYTE ($87d3).
-
- $05 rOW TO PRINT TEXT ON (1 ABOVE THE UNDERLINE).
-
- $06 mAXIMUM LENGTH OF INPUT.
-
- $0a-$0b vECTOR FOR USER ROUTINE FOR RIGHT MARGIN EXCEEDED
-
- (OPTIONAL).
-
- $18-$19 cOLUMN TO START PRINTING TEXT AT.
-
- $84a3-$84a4 aDDRESS FOR cr ENTERED.
-
- oUTPUT:
-
- $24-$25 pOINTER TO TEXT BUFFER (COPIED FROM $02-$03).
-
- bUFFER WILL BE MODIFIED ACCORDING TO THE USER'S INPUT.
-
- $84a3-$84a4 cLEARED TO $0000.
-
-
-
- dESCRIPTION: tHIS ROUTINE IS RATHER POWERFUL. iT DISPLAYS A LINE
-
- OF TEXT, IF THERE WAS ANY TEXT TO DISPLAY. tHEN THE TEXT CURSOR
-
- IS TURNED ON. sEVERAL OF THE JUMP VECTORS ARE USED.
-
- $84ab-$84ac IS THE VECTOR FOR THE RIGHT MARGIN BEING EXCEEDED.
-
- $84a9-$84aa IS THE VECTOR FOR A CHARACTER BEING TYPED. $84a3-
-
- $84a4 IS THE VECTOR FOR cr ENTERED. aFTER EVERYTHING IS SET UP,
-
- CONTROL RETURNS TO THE CALLER; HOWEVER, THE INPUT IS HANDLED BY
-
- THE INTERRUPT DRIVERS. wHEN A cr IS ENTERED, CONTROL GOES THROUGH
-
- THE VECTOR AT $84a3-$84a4. tHE FLAG BYTE AT LOCATION $04 IS
-
- COPIED TO $87d3 AND HAS THE FOLLOWING PROPERTY: iF BIT 7 IS SET,
-
- THEN USE THE USER'S ROUTINE WHOSE ADDRESS IS STORED AT LOCATIONS
-
- $0a-$0b FOR THE RIGHT MARGIN IS EXCEEDED ROUTINE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-34
-
-
-
-
-
- fUNCTION nAME: insert
-
- pURPOSE: iNSERT A NEW CHAIN IN A vlir FILE.
-
- cALL ADDRESS: $c286
-
- iNPUT REQUIREMENTS:
-
- $8496 cURRENT CHAIN NUMBER.
-
- oUTPUT:
-
- $8497 iNCREMENTED BY 1.
-
- pREPARATORY ROUTINES: vopen
-
- eRRORS: sEE aPPENDIX i.
-
-
-
- dESCRIPTION: a HOLE IS OPENED UP IN THE vlir SECTOR STARTING WITH
-
- THE CURRENT CHAIN. tHE HOLE IS FILLED WITH $00,$ff. tHIS
-
- REPRESENTS A NULL CHAIN.
-
-
-
-
-
- fUNCTION nAME: intbm
-
- pURPOSE: iNTELLIGENT BLOCK MOVE.
-
- cALL ADDRESS: $c17e
-
- iNPUT REQUIREMENTS:
-
- $02-$03 tHE SOURCE ADDRESS.
-
- $04-$05 tHE DESTINATION ADDRESS.
-
- $06-$07 tHE LENGTH OF THE REGION TO BE MOVED.
-
-
-
- dESCRIPTION: tHIS ROUTINE WILL PERFORM AN INTELLIGENT, IE.
-
- NONCONFLICTING, BLOCK MOVE OF MEMORY. iF AN ATTEMPT IS MADE TO
-
- MOVE A BLOCK OF MEMORY TO A DESTINATION THAT IS WITHIN THE BLOCK,
-
- THE TRANSFER IS DONE FROM BACK TO FRONT SO AS TO PREVENT THE
-
- CONFLICT, OR 'RIPPLE EFFECT'.
-
-
-
-
-
- fUNCTION nAME: intbm2
-
- pURPOSE: iDENTICAL TO intbm, BUT WITH INLINE DATA.
-
- cALL ADDRESS: $c1b7
-
-
-
- dESCRIPTION: tHIS ROUTINE USES THE INLINE DATA TO SET EVERYTHING
-
- UP BEFORE CALLING intbm. fOR EXAMPLE:
-
- jsr intbm2
-
- .word sOURCE ADDRESS
-
- .word dESTINATION ADDRESS
-
- .word lENGTH OF TRANSFER
-
- cONTROL RETURNS HERE UPON COMPLETION.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-35
-
-
-
-
-
- fUNCTION nAME: inuse
-
- pURPOSE: cHECK IF A DISK SECTOR IS IN USE.
-
- cALL ADDRESS: $c2ad
-
- iNPUT REQUIREMENTS:
-
- $0e tRACK TO BE CHECKED.
-
- $0f sECTOR TO BE CHECKED.
-
- $8200-$82ff tRACK 18 SECTOR 0, bam BUFFER.
-
- oUTPUT:
-
- x iNDEX INTO bam OF THE APPROPRIATE BYTE.
-
- z FLAG sET IF THE SECTOR IS IN USE.
-
- $11 iNDEX TO TRACK'S DATA IN bam.
-
- $13 bIT MASK FOR THE DESIRED SECTOR.
-
- pREPARATORY ROUTINES: rd180
-
-
-
- dESCRIPTION: tHIS ROUTINE IS USED BY alloc TO TEST IF A SECTOR IS
-
- ALREADY IN USE.
-
-
-
-
-
- fUNCTION nAME: invbox
-
- pURPOSE: iNVERTS THE PIXELS IN A BOX.
-
- cALL ADDRESS: $c12a
-
- iNPUT REQUIREMENTS:
-
- $06 tHE TOP MARGIN.
-
- $07 tHE BOTTOM MARGIN.
-
- $08-$09 tHE LEFT MARGIN.
-
- $0a-$0b tHE RIGHT MARGIN.
-
-
-
- dESCRIPTION: tHIS ROUTINE REVERSES THE PIXELS IN A GIVEN BOX BY
-
- REPEATEDLY CALLING invlin. sEE ALSO rowadr.
-
-
-
-
-
- fUNCTION nAME: invlin
-
- pURPOSE: iNVERTS A HORIZONAL LINE ON THE SCREEN.
-
- cALL ADDRESS: $c11b
-
- iNPUT REQUIREMENTS:
-
- $08-$09 tHE LEFT MARGIN.
-
- $0a-$0b tHE RIGHT MARGIN.
-
- $18 tHE ROW NUMBER.
-
-
-
- dESCRIPTION: tHIS ROUTINE REVERSES THE PIXELS ON A HORIZONTAL
-
- LINE ON THE HIRES SCREEN. iF THE PIXEL WAS ON IT WILL NOW BE OFF;
-
- IF IT WAS OFF IT WILL NOW BE TURNED ON. sEE ALSO rowadr.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-36
-
-
-
-
-
- fUNCTION nAME: irqrtn
-
- pURPOSE: hANDLES SEVERAL ITEMS THAT OCCUR AT REGULAR TIMED
-
- INTERVALS.
-
- cALL ADDRESS: $c100
-
- oUTPUTS: sEE DESCRIPTION
-
-
-
- dESCRIPTION: geos SETS UP THE RASTER INTERRUPT ON THE vic CHIP TO
-
- CAUSE AN INTERRUPT EVERY SIXTIETH OF A SECOND. tHIS ROUTINE IS
-
- CALLED BY geos AFTER EACH INTERRUPT. fIRST IT READS THE INPUT
-
- DEVICE AND UPDATES THE MOUSE'S POSITION, TURNING IT ON IF
-
- NECESSARY. iT THEN SCANS THE COMMAND TABLE AT $8719 TO SEE IF ANY
-
- OF THE COMMAND BYTES HAVE BOTH BITS 4 AND 5 RESET. iF SO, IT THEN
-
- DECREMENTS THE ASSOCIATED COUNTER AT $86f1. iF THE COUNTER
-
- REACHES ZERO, ITS VALUE IS RESET AND BIT 7 OF THE ASSOCIATED
-
- COMMAND BYTE IS SET. tHIS WILL CAUSE THE APPROPRIATE SUBROUTINE
-
- TO BE EXECUTED THE NEXT TIME THE TABLE IS POLLED. tHE NEXT PART
-
- OF THIS ROUTINE IS TO DECREMENT ALL NONZERO COUNTERS IN THE STACK
-
- AT $877f. tHE ROUTINE TO BLINK THE TEXT CURSOR IS CALLED NEXT.
-
- fINALLY, THE RANDOM NUMBER GENERATOR AT $850a IS UPDATED.
-
-
-
-
-
- fUNCTION nAME: lchain
-
- pURPOSE: lOAD MEMORY FROM DISK.
-
- cALL ADDRESS: $c1ff
-
- iNPUT REQUIREMENTS:
-
- $04 iNITIAL TRACK NUMBER.
-
- $05 iNITIAL SECTOR NUMBER.
-
- $06-$07 bYTE COUNT OF LOAD.
-
- $10-$11 lOAD ADDRESS.
-
- oUTPUT:
-
- $0c iNDEX TO LAST SECTOR LOADED.
-
- $8300- lIST OF TRACKS AND SECTORS TRACK WERE LOADED.
-
- pREPARATORY ROUTINES: loadad
-
- eRRORS: sEE aPPENDIX i.
-
-
-
- dESCRIPTION: tHIS ROUTINE ASSUMES THAT THE FILE HAS BEEN LOCATED
-
- IN THE DIRECTORY AND THAT THE INITIAL TRACK AND SECTOR ARE KNOWN.
-
-
-
-
-
- fUNCTION nAME: ldswap
-
- pURPOSE: rELOAD THE swapfile.
-
- cALL ADDRESS: $c23e
-
- pREPARATORY ROUTINES: loadsw
-
- eRRORS: sEE aPPENDIX i.
-
-
-
- dESCRIPTION: tHIS ROUTINE RELOADS THE swapfile, THEN DELETES IT.
-
- tHE LAST WINDOW DESCRIPTION IS REPROCESSED TO RESTORE THE SCREEN
-
- AND CONTROL IS RETURNED TO THE ORIGINAL PROGRAM THAT CALLED
-
- loadsw.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-37
-
-
-
-
-
- fUNCTION nAME: line
-
- pURPOSE: dRAWS, ERASES OR COPIES A LINE ON THE HIRES SCREEN.
-
- cALL ADDRESS: $c130
-
- iNPUT REQUIREMENTS:
-
- n FLAG c fLAG oPERATION
-
- 1 x cOPY
-
- 0 1 dRAW
-
- 0 0 eRASE
-
- $08-$09 tHE COLUMN FOR THE FIRST ENDPOINT.
-
- $0a-$0b tHE COLUMN FOR THE SECOND ENDPOINT.
-
- $18 tHE ROW FOR THE FIRST ENDPOINT.
-
- $19 tHE ROW FOR THE SECOND ENDPOINT.
-
-
-
- dESCRIPTION: tHIS IS A VERY VERSATILE ROUTINE. iT CAN COPY AN
-
- ARBITRARY LINE FROM ONE SCREEN TO ANOTHER, AS WELL AS DRAW OR
-
- ERASE LINES. tHIS ROUTINE PLACES NO RESTRICTIONS ON THE RELATIVE
-
- POSITIONS OF THE ENDPOINTS. tHIS ROUTINE CALLS plot TO PLOT THE
-
- POINTS. sEE ALSO rowadr.
-
-
-
-
-
- fUNCTION nAME: load
-
- pURPOSE: lOAD AND RUN A FILE.
-
- cALL ADDRESS: $c208
-
- iNPUT REQUIREMENTS:
-
- $02 fLAG BYTE (sEE DESCRIPTION).
-
- $06-$07 oPTIONAL DATA POINTER.
-
- $08-$09 oPTIONAL DATA POINTER.
-
- $0e-$0f pOINTER TO FILENAME.
-
- $10-$11 lOAD ADDRESS (OPTIONAL).
-
- oUTPUT:
-
- $8100-$81ff iNFO SECTOR FOR FILE.
-
- $8300-$83ff tABLE OF TRACKS AND SECTORS THAT WERE LOADED.
-
- eRRORS: sEE aPPENDIX
-
-
-
- dESCRIPTION: tHIS ROUTINE LOADS AND RUNS A GIVEN FILE. tHE FILE
-
- MUST BE ONE OF THE FOLLOWING geos TYPES:
-
- sYSTEM fILE dESK aCCESSORY
-
- aPPLICATION aPPLICATION dATA
-
- pRINTER dRIVER iNPUT dRIVER
-
- tHE EXECUTION ADDRESS IS TAKEN FROM THE INFORMATION SECTOR. iF IT
-
- IS ZERO, THE FILE IS NOT EXECUTED, ONLY LOADED. vlir FILES HAVE
-
- ONLY THEIR FIRST CHAIN LOADED. dESK aCCESSORIES SWAP OUT THE
-
- MEMORY THAT THEY USE TO THE swapfile. uPON COMPLETION, THE
-
- swapfile IS RELOADED. tHE FLAG BYTE AT LOCATION $02 HAS TWO
-
- PURPOSES. tHIS FIRST IS IF BIT 0 IS SET AND THE FILE WAS AN
-
- APPLICATION, THEN IT IS NOT EXECUTED. aLSO IF BIT 0 IS SET, THEN
-
- LOCATIONS $10-$11 HAVE THE LOAD ADDRESS; OTHERWISE, THE LOAD
-
- ADDRESS IS TAKEN FROM THE INFORMATION SECTOR. tHIS BIT DOES NOT
-
- APPLY TO dESK aCCESSORIES. iF EITHER BIT 6 OR 7 ARE SET, THEN
-
- $06-$07 POINTS TO 16 BYTES WHICH ARE COPIED TO $8453 (dISK NAME
-
- FOR DRIVE 10), AND $07-$08 POINT TO 16 BYTES WHICH ARE COPIED TO
-
- $8442 (dISK NAME FOR DRIVE 11).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-38
-
-
-
-
-
- fUNCTION nAME: load2
-
- pURPOSE: lOAD A FILE.
-
- cALL ADDRESS: $c211
-
- iNPUT REQUIREMENTS:
-
- $14-$15 pOINTER TO DIRECTORY ENTRY.
-
- $886b fLAG BYTE.
-
- $886c-$886d lOAD ADDRESS.
-
- oUTPUT:
-
- $8100-$81ff iNFO SECTOR FOR FILE.
-
- $8300-$83ff tABLE OF TRACKS AND SECTORS THAT WERE LOADED.
-
- pREPARATORY ROUTINES: lookup (pOINTER MUST BE COPIED)
-
- eRRORS: sEE aPPENDIX
-
-
-
- dESCRIPTION: tHIS ROUTINE IS CALLED BY load TO PERFORM THE LOAD.
-
- tHIS ROUTINE DOES NOT TRY TO EXECUTE THE FILE LOADED, NOR IS IT
-
- LIMITED TO THE FILE TYPES THAT load IS. hOWEVER, THIS ROUTINE CAN
-
- NOT BE USED TO LOAD nON-geos FILES BECAUSE THE INFO SECTOR MUST
-
- BE PRESENT. iF BIT 0 OF LOCATION $886b IS SET, THEN THE LOAD
-
- ADDRESS IS TAKEN FROM LOCATIONS $886c-$886d INSTEAD OF THE INFO
-
- SECTOR. tHE DIRECTORY ENTRY POINTER SHOULD POINT TO $8400 AND
-
- NOT THE POINTER RETURNED BY lookup. tHIS IS DUE TO MEMORY
-
- CONFLICTS THAT WILL ARISE.
-
-
-
-
-
- fUNCTION nAME: load3
-
- pURPOSE: lOAD AND POSSIBLY RUN A FILE.
-
- cALL ADDRESS: $c21d
-
- $02 fLAG BYTE (sEE DESCRIPTION).
-
- $06-$07 oPTIONAL DATA POINTER.
-
- $08-$09 oPTIONAL DATA POINTER.
-
- $0e-$0f pOINTER TO FILENAME.
-
- $10-$11 lOAD ADDRESS (OPTIONAL).
-
- oUTPUT:
-
- $8100-$81ff iNFO SECTOR FOR FILE.
-
- $8300-$83ff tABLE OF TRACKS AND SECTORS THAT WERE LOADED.
-
- eRRORS: sEE aPPENDIX
-
-
-
- dESCRIPTION: tHIS ROUTINE IS CALLED BY load TO LOAD aPPLICATION
-
- FILES. lIKE load2, THIS ROUTINE IS NOT LIMITED TO ANY PARTICULAR
-
- FILE TYPE, EXCEPT THAT IT ALSO CAN NOT LOAD A nON-geos FILE. sEE
-
- load FOR A DESCRIPTION OF THE FLAG BYTE, DATA POINTERS AND LOAD
-
- ADDRESS.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-39
-
-
-
-
-
- fUNCTION nAME: loadad
-
- pURPOSE: gET THE LOAD ADDRESS OF A FILE.
-
- cALL ADDRESS: $c229
-
- iNPUT REQUIREMENTS:
-
- $14-$15 pOINTER TO DIRECTORY ENTRY.
-
- oUTPUT:
-
- $04 tRACK OF FILE'S FIRST SECTOR.
-
- $05 sECTOR OF FILE'S FIRST SECTOR.
-
- $10-$11 lOAD ADDRESS FOR FILE.
-
- $8100-$81ff iNFO SECTOR FOR FILE.
-
- $8300-$8301 tRACK AND SECTOR OF INFO SECTOR.
-
- eRRORS: sEE aPPENDIX i.
-
-
-
- dESCRIPTION: tHIS ROUTINE LOADS THE INFO SECTOR FOR A FILE INTO
-
- THE BUFFER AT $8100. tHE LOAD ADDRESS IS SET FROM $8147-$8148.
-
- tHIS ROUTINE IS CALLED BY ALL THE LOAD ROUTINES.
-
-
-
-
-
- fUNCTION nAME: loadsw
-
- pURPOSE: lOAD AND RUN A FILE USING THE swapfile.
-
- cALL ADDRESS: $c217
-
- iNPUT REQUIREMENTS:
-
- $14-$15 pOINTER TO DIRECTORY ENTRY.
-
- oUTPUT:
-
- $8100-$81ff iNFO SECTOR FOR FILE (mODIFIED).
-
- $8300-$83ff lIST OF TRACKS AND SECTORS THAT WERE LOADED.
-
- pREPARATORY ROUTINES: lookup (pOINTER MUST BE COPIED).
-
- eRRORS: sEE aPPENDIX i.
-
-
-
- dESCRIPTION: tHIS ROUTINE IS USED TO LOAD dESK aCCESSORIES. tHE
-
- INFO SECTOR IS LOADED TO DETERMINE THE NECESSARY MEMORY REGION.
-
- tHIS REGION IS SAVED TO A FILE CALLED 'swapfile', WHOSE INFO
-
- SECTOR IS THE SAME AS THE FILE TO BE LOADED. tHE DIFFERENCE IS
-
- THAT THE TEXT FIELD IS CLEARED, AND THE FILE TYPE IS sYSTEM FILE
-
- (tYPE 4). ldswap MUST BE EVENTUALLY CALLED TO RELOAD THE swapfile
-
- AND RETURN TO NORMAL OPERATION. tHE DIRECTORY ENTRY POINTER
-
- SHOULD POINT TO $8400, AND THE POINTER RETURNED BY lookup. tHIS
-
- IS DUE TO MEMORY CONFLICTS THAT WILL ARISE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-40
-
-
-
-
-
- fUNCTION nAME: lookup
-
- pROCEDURE: lOOKUP A FILENAME IN THE DIRECTORY.
-
- cALL ADDRESS: $c20b
-
- iNPUT REQUIREMENTS:
-
- $0e-$0f pOINTER TO FILENAME.
-
- $886e fLAG BYTE.
-
- oUTPUT:
-
- $04 tRACK FOR DIRECTORY SECTOR.
-
- $05 sECTOR FOR DIRECTORY SECTOR.
-
- $0c-$0d pOINTER TO FILE NAME ENTRY.
-
- $8000-$80ff dIRECTORY SECTOR.
-
- $8400-$841d cOPY OF DIRECTORY ENTRY.
-
- eRRORS: sEE aPPENDIX
-
-
-
- dESCRIPTION: tHIS IS A VERY USEFUL ROUTINE. gIVEN A TEXT STRING
-
- OF A FILENAME, THIS ROUTINE WILL FIND IT IN THE DIRECTORY. iF THE
-
- FLAG BYTE AT $886e IS $00, THEN BOTH DRIVES 8 AND 9 WILL BE
-
- SCANNED IF NECESSARY. iF THE FLAG IS $ff, THEN THE LOOKUP IS ONLY
-
- TO THE CURRENT DRIVE. iF THERE IS ONLY ONE DRIVE, THEN THIS FLAG
-
- HAS NO EFFECT. tHE DIRECTORY SECTOR IS LOADED INTO A BUFFER AT
-
- $8000, AND THE TRACK AND SECTOR ARE IN LOCATIONS $04 AND $05. tHE
-
- PARTICULAR DIRECTORY ENTRY IS COPIED TO $8400 AND THE POINTER TO
-
- THE ENTRY IN THE BUFFER IS STORED AT $0c-$0d.
-
-
-
-
-
- fUNCTION nAME: main
-
- pURPOSE: eNTERS geos'S MAIN LOOP.
-
- cALL ADDRESS: $c1c3
-
- iNPUT REQUIREMENTS:
-
- $849b-$849C aDDRESS OF USER'S ADDITION TO geos'S MAIN LOOP
-
- (OPTIONAL).
-
-
-
- dESCRIPTION: tHIS LOOP DOES WHATEVER POLLING IS NEEDED. fIRST THE
-
- BUTTON IS CHECKED, AS WELL AS THE KEYBOARD AND THE MOUSE'S
-
- POSITION. tHE COMMAND TABLE AT $8719 (sEE cmdtbl) IS SCANNED FOR
-
- EXECUTABLE ROUTINES. tHEN THE COUNTERS AT $877f (sEE delay) ARE
-
- CHECKED; THOSE THAT HAVE REACHED ZERO HAVE THEIR ASSOCIATED
-
- ROUTINES EXECUTED. tHE MEMORY IMAGE OF THE CLOCK IS UPDATED. tHEN
-
- THE ALARM CLOCK IS CHECKED. fINALLY, THE USER'S ADDITION TO THE
-
- MAIN LOOP, IF THERE IS ONE, IS EXECUTED. tHIS LOOP CONTINUES
-
- FOREVER.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-41
-
-
-
-
-
- fUNCTION nAME: makcur
-
- pURPOSE: mAKES A VERTICAL BAR CURSOR SPRITE.
-
- cALL ADDRESS: $c1c0
-
- iNPUT REQUIREMENTS:
-
- a tHE HEIGHT OF THE CURSOR MINUS 1 (0-41)
-
- oUTPUT:
-
- sPRITE BLOCK #41 ($8a40-$8a7e) IS MADE INTO A VERTICAL BAR
-
- OF A GIVEN HEIGHT.
-
-
-
- dESCRIPTION: gIVEN THE DESIRED HEIGHT, A VERTICAL BAR IS CREATED
-
- IN THE SPRITE BLOCK. iF THE HEIGHT IS GREATER THAN 21, THEN THE
-
- HEIGHT IS HALVED AND THE SPRITE IS y-EXPANDED. nO CHECK IS
-
- PERFORMED ON THE HEIGHT. iF A HEIGHT GREATER THAN 41 IS USED THEN
-
- THE MEMORY FOR NEXT FEW SPRITES WILL BE AFFECTED.
-
-
-
-
-
- fUNCTION nAME: masl
-
- pURPOSE: 16 BIT MULTIPLE ARITHMETIC SHIFT LEFTS.
-
- cALL ADDRESS: $c15d
-
- iNPUT REQUIREMENTS:
-
- y tHE SHIFT COUNT.
-
- x tHE ADDRESS OF THE 16 BIT VALUE TO BE SHIFTED.
-
- oUTPUT:
-
- x rESULT OF SHIFTS.
-
-
-
- dESCRIPTION: tHIS ROUTINE IS ONE OF THE geos MATH ROUTINES. x HAS
-
- THE ADDRESS OF A 16 BIT INTEGER IN ZERO PAGE, WHICH IS TO BE
-
- SHIFTED LEFT BY THE COUNT IN y.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-42
-
-
-
-
-
- fUNCTION nAME: menu
-
- pURPOSE: dRAWS AND SETS EVERYTHING UP FOR PULL DOWN MENUS AND
-
- SUBMENUS.
-
- cALL ADDRESS: $c151
-
- iNPUT REQUIREMENTS:
-
- a mENU OPTION TO POSITION MOUSE ON (0 TO #OPTIONS-1)
-
- $02-$03 pOINTER TO THE MENU DESCRIPTOR.
-
-
-
- dESCRIPTION: tHIS IS AN extremely POWERFUL ROUTINE. iT DOES
-
- everything FOR MENU PROCESSING. oNCE CONTROL RETURNS TO THE
-
- PROGRAM THAT CREATED THE MENU, THE PROGRAM CAN RETURN TO THE geos
-
- MAIN LINE, OR DO ANYTHING ELSE. iT IS IMPORTANT TO NOTE THAT
-
- MENUS ONLY APPEAR ON SCREEN 1. lOCATION $2f IS SAVED AND RESTORED
-
- DURING THE DRAWING PHASE. tHE LEFT AND RIGHT MARGINS ARE ALSO
-
- LEFT UNALTERED. tHE FOLLOWING IS A DESCRIPTION OF A MENU
-
- DESCRIPTOR:
-
- #BYTES dESCRIPTION
-
- 1 tOP MARGIN OF ENTIRE MENU.
-
- 1 bOTTOM MARGIN OF ENTIRE MENU.
-
- 2 lEFT MARGIN OF ENTIRE MENU.
-
- 2 rIGHT MARGIN OF ENTIRE MENU.
-
- 1 cODE BYTE:
-
- BIT 7 - VERTICAL MENU.
-
- BIT 6 - SET SECONDARY BOX DESCRIPTOR TO FULL
-
- SCREEN; THIS ALLOWS THE MOUSE TO BE MOVED
-
- OUTSIDE OF A MENU WITHOUT CAUSING IT TO
-
- BE CLOSED.
-
- BITS 0-4 - # ENTRIES IN MENU.
-
- tHIS IS FOLLOWED BY SETS OF 5 BYTES; AS MANY AS THERE ARE
-
- ENTRIES.
-
- 2 aDDRESS OF THE TEXT FOR THIS OPTION.
-
- 1 cODE BYTE WHICH DESCRIBES WHAT TO DO WITH THE
-
- ADDRESS THAT FOLLOWS:
-
- BIT 7 - OPERAND IS THE ADDRESS OF A SUBMENU
-
- DESCRIPTOR.
-
- BIT 6 - CALL SUBROUTINE, IT MUST RETURN A RESULT
-
- IN $02-$03 WHICH IS EITHER 0 OR THE
-
- ADDRESS OF THE NEXT SUBMENU.
-
- iF NEITHER BIT IS SET, THEN WHEN THIS OPTION IS
-
- SELECTED IT WILL FLASH BEFORE THE ROUTINE IS
-
- EXECUTED. cONTROL DOES NOT RETURN TO THE MENU
-
- PROCESSOR.
-
- 2 aDDRESS OF EITHER A SUBMENU DESCRIPTOR OR A
-
- ROUTINE TO BE EXECUTED.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-43
-
-
-
-
-
- fUNCTION nAME: mlsr
-
- pURPOSE: 16 BIT MULTIPLE LOGICAL SHIFT RIGHTS.
-
- cALL ADDRESS: $c262
-
- iNPUT REQUIREMENTS:
-
- y tHE SHIFT COUNT.
-
- x tHE ADDRESS OF THE 16 BIT VALUE TO BE SHIFTED.
-
- oUTPUT:
-
- x rESULT OF SHIFTS.
-
-
-
- dESCRIPTION: tHIS ROUTINE IS ONE OF THE geos MATH ROUTINES. x HAS
-
- THE ADDRESS OF A 16 BIT INTEGER IN ZERO PAGE, WHICH IS TO BE
-
- SHIFTED RIGHT BY THE COUNT IN y.
-
-
-
-
-
- fUNCTION nAME: mousof
-
- pURPOSE: tURNS OFF THE MOUSE.
-
- cALL ADDRESS: $c18d
-
-
-
- dESCRIPTION: tHIS ROUTINE RESETS BIT 7 OF LOCATION $30, AND
-
- ACTUALLY TURNS OFF THE MOUSE SPRITE.
-
-
-
-
-
- fUNCTION nAME: mouson
-
- pURPOSE: tURNS ON THE MOUSE.
-
- cALL ADDRESS: $c18a
-
-
-
- dESCRIPTION: tHIS ROUTINE SETS BIT 7 OF LOCATION $30. tHE
-
- INTERRUPT ROUTINES WILL TURN ON THE MOUSE WHEN IT TRIES TO UPDATE
-
- ITS POSITION.
-
-
-
-
-
- fUNCTION nAME: neg16
-
- pURPOSE: nEGATES A 16 BIT VALUE.
-
- cALL ADDRESS: $c172
-
- iNPUT REQUIREMENTS:
-
- x tHE ADDRESS OF THE 16 BIT INTEGER
-
- oUTPUT:
-
- x tHE ADDRESS OF THE 16 BIT RESULT.
-
-
-
- dESCRIPTION: tHIS ROUTINE IS ONE OF THE geos MATH ROUTINES. x
-
- POINTS TO A 16 BIT VALUE WHICH IS NEGATED. tHE VALUE OF x IS NOT
-
- AFFECTED.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-44
-
-
-
-
-
- fUNCTION nAME: next
-
- pURPOSE: mOVE TO NEXT vlir CHAIN.
-
- cALL ADDRESS: $c27a
-
- oUTPUT:
-
- y tRACK OF vlir CHAIN.
-
- $04 tRACK OF vlir CHAIN.
-
- $05 sECTOR OF vlir CHAIN.
-
- $8496 iNCREMENTED BY 1.
-
- pREPARATORY ROUTINES: vopen
-
- eRRORS: sEE aPPENDIX i.
-
-
-
- dESCRIPTION: tHIS ROUTINE GETS THE TRACK AND SECTOR OF THE NEXT
-
- CHAIN IN THE OPEN vlir FILE. iT DOES NOT CHECK TO SEE IF THE
-
- CHAIN EXISTS (IE. TRACK IS ZERO). iT DOES CHECK IF THIS CHAIN IS
-
- IN RANGE (AGAINST $8497).
-
-
-
-
-
- fUNCTION nAME: numblk
-
- pURPOSE: cOUNTS THE NUMBER OF FREE BLOCKS IN THE bam THAT IS IN
-
- ram.
-
- cALL ADDRESS: $c1db
-
- iNPUT REQUIREMENTS:
-
- $0c-$0d pOINTER TO BUFFER WITH TRACK 18 SECTOR 0.
-
- oUTPUT:
-
- $0a-$0b tHE NUMBER OF FREE BLOCKS.
-
- pREPARATORY ROUTINES: rd180
-
-
-
- dESCRIPTION: tHIS ROUTINE EXPECTS THAT THE bam HAS ALREADY BEEN
-
- READ INTO MEMORY. aLL THAT IT DOES IS ADD UP THE NUMBER OF FREE
-
- BLOCKS IN EACH TRACK.
-
-
-
-
-
- fUNCTION nAME: opndsk
-
- pURPOSE: oPENS A DISK TO geos.
-
- cALL ADDRESS: $c2a1
-
- iNPUT REQUIREMENTS:
-
- $8489 cURRENT DRIVE NUMBER.
-
- oUTPUT:
-
- $848b $00/$ff gEOS FORMAT OR NOT.
-
- $841e-$8465 aPPROPRIATE BUFFER WILL HAVE DISK'S NAME.
-
- eRRORS: sEE aPPENDIX i.
-
-
-
- dESCRIPTION: tHE CURRENT DRIVE IS INITIALIZED BY CALLING initdv.
-
- geos FORMAT IS CHECKED FOR, AND THE DISK'S NAME IS COPIED INTO
-
- THE APPROPRIATE BUFFER AT $841e-$8465.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-45
-
-
-
-
-
- fUNCTION nAME: opnser
-
- pURPOSE: oPEN SERIAL COMMUNICATION.
-
- cALL ADDRESS: $c25c
-
- eRRORS: sEE aPPENDIX i.
-
-
-
- dESCRIPTION: tHIS ROUTINE SETS UP THE i/o PORTS FOR HIGH SPEED
-
- SERIAL COMMUNICATION WITH THE DISK DRIVES. tHIS ROUTINE IS CALLED
-
- PRIOR TO CALLING read2, write2 OR cwrite.
-
-
-
-
-
- fUNCTION nAME: pbox
-
- pURPOSE: dRAWS THE OUTLINE OF A RECTANGULAR BOX IN A GIVEN
-
- PATTERN.
-
- cALL ADDRESS: $c127
-
- iNPUT REQUIREMENTS:
-
- a tHE ACTUAL BIT PATTERN FOR THE BOX.
-
- $06 tHE TOP MARGIN.
-
- $07 tHE BOTTOM MARGIN.
-
- $08-$09 tHE LEFT MARGIN.
-
- $0a-$0b tHE RIGHT MARGIN.
-
-
-
- dESCRIPTION: tHIS ROUTINE DRAWS THE OUTLINE OF A RECTANGULAR BOX
-
- IN A GIVEN PATTERN. tHIS ROUTINE CALLS hline AND vline TO DRAW
-
- THE OUTLINE. sEE ALSO rowadr.
-
-
-
-
-
- fUNCTION nAME: pbox2
-
- pURPOSE: iDENTICAL TO pbox, BUT WITH INLINE DATA.
-
- cALL ADDRESS: $c1a2
-
-
-
- dESCRIPTION: tHIS ROUTINE DRAWS A SOLID OUTLINE OF A BOX, WHICH
-
- IS DESCRIBED BY INLINE CODE. sEE pfill2 FOR AN EXAMPLE.
-
-
-
-
-
- fUNCTION nAME: permit
-
- pURPOSE: eNABLES THE EXECUTION OF A TIMED EVENT.
-
- cALL ADDRESS: $c10f
-
- iNPUT REQUIREMENTS:
-
- x tHE INDEX INTO THE COMMAND TABLE AT $8719.
-
- pREPARATORY ROUTINES: cmdtbl
-
-
-
- dESCRIPTION: tHIS ROUTINE RESETS BIT 6 OF A SPECIFIC COMMAND BYTE
-
- IN THE TABLE AT $8719. tHIS ALLOWS THE ASSOCIATED ROUTINE TO BE
-
- EXECUTED WHEN ITS TIMER RUNS OUT. iF THE TIMER HAD RUN OUT WHILE
-
- THE ROUTINE WAS DISABLED, geos WILL EXECUTE THE ROUTINE WHEN IT
-
- GETS TO IT. tHIS IS THE COMPLEMENT TO forbid.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-46
-
-
-
-
-
- fUNCTION nAME: pfill
-
- pURPOSE: fILLS A RECTANGULAR BOX WITH A SELECTED DESIGN.
-
- cALL ADDRESS: $c124
-
- iNPUT REQUIREMENTS:
-
- $06 tHE TOP MARGIN.
-
- $07 tHE BOTTOM MARGIN.
-
- $08-$09 tHE LEFT MARGIN.
-
- $0a-$0b tHE RIGHT MARGIN.
-
- pREPARATORY ROUTINES: setpat
-
-
-
- dESCRIPTION: tHIS ROUTINE FILLS A RECTANGULAR BOX IN A GIVEN
-
- DESIGN. tHIS ROUTINE CALLS hline REPEATEDLY. sEE ALSO rowadr.
-
-
-
-
-
- fUNCTION nAME: pfill2
-
- pURPOSE: iDENTICAL TO pfill, BUT WITH INLINE DATA.
-
- cALL ADDRESS: $c19f
-
- pREPARATORY ROUTINES: setpat
-
-
-
- dESCRIPTION: tHIS ROUTINE IS IDENTICAL TO pfill EXCEPT THAT DATA
-
- THAT DESCRIBES THE BOX IS PART OF THE INLINE CODE. fOR EXAMPLE:
-
- jsr pfill2
-
- .byte tOP MARGIN
-
- .byte bOTTOM MARGIN
-
- .word lEFT MARGIN
-
- .word rIGHT MARGIN
-
- cONTROL RETURNS HERE AFTER BOX IS FILLED.
-
-
-
-
-
- fUNCTION nAME: plot
-
- pURPOSE: dRAWS, ERASES OR COPIES A PIXEL ON THE HIRES SCREEN.
-
- cALL ADDRESS: $c133
-
- iNPUT REQUIREMENTS:
-
- n FLAG c fLAG oPERATION
-
- 1 x cOPY
-
- 0 1 dRAW
-
- 0 0 eRASE
-
- $08-$09 tHE COLUMN NUMBER.
-
- $18 tHE ROW NUMBER.
-
-
-
- dESCRIPTION: tHIS IS A VERY VERSATILE ROUTINE. iT CAN COPY A
-
- POINT FROM ONE SCREEN TO ANOTHER, AS WELL AS DRAW OR ERASE IT.
-
- tHIS ROUTINE IS CALLED BY line TO DRAW LINES. sEE ALSO rowadr.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-47
-
-
-
-
-
- fUNCTION nAME: posspr
-
- pURPOSE: sETS THE POSITION OF A SPRITE.
-
- cALL ADDRESS: $c1cf
-
- iNPUT REQUIREMENTS:
-
- $08 sPRITE NUMBER (0-7).
-
- $0a-$0b sPRITE x POSITION.
-
- $0c sPRITE y POSITION.
-
- pREPARATORY ROUTINES: copysp
-
-
-
- dESCRIPTION: tHIS ROUTINE COPIES THE SPRITE'S POSITION TO THE vic
-
- CHIP, RELIEVING THE USER OF THE BURDEN OF HANDLING THE CROSSOVER
-
- IN THE SCREEN FROM COLUMN 255 TO COLUMN 256.
-
-
-
-
-
- fUNCTION nAME: prev
-
- pURPOSE: mOVE TO PREVIOUS vlir CHAIN.
-
- cALL ADDRESS: $c27d
-
- oUTPUT:
-
- y tRACK OF vlir CHAIN.
-
- $04 tRACK OF vlir CHAIN.
-
- $05 sECTOR OF vlir CHAIN.
-
- $8496 dECREMENTED BY 1.
-
- pREPARATORY ROUTINES: vopen
-
- eRRORS: sEE aPPENDIX i.
-
-
-
- dESCRIPTION: tHIS ROUTINE GETS THE TRACK AND SECTOR OF THE
-
- PREVIOUS CHAIN IN THE OPEN vlir FILE. iT DOES NOT CHECK TO SEE IF
-
- THE CHAIN EXISTS (IE. TRACK IS ZERO). iT DOES CHECK IF THIS CHAIN
-
- IS GREATER THAN ZERO.
-
-
-
-
-
- fUNCTION nAME: random
-
- pURPOSE: mODIFIES THE RANDOM NUMBER GENERATOR AT $850a-$850b.
-
- cALL ADDRESS: $c187
-
- oUTPUT:
-
- $850a-$850b nEW SEED VALUE.
-
-
-
- dESCRIPTION: tHIS ROUTINE CHANGES THE 16 BIT RANDOM NUMBER AT
-
- $850a-$850b, USING A SIMPLE YET ELABORATE FORMULA.
-
-
-
-
-
- fUNCTION nAME: rd180
-
- pURPOSE: rEAD TRACK 18, SECTOR 0 FROM THE DISK.
-
- cALL ADDRESS: $c247
-
- oUTPUT:
-
- $04 $12, TRACK NUMBER.
-
- $05 $00, SECTOR NUMBER.
-
- $0a-$0b $8200, ADDRESS OF BUFFER AREA.
-
- $8200-$82ff dATA FROM TRACK 18 SECTOR 0.
-
- eRRORS: sEE aPPENDIX i.
-
-
-
- dESCRIPTION: tHIS ROUTINE SETS UP THE POINTERS FOR read, THEN
-
- CALLS IT TO READ THE SECTOR. tHIS IS GENERALLY USED TO GET THE
-
- bam INTO MEMORY.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-48
-
-
-
-
-
- fUNCTION nAME: read
-
- pURPOSE: rEAD A GIVEN TRACK AND SECTOR.
-
- cALL ADDRESS: $c1e4
-
- iNPUT REQUIREMENTS:
-
- $04 tRACK OF SECTOR TO BE READ.
-
- $05 sECTOR NUMBER TO BE READ.
-
- $0a-$0b pOINTER TO BUFFER.
-
- eRRORS: sEE aPPENDIX
-
-
-
- dESCRIPTION: lOADS AND RUNS TURBODOS IF IT IS NOT ALREADY THERE.
-
- tHEN READS THE DESIRED BLOCK FROM THE DISK INTO THE BUFFER.
-
-
-
-
-
- fUNCTION nAME: read2
-
- pURPOSE: rEAD A SECTOR FROM THE DISK.
-
- cALL ADDRESS: $c21a
-
- iNPUT REQUIREMENTS:
-
- $04 tRACK TO BE READ.
-
- $05 sECTOR TO BE READ.
-
- $0a-$0b pOINTER TO BUFFER FOR DATA.
-
- oUTPUT:
-
- dATA IS READ INTO THE DESIRED BUFFER.
-
- pREPARATORY ROUTINES: dsetup
-
- eRRORS: sEE aPPENDIX i.
-
-
-
- dESCRIPTION: tHIS ROUTINE IS CALLED BY read TO READ A SECTOR. tHE
-
- DIFFERENCE BETWEEN THIS ROUTINE AND read IS THAT read CALLS
-
- dsetup BEFORE TRYING TO READ THE SECTOR. tHIS ROUTINE ASSUMES
-
- THAT THE DRIVE IS READY WITH TURBODOS RUNNING.
-
-
-
-
-
- fUNCTION nAME: reboot
-
- pURPOSE: rEBOOT geos.
-
- cALL ADDRESS: $c000
-
- eRRORS: iF LOAD FAILS, SYSTEM RESETS TO basic.
-
-
-
- dESCRIPTION: tHIS ROUTINE IS NOT PART OF THE NORMAL geos kernal
-
- JUMP TABLE. tHIS IS THE ROUTINE THAT IS SET UP AS THE nmi
-
- INTERRUPT (restore KEY) BY geos WHEN geos RETURNS TO basic. iT
-
- LOADS 'geos boot', AND EXECUTES IT.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-49
-
-
-
-
-
- fUNCTION nAME: remove
-
- pURPOSE: rEMOVE A vlir CHAIN.
-
- cALL ADDRESS: $c283
-
- iNPUT REQUIREMENTS:
-
- $8496 vlir CHAIN NUMBER.
-
- oUTPUT:
-
- $8496 dECREMENTED IF GREATER THAN OR EQUAL TO $8497.
-
- $8497 dECREMENTED BY 1.
-
- pREPARATORY ROUTINES: vopen
-
- eRRORS: sEE aPPENDIX i.
-
-
-
- dESCRIPTION: tHE CURRENT vlir CHAIN IS REMOVED FROM THE vlir
-
- SECTOR, AND ALL THE FOLLOWING CHAINS ARE MOVED DOWN ONE. tHE
-
- SECTORS ASSOCIATED WITH THAT CHAIN ARE FREED UP.
-
-
-
-
-
- fUNCTION nAME: rename
-
- pURPOSE: rENAME A FILE.
-
- cALL ADDRESS: $c259
-
- iNPUT REQUIREMENTS:
-
- $02-$03 pOINTER TO NEW FILE NAME.
-
- $0e-$0f pOINTER TO OLD FILE NAME.
-
- oUTPUT:
-
- $04 tRACK OF DIRECTORY SECTOR.
-
- $05 sECTOR OF DIRECTORY SECTOR.
-
- $0c-$0d pOINTER TO FILE NAME IN DIRECTORY ENTRY.
-
- $8400-$841d cOPY OF OLD DIRECTORY ENTRY.
-
- eRRORS: sEE aPPENDIX i.
-
-
-
- dESCRIPTION: tHIS ROUTINE RENAMES A FILE BY CALLING lookup, THEN
-
- COPYING THE NEW NAME INTO THE ENTRY. fINALLY, THE SECTOR IS
-
- REWRITTEN TO THE DISK.
-
-
-
-
-
- fUNCTION nAME: resetm
-
- pURPOSE: rESET THE MOUSE.
-
- cALL ADDRESS: $c19c
-
-
-
- dESCRIPTION: tHE FLAG AT LOCATION $30 IS SET TO $00, AND THE
-
- MOUSE SPRITE IS TURNED OFF. hOWEVER, SINCE BIT 7 OF LOCATION $30
-
- IS NOT SET, THE NEXT INTERRUPT WILL TURN IT BACK ON.
-
-
-
-
-
- fUNCTION nAME: restrt
-
- pURPOSE: rESTART desktop.
-
- cALL ADDRESS: $c22c
-
-
-
- dESCRIPTION: tHIS ROUTINE LOADS desktop AND RUNS IT. iT IS CALLED
-
- AS THE LAST PART OF THE BOOTUP PROCEDURE. tHIS IS WHERE A PROGRAM
-
- SHOULD TERMINATE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-50
-
-
-
-
-
- fUNCTION nAME: rowadr
-
- pURPOSE: cOMPUTES THE ADDRESS OF A GIVEN ROW ON THE HIRES
-
- SCREENS.
-
- cALL ADDRESS: $c13c
-
- iNPUT REQUIREMENTS:
-
- x tHE ROW NUMBER.
-
- $2f sEE DESCRIPTION.
-
- oUTPUT:
-
- $0c-$0d pOINTER TO THE ROW ON THE DESTINATION SCREEN.
-
- $0e-$0f pOINTER TO THE ROW ON THE SOURCE SCREEN.
-
-
-
- dESCRIPTION: tHIS ROUTINE COMPUTES THE ADDRESS OF COLUMN 0 ON A
-
- GIVEN ROW OF THE HIRES SCREENS. aLL OF THE GRAPHICS ROUTINES RELY
-
- ON THIS ROUTINE TO GET THE ADDRESS OF THE HIRES SCREENS. tHEY ALL
-
- TAKE THE DATA POINTED TO BY $0e-$0f AND STORE THEIR DATA TO BOTH
-
- $0c-$0d AND $0e-$0f. lOCATION $2f DETERMINES WHICH SCREEN IS
-
- POINTED TO BY WHICH POINTER. tHIS IS AS FOLLOWS:
-
- bIT 7 bIT 6 $0c-$0d $0e-$0f
-
- 0 0 $af00 $af00 aPPROXIMATELY THE
-
- MIDDLE OF SCREEN 1
-
- 0 1 sCREEN 2 sCREEN 2
-
- 1 0 sCREEN 1 sCREEN 1
-
- 1 1 sCREEN 1 sCREEN 2 (dEFAULT AT RESET)
-
-
-
-
-
- fUNCTION nAME: run
-
- pURPOSE: eXECUTE A PROGRAM ALREADY IN MEMORY.
-
- cALL ADDRESS: $c22f
-
- iNPUT REQUIREMENTS:
-
- $02 fLAG BYTE.
-
- $06-$07 dATA POINTER (OPTIONAL).
-
- $08-$09 dATA POINTER (OPTIONAL).
-
- $10-$11 sTART ADDRESS.
-
- oUTPUT:
-
- $06-$07 pOINTER TO DRIVE NAME 2.
-
- $08-$09 pOINTER TO DRIVE NAME 3.
-
-
-
- dESCRIPTION: tHIS ROUTINE PERFORMS SOME INITIALIZATIONS BEFORE
-
- EXECUTING A LOADED PROGRAM. iF EITHER BIT 6 OR BIT 7 OF THE FLAG
-
- BYTE AT LOCATION $02 IS SET, THEN THE DATA POINTED TO BY $06-$07
-
- AND $08-$09 ARE COPIED INTO THE BUFFERS FOR THE 3RD AND 4TH DRIVE
-
- NAMES. tHESE DATA BLOCKS ARE LIMITED TO 16 BYTES EACH. tHE
-
- INITIALIZATION PROCESS SELECTS THE bsw FONT AND INITIALIZES ALL
-
- OF geos'S GLOBAL VARIABLES.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-51
-
-
-
-
-
- fUNCTION nAME: save
-
- pURPOSE: sAVE MEMORY TO A FILE.
-
- cALL ADDRESS: $c1ed
-
- iNPUT REQUIREMENTS:
-
- $14-$15 pOINTER TO INFORMATION SECTOR DATA.
-
- $16 # DIRECTORY SECTORS TO SKIP FIRST.
-
- eRRORS: sEE aPPENDIX
-
-
-
- dESCRIPTION: tHIS ROUTINE WILL SAVE MEMORY TO A FILE; EACH SECTOR
-
- IS VERIFIED AFTER THE WRITE IS FINISHED. tHE INFO SECTOR HAS ALL
-
- THE NECESSARY INFORMATION. IE. START AND STOP ADDRESSES, FILE
-
- TYPE AND STRUCTURE. iT MUST ALSO CONTAIN THE ADDRESS OF THE
-
- FILENAME STRING SOMEWHERE IN MEMORY, IN THE FIRST TWO BYTES. iF
-
- THE FILE IS A vlir FILE, THE MEMORY IS SAVED TO CHAIN 0. lOCATION
-
- $16 SPECIFIES THE NUMBER OF DIRECTORY SECTORS TO SKIP FOR dirdsk
-
- AND hole.
-
-
-
-
-
- fUNCTION nAME: save2
-
- pURPOSE: sAVE MEMORY TO SPECIFIED SECTORS ON THE DISK.
-
- cALL ADDRESS: $c1f9
-
- iNPUT REQUIREMENTS:
-
- $0e-$0f pOINTER TO LIST OF TRACKS AND SECTORS TO USE.
-
- $10-$11 sTART ADDRESS OF MEMORY TO BE SAVED.
-
- pREPARATORY ROUTINES: falloc
-
- eRRORS: sEE aPPENDIX
-
-
-
- dESCRIPTION: tHIS ROUTINE IS CALLED BY save TO ACTUALLY SAVE THE
-
- MEMORY. aLL OF THE SECTORS SHOULD HAVE ALREADY BEEN ALLOCATED.
-
- tHIS ROUTINE STOPS SAVING MEMORY WHEN TRACK 0 IS FOUND IN THE
-
- LIST OF TRACKS AND SECTORS.
-
-
-
-
-
- fUNCTION nAME: sd1616
-
- pURPOSE: sIGNED 16 BIT BY 16 BIT DIVISION.
-
- cALL ADDRESS: $c16c
-
- iNPUT REQUIREMENTS:
-
- y tHE ADDRESS OF THE 16 BIT DIVISOR.
-
- x tHE ADDRESS OF THE 16 BIT DIVIDEND.
-
- oUTPUT:
-
- x tHE ADDRESS OF THE 16 BIT QUOTIENT.
-
- $12-$13 tHE 16 BIT REMAINDER.
-
-
-
- dESCRIPTION: tHIS ROUTINE IS ONE OF THE geos MATH ROUTINES. x AND
-
- y EACH HAVE THE ADDRESS OF A TERM IN THE DIVISION. bOTH TERMS ARE
-
- MADE POSITIVE WITH abs16. ud1616 IS THEN CALLED; IF THE RESULT OF
-
- THE DIVISION SHOULD BE NEGATIVE, neg16 IS CALLED. tHE QUOTIENT IS
-
- STORED IN PLACE OF THE ORIGINAL DIVIDEND THAT x POINTED TO. tHE
-
- DIVIDEND IS LEFT UNTOUCHED. tHE REMAINDER IS ALWAYS A POSITIVE
-
- INTEGER.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-52
-
-
-
-
-
- fUNCTION nAME: selbsw
-
- pURPOSE: sELECTS THE bERKELEY sOFTWORKS FONT.
-
- cALL ADDRESS: $c14b
-
- oUTPUT:
-
- $26 # PIXELS ABOVE LINE OF PRINT.
-
- $27-$28 tHE NUMBER OF BYTES IN THE BIT STREAM.
-
- $29 tHE POINT SIZE.
-
- $2a-$2b tHE POINTER TO THE TABLE OF INDICES INTO THE BIT
-
- STREAM.
-
- $2c-$2d tHE POINTER TO THE BIT STREAM.
-
-
-
- dESCRIPTION: tHIS ROUTINE SIMPLY COPIES THE FONT HEADER DATA FOR
-
- THE bsw FONT TO ZERO PAGE FOR USE BY dspchr AND dsptxt.
-
-
-
-
-
- fUNCTION nAME: setpat
-
- pURPOSE: sETS THE CURRENT FILL PATTERN.
-
- cALL ADDRESS: $c139
-
- iNPUT REQUIREMENTS:
-
- a tHE PATTERN NUMBER (0-31).
-
-
-
- dESCRIPTION: tHIS ROUTINE SETS THE FILL PATTERN USED BY pfill,
-
- pfill2, pbox AND pbox2.
-
-
-
-
-
- fUNCTION nAME: sproff
-
- pURPOSE: tURNS OFF A SPRITE.
-
- cALL ADDRESS: $c1d5
-
- iNPUT REQUIREMENTS:
-
- $08 sPRITE NUMBER (0-7).
-
- pREPARATORY ROUTINES: copysp, posspr, spron
-
-
-
- dESCRIPTION: tHIS ROUTINE TURNS THE SPRITE OFF, SO THAT IT IS NO
-
- LONGER VISIBLE.
-
-
-
-
-
- fUNCTION nAME: spron
-
- pURPOSE: tURNS ON A SPRITE.
-
- cALL ADDRESS: $c1d2
-
- iNPUT REQUIREMENTS:
-
- $08 sPRITE NUMBER (0-7).
-
- pREPARATORY ROUTINES: copysp, posspr
-
-
-
- dESCRIPTION: tHIS ROUTINE TURNS THE SPRITE ON, SO THAT IT IS
-
- VISIBLE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-53
-
-
-
-
-
- fUNCTION nAME: start
-
- pURPOSE: rESTARTS THE TIMER ON A TIMED EVENT.
-
- cALL ADDRESS: $c115
-
- iNPUT REQUIREMENTS:
-
- x tHE INDEX INTO THE COMMAND TABLE AT $8719.
-
- pREPARATORY ROUTINES: cmdtbl
-
-
-
- dESCRIPTION: tHIS ROUTINE RESETS BIT 5 OF A SPECIFIC COMMAND BYTE
-
- IN THE TABLE AT $8719. tHIS ENABLES THE ASSOCIATED COUNTER. tHIS
-
- ROUTINE IS THE COMPLEMENT TO stop. tHIS ROUTINE IS not A
-
- REPLACEMENT FOR enable. tHIS ROUTINE DOES NOT COPY THE TIMER'S
-
- INITIAL VALUE AS DOES enable.
-
-
-
-
-
- fUNCTION nAME: stop
-
- pURPOSE: sTOPS THE TIMER ON A TIMED EVENT.
-
- cALL ADDRESS: $c112
-
- iNPUT REQUIREMENTS:
-
- x tHE INDEX INTO THE COMMAND TABLE AT $8719.
-
- pREPARATORY ROUTINES: cmdtbl
-
-
-
- dESCRIPTION: tHIS ROUTINE SETS BIT 5 OF A SPECIFIC COMMAND BYTE
-
- IN THE TABLE AT $8719. tHIS PREVENTS THE ASSOCIATED TIMER FROM
-
- RUNNING. tHIS ROUTINE IS THE COMPLEMENT TO start.
-
-
-
-
-
- fUNCTION nAME: strcmp
-
- pURPOSE: cOMPARE TWO STRINGS FOR EQUALITY.
-
- cALL ADDRESS: $c26b
-
- iNPUT REQUIREMENTS:
-
- x aDDRESS OF A ZERO PAGE POINTER.
-
- y aDDRESS OF A ZERO PAGE POINTER.
-
- oUTPUT:
-
- z FLAG sET ACCORDINGLY.
-
-
-
- dESCRIPTION: tHE x AND y REGISTERS POINT TO ZERO PAGE POINTERS.
-
- tHE TWO STRINGS ARE COMPARED UP TO A ZERO BYTE. tHE z FLAG IS SET
-
- ACCORDINGLY.
-
-
-
-
-
- fUNCTION nAME: strcpy
-
- pURPOSE: cOPY A STRING.
-
- cALL ADDRESS: $c265
-
- iNPUT REQUIREMENTS:
-
- x aDDRESS OF ZERO PAGE SOURCE POINTER.
-
- y aDDRESS OF ZERO PAGE DESTINATION POINTER.
-
-
-
- dESCRIPTION: tHE x AND y REGISTERS POINT TO ZERO PAGE POINTERS.
-
- dATA IS COPIED UP TO AND INCLUDING A ZERO BYTE. tHIS ROUTINE IS
-
- USED TO COPY STRINGS BY SETTING a TO ZERO AND CALLING blkmov.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-54
-
-
-
-
-
- fUNCTION nAME: syserr
-
- pURPOSE: dRAW A SYSTEM ERROR WINDOW, AND HALT SYSTEM.
-
- cALL ADDRESS: $c2c2
-
-
-
- dESCRIPTION: a WINDOW IS DRAWN WITH THE MESSAGE 'sYSTEM ERROR
-
- NEAR $XXXX', WHERE XXXX IS THE HEX ADDRESS OF THE jsr syserr
-
- INSTRUCTION. sINCE THE SYSTEM ERROR WINDOW HAS NO WAY OF BEING
-
- CLOSED, geos SIMPLY SITS IN ITS MAIN LOOP FOREVER. tHE brk VECTOR
-
- AT $84af-$84b0 IS INITIALLY SET TO THIS ROUTINE.
-
-
-
-
-
- fUNCTION nAME: table
-
- pURPOSE: cREATE A LIST OF FILENAMES.
-
- cALL ADDRESS: $c23b
-
- iNPUT REQUIREMENTS:
-
- $0e-$0f pOINTER TO BUFFER AREA FOR FILE NAMES.
-
- $10 geos FILE TYPE.
-
- $11 mAXIMUM NUMBER OF FILE NAMES.
-
- $16-$17 pOINTER TO CLASS.
-
- oUTPUT:
-
- $11 nUMBER OF FILES NOT FOUND.
-
- tHE TABLE IS FILLED WITH FILENAMES.
-
- eRRORS: sEE aPPENDIX i.
-
-
-
- dESCRIPTION: tHIS IS A VERY USEFUL ROUTINE. gIVEN A geos FILE
-
- TYPE, A LIST OF FILES WITH THAT TYPE IS CREATED. iF THE CLASS
-
- POINTER IS NON-ZERO THEN EACH FILE'S INFO SECTOR IS CHECKED FOR
-
- PROPER CLASS. tHIS IS HOW geoPAINT AND geoWRITE CAN BOTH CREATE
-
- aPPLICATION dATA FILES AND NOT SEE EACH OTHERS FILES. tHE
-
- FILENAMES ARE TEXT STRINGS WITH ZERO BYTE TERMINATORS. eACH ENTRY
-
- IS INDEXED WITH A MULTIPLE OF 17 (16 BYTE FILENAME MAX. PLUS ZERO
-
- BYTE). lOCATION $11 HAS THE NUMBER OF TABLE ENTRIES NOT FILLED.
-
- tO GET THE NUMBER OF FILES ACTUALLY FOUND, THIS VALUE MUST BE
-
- SUBTRACTED FROM THE ORIGINAL MAXIMUM BUFFER LENGTH.
-
-
-
-
-
- fUNCTION nAME: tbljmp
-
- pURPOSE: jUMP THROUGH A TABLE.
-
- cALL ADDRESS: $c2a4
-
- iNPUT REQUIREMENTS:
-
- a oFFSET INTO TABLE.
-
- $3d-$3e tABLE ADDRESS.
-
-
-
- dESCRIPTION: tHIS ROUTINE IS CALLED BY ALL OF THE ROUTINES THAT
-
- HAVE INLINE DATA. tHEY ALL SET $3d-$3e TO THE RETURN ADDRESS OF
-
- THE CALLER, INDEX OFF OF THIS POINTER TO GET THEIR DATA, THEN
-
- CALL THE APPROPRIATE ROUTINE. wHEN THE ROUTINE FINISHES, a IS
-
- LOADED WITH THE DATA TABLE'S LENGTH AND THIS ROUTINE IS CALLED TO
-
- RETURN CONTROL TO THE CALLER AFTER THE DATA TABLE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-55
-
-
-
-
-
- fUNCTION nAME: test
-
- pURPOSE: tESTS THE VALUE OF A POINT ON THE HIRES SCREEN.
-
- cALL ADDRESS: $c13f
-
- iNPUT REQUIREMENTS:
-
- $08-$09 tHE COLUMN NUMBER.
-
- $18 tHE ROW NUMBER.
-
- oUTPUT:
-
- c FLAG IS SET TO THE VALUE OF THE PIXEL.
-
-
-
- dESCRIPTION: tESTS WHETHER OR NOT A GIVEN PIXEL IS ON OR NOT. tHE
-
- CARRY FLAG IS SET TO THE VALUE OF THE PIXEL.
-
-
-
-
-
- fUNCTION nAME: trace
-
- pURPOSE: cREATE A TABLE OF TRACKS AND SECTORS.
-
- cALL ADDRESS: $c205
-
- iNPUT REQUIREMENTS:
-
- $04 iNITIAL TRACK NUMBER.
-
- $05 iNITIAL SECTOR NUMBER.
-
- $08-$09 aDDRESS OF TABLE TO BE CREATED.
-
- oUTPUT:
-
- tABLE POINTED TO BY $08-$09 IS FILLED WITH ALL THE TRACKS
-
- AND SECTORS LINKED TO THE INITIAL SECTOR.
-
- eRRORS: sEE aPPENDIX
-
-
-
- dESCRIPTION: gIVEN AN INITIAL TRACK AND SECTOR, THIS ROUTINE
-
- TRACES A CHAIN AND RETURNS A LIST OF ALL THE TRACKS AND SECTORS
-
- ENCOUNTERED. tHIS ROUTINE USES THE BUFFER AT $8000-$80ff TO READ
-
- THE SECTORS.
-
-
-
-
-
- fUNCTION nAME: ud1616
-
- pURPOSE: uNSIGNED 16 BIT BY 16 BIT DIVISION.
-
- cALL ADDRESS: $c169
-
- iNPUT REQUIREMENTS:
-
- y tHE ADDRESS OF THE 16 BIT DIVISOR.
-
- x tHE ADDRESS OF THE 16 BIT DIVIDEND.
-
- oUTPUT:
-
- x tHE ADDRESS OF THE 16 BIT QUOTIENT.
-
- $12-$13 tHE 16 BIT REMAINDER.
-
-
-
- dESCRIPTION: tHIS ROUTINE IS ONE OF THE geos MATH ROUTINES. x AND
-
- y EACH HAVE THE ADDRESS OF A TERM IN THE DIVISION. tHE QUOTIENT
-
- IS STORED IN PLACE OF THE ORIGINAL DIVIDEND THAT x POINTED TO.
-
- tHE DIVIDEND IS LEFT UNTOUCHED.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-56
-
-
-
-
-
- fUNCTION nAME: um1616
-
- pURPOSE: uNSIGNED 16 BIT BY 16 BIT MULTIPLY.
-
- cALL ADDRESS: $c166
-
- iNPUT REQUIREMENTS:
-
- y tHE ADDRESS OF THE 16 BIT MULTIPLIER.
-
- x tHE ADDRESS OF THE 16 BIT MULTIPLICAND.
-
- oUTPUT:
-
- x tHE ADDRESS OF THE 16 BIT RESULT.
-
-
-
- dESCRIPTION: tHIS ROUTINE IS ONE OF THE geos MATH ROUTINES. x AND
-
- y EACH HAVE THE ADDRESS OF A TERM IN THE MULTIPLICATION. tHE
-
- RESULT IS STORED IN PLACE OF THE ORIGINAL MULTIPLICAND THAT x
-
- POINTED TO. tHE MULTIPLIER POINTED TO BY y IS UNTOUCHED.
-
-
-
-
-
- fUNCTION nAME: um168
-
- pURPOSE: uNSIGNED 8 BIT BY 16 BIT MULTIPLY.
-
- cALL ADDRESS: $c163
-
- iNPUT REQUIREMENTS:
-
- y tHE ADDRESS OF THE 8 BIT MULTIPLIER.
-
- x tHE ADDRESS OF THE 16 BIT MULTIPLICAND.
-
- oUTPUT:
-
- x tHE ADDRESS OF THE 16 BIT PRODUCT.
-
-
-
- dESCRIPTION: tHIS ROUTINE IS ONE OF THE geos MATH ROUTINES. x AND
-
- y EACH HAVE THE ADDRESS OF A TERM IN THE MULTIPLICATION. tHE
-
- RESULT IS STORED IN PLACE OF THE ORIGINAL MULTIPLICAND THAT x
-
- POINTED TO. tHE BYTE FOLLOWING THE MULTIPLIER IS SET TO ZERO,
-
- THEN CONTROL PASSES TO um1616.
-
-
-
-
-
- fUNCTION nAME: umul88
-
- pURPOSE: uNSIGNED 8 BIT BY 8 BIT MULTIPLY.
-
- cALL ADDRESS: $c160
-
- iNPUT REQUIREMENTS:
-
- y tHE ADDRESS OF THE MULTIPLIER.
-
- x tHE ADDRESS OF THE MULTIPLICAND.
-
- oUTPUT:
-
- x tHE ADDRESS OF THE 16 BIT PRODUCT.
-
-
-
- dESCRIPTION: tHIS ROUTINE IS ONE OF THE geos MATH ROUTINES. x AND
-
- y EACH HAVE THE ADDRESS OF A TERM IN THE MULTIPLICATION. tHE
-
- RESULT IS STORED IN PLACE OF THE ORIGINAL MULTIPLICAND THAT x
-
- POINTED TO. tHE VALUE THAT y POINTS TO IS LEFT UNTOUCHED.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-57
-
-
-
-
-
- fUNCTION nAME: update
-
- pURPOSE: uPDATE A vlir FILE.
-
- cALL ADDRESS: $c295
-
- oUTPUT:
-
- $8498 cLEARED TO $00.
-
- pREPARATORY ROUTINES: vopen
-
- eRRORS: sEE aPPENDIX i.
-
-
-
- dESCRIPTION: tHIS ROUTINE WRITES THE OPEN vlir FILE'S vlir SECTOR
-
- TO DISK AND UPDATES THE FILE'S DIRECTORY ENTRY ON DISK (tIME,
-
- DATE AND FILE SIZE). tHIS OPERATION IS NOT PERFORMED IF LOCATION
-
- $8498 IS ZERO TO START WITH. tHAT LOCATION IS A FLAG THAT TELLS
-
- WHETHER THE FILE HAS BEEN ALTERED OR NOT. tHIS ROUTINE IS CALLED
-
- BY vclose.
-
-
-
-
-
- fUNCTION nAME: vclose
-
- pURPOSE: cLOSE A vlir FILE.
-
- cALL ADDRESS: $c277
-
- oUTPUT:
-
- $8873 cLEARED TO $00.
-
- pREPARATORY ROUTINES: vopen
-
- eRRORS: sEE aPPENDIX i.
-
-
-
- dESCRIPTION: tHE vlir SECTOR IS REWRITTEN TO THE DISK AND THE
-
- DIRECTORY IS UPDATED WITH A NEW TIME, DATE AND FILE SIZE BY
-
- CALLING update. lOCATION $8873 IS THE TRACK NUMBER OF THE vlir
-
- SECTOR. bY CLEARING IT, geos SAYS THAT THE FILE IS NO LONGER IN
-
- MEMORY.
-
-
-
-
-
- fUNCTION nAME: vline
-
- pURPOSE: dRAWS A VERTICAL LINE ON THE SCREEN.
-
- cALL ADDRESS: $c121
-
- iNPUT REQUIREMENTS:
-
- a tHE ACTUAL BIT PATTERN FOR THE LINE.
-
- $08 tHE TOP MARGIN.
-
- $09 tHE BOTTOM MARGIN.
-
- $0a-$0b tHE RIGHT MARGIN.
-
-
-
- dESCRIPTION: tHIS ROUTINE DRAWS A VERTICAL LINE ON THE HIRES
-
- SCREEN IN A GIVEN PATTERN. sEE ALSO rowadr.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-58
-
-
-
-
-
- fUNCTION nAME: vload
-
- pURPOSE: lOAD A vlir CHAIN.
-
- cALL ADDRESS: $c28c
-
- iNPUT REQUIREMENTS:
-
- $06-$07 mAXIMUM BYTE COUNT OF LOAD.
-
- $10-$11 lOAD ADDRESS.
-
- $8496 cURRENT CHAIN NUMBER.
-
- oUTPUT:
-
- $8302-$83ff tABLE OF TRACKS AND SECTORS THAT WERE LOADED.
-
- pREPARATORY ROUTINES: vopen
-
- eRRORS: sEE aPPENDIX i.
-
-
-
- dESCRIPTION: tHIS ROUTINE LOADS THE CURRENT CHAIN BY CALLING
-
- lchain.
-
-
-
-
-
- fUNCTION nAME: vopen
-
- pURPOSE: oPENS A vlir FILE.
-
- cALL ADDRESS: $c274
-
- iNPUT REQUIREMENTS:
-
- $02-$03 pOINTER TO FILE NAME.
-
- oUTPUT:
-
- $04 tRACK OF vlir SECTOR.
-
- $05 sECTOR OF vlir SECTOR.
-
- $0c-$0d pOINTER TO FILE'S DIRECTORY ENTRY.
-
- $8100-$81ff fILE'S vlir SECTOR.
-
- $8496 iNITIAL CHAIN # (sHOULD BE 0).
-
- $8497 nUMBER OF CHAINS.
-
- $8498 cLEARED TO $00. (vlir FILE MODIFIED).
-
- $8499-$849a fILE SIZE.
-
- $886f tRACK OF FILE'S DIRECTORY ENTRY.
-
- $8870 sECTOR OF FILE'S DIRECTORY ENTRY.
-
- $8871-$8872 pOINTER TO DIRECTORY ENTRY.
-
- $8873 tRACK FOR vlir SECTOR.
-
- $8874 sECTOR FOR vlir SECTOR.
-
- eRRORS: sEE aPPENDIX i.
-
-
-
- dESCRIPTION: tHIS ROUTINE OPENS A vlir FILE, AND SETS UP ALL THE
-
- VARIABLES ASSOCIATED WITH IT. oNLY ONE vlir FILE CAN BE OPEN AT A
-
- TIME DUE TO THE FACT THAT THESE VARIABLES ARE GLOBAL.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-59
-
-
-
-
-
- fUNCTION nAME: vsave
-
- pURPOSE: sAVE MEMORY TO A vlir CHAIN.
-
- cALL ADDRESS: $c28f
-
- iNPUT REQUIREMENTS:
-
- $06-$07 lENGTH OF SAVE.
-
- $10-$11 aDDRESS OF MEMORY TO BE SAVED.
-
- $8496 vlir CHAIN NUMBER.
-
- oUTPUT:
-
- $8300-$83ff tABLE OF TRACKS AND SECTORS THAT WERE SAVED TO.
-
- pREPARATORY ROUTINES: vopen
-
- eRRORS: sEE aPPENDIX i.
-
-
-
- dESCRIPTION: tHIS ROUTINE SAVES A BLOCK OF MEMORY TO A vlir
-
- CHAIN. iF THE CHAIN ALREADY EXISTED, THEN IT IS DELETED FIRST. iF
-
- THE LENGTH OF THE SAVE IS 0, THEN NO SAVE IS PERFORMED. tHIS
-
- WOULD ALLOW THIS ROUTINE TO BE USED AS A DELETE CHAIN FUNCTION.
-
-
-
-
-
- fUNCTION nAME: whatis
-
- pURPOSE: wHO KNOWS?
-
- cALL ADDRESS: $c196
-
- oUTPUT:
-
- $02-$03 vALUE FROM $9f27-$9f28 ($3e66).
-
-
-
- dESCRIPTION: tHIS ROUTINE SEEMS TO HAVE ABSOLUTELY NO PURPOSE. iT
-
- COPIES A VECTOR FROM $9f27-$9f28 ($3e66) TO $02-$03. lOCATIONS
-
- $9f27 AND $9f28 ARE CHECKED BY ANOTHER ROUTINE AT BOOTUP. iF IT
-
- IS ZERO THEN THE FIRST vlir CHAIN OF THE KERNAL ($9000-$9fff) IS
-
- REWRITTEN TO THE DISK. tHIS MAY BE A REMNANT OF THE geos
-
- DEVELOPMENT ENVIRONMENT OR IT MAY BE SOME KIND OF KERNAL VERSION
-
- NUMBER. tHE CODE LOOKS LIKE THIS:
-
- lda $9f28
-
- sta $03
-
- lda $9f27
-
- sta $02
-
- rts
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-60
-
-
-
-
-
- fUNCTION nAME: window
-
- pURPOSE: pROCESS A WINDOW DESCRIPTOR.
-
- cALL ADDRESS: $c256
-
- iNPUT REQUIREMENTS:
-
- $02-$03 pOINTER TO WINDOW DESCRIPTOR.
-
- oUTPUT:
-
- $02 wINDOW COMMAND THAT CLOSED THE WINDOW.
-
- $851d wINDOW COMMAND THAT CLOSED THE WINDOW.
-
-
-
- dESCRIPTION: lIKE menu, THIS IS ANOTHER VERY POWERFUL ROUTINE.
-
- gIVEN A DESCRIPTION OF THE WINDOW'S COMMANDS, EVERYTHING GETS
-
- HANDLED. tHE FORMAT OF THE WINDOW DESCRIPTOR IS AS FOLLOWS:
-
- .byte wINDOW TYPE.
-
- bIT 7 wINDOW SIZE FOLLOWS; OTHERWISE, USE
-
- STANDARD WINDOW SIZE ROWS 40 TO 135,
-
- COLUMNS 72 TO 263.
-
- bITS 0-4 fILL PATTERN FOR SHADOW. iF ZERO, THEN
-
- NO SHADOW IS DRAWN.
-
- tHE FOLLOWING SIX BYTES ARE ONLY PRESENT IF BIT 7 OF THE
-
- WINDOW TYPE IS SET.
-
- .byte tOP MARGIN.
-
- .byte bOTTOM MARGIN.
-
- .word lEFT MARGIN.
-
- .word rIGHT MARGIN.
-
-
-
- .byte cOMMAND BYTES FOLLOWED BY WHATEVER DATA IS NEEDED.
-
-
-
- aLL THE CLICK BOX DESCRIPTORS ARE STORED IN A TABLE AT $880c, FOR
-
- geos TO PROCESS THEM. tHIS LIMITS THE NUMBER OF CLICK BOXES IN A
-
- WINDOW TO 8. sEVERAL MEMORY LOCATIONS ARE SAVED PRIOR TO
-
- PROCESSING THE WINDOW; ALSO THE STACK POINTER AND RETURN ADDRESS
-
- ARE SAVED. aFTER THE WINDOW IS DRAWN, CONTROL PASSES BACK TO
-
- main. clswin MUST BE CALLED TO RETURN TO THE CALLER. tHEREFORE IT
-
- IS ESSENTIAL THAT SOME MEANS OF CLOSING A WINDOW EXISTS,
-
- OTHERWISE A SITUATION LIKE syserr WILL OCCUR (sEE THE syserr
-
- ROUTINE FOR MORE INFO).
-
- tHE COMMAND THAT CLOSES THE WINDOW IS THE VALUE RETURNED TO
-
- THE USER. IE. IF A CLICK BOX CLOSES THE WINDOW THEN THE COMMAND
-
- NUMBER THAT DREW THE CLICK BOX IS RETURNED. hOWEVER IT IS THE
-
- USER'S ROUTINE'S RESPONSIBILITY TO SET THE VALUE OF LOCATION
-
- $851d IF A USER CLICK BOX IS TO CLOSE THE WINDOW. cOMMAND #13 IS
-
- ANOTHER ONE THAT CAN CLOSE THE WINDOW. uSER ROUTINES DO NOT HAVE
-
- TO CLOSE THE WINDOW BUT THEY MAY IF THEY SO DESIRE.
-
- tHE FOLLOWING IS A LIST OF THE MEMORY ADDRESSES STORED BY
-
- THE WINDOW PROCESSOR:
-
- $22-$38 $849b-$84c0 $86c0-$87d3 $8ff8-$8fff
-
- $3f-$40 $d000-$d010 $d01b-$d01d $d025-$d026
-
- $d015 $d028-$d02e
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-61
-
-
-
-
-
- wINDOW pROCESSOR cOMMANDS
-
-
-
- 0 nO DATA. tHIS COMMAND ENDS THE WINDOW DESCRIPTOR.
-
- 1 tHE DATA FOR THIS COMMAND IS THE COLUMN OFFSET IN BYTES AND
-
- THE ROW OFFSET IN PIXELS. dRAW AN 'ok' CLICK BOX.
-
- 2 tHE DATA FOR THIS COMMAND IS THE COLUMN OFFSET IN BYTES AND
-
- THE ROW OFFSET IN PIXELS. dRAW A 'cANCEL' CLICK BOX.
-
- 3 tHE DATA FOR THIS COMMAND IS THE COLUMN OFFSET IN BYTES AND
-
- THE ROW OFFSET IN PIXELS. dRAW A 'yES' CLICK BOX.
-
- 4 tHE DATA FOR THIS COMMAND IS THE COLUMN OFFSET IN BYTES AND
-
- THE ROW OFFSET IN PIXELS. dRAW A 'nO' CLICK BOX.
-
- 5 tHE DATA FOR THIS COMMAND IS THE COLUMN OFFSET IN BYTES AND
-
- THE ROW OFFSET IN PIXELS. dRAW AN 'oPEN' CLICK BOX.
-
- 6 tHE DATA FOR THIS COMMAND IS THE COLUMN OFFSET IN BYTES AND
-
- THE ROW OFFSET IN PIXELS. dRAW A 'dISK' CLICK BOX.
-
- 7-10 aRE UNDEFINED COMMANDS.
-
- 11 tHE DATA FOR THIS COMMAND IS THE COLUMN OFFSET IN PIXELS,
-
- THE ROW OFFSET IN PIXELS, AND THE ADDRESS OF A TEXT STRING.
-
- tHIS COMMAND DISPLAYS THE TEXT STRING AT THE SPECIFIED
-
- OFFSET IN THE WINDOW.
-
- 12 tHE DATA FOR THIS COMMAND IS THE COLUMN OFFSET IN PIXELS,
-
- THE ROW OFFSET IN PIXELS AND ZERO PAGE ADDRESS OF THE
-
- ADDRESS OF A TEXT STRING. tHIS COMMAND IS SIMILAR TO COMMAND
-
- 11, EXCEPT FOR ITS METHOD OF ADDRESSING THE STRING.
-
- 13 tHE DATA FOR THIS COMMAND IS THE COLUMN OFFSET IN PIXELS,
-
- THE ROW OFFSET IN PIXELS, ZERO PAGE ADDRESS OF THE ADDRESS
-
- OF THE TEXT BUFFER TO BE USED BY input AND THE MAXIMUM
-
- LENGTH OF THE INPUT BUFFER. sEE input FOR MORE INFORMATION.
-
- 14 sET THE VECTOR AT $84a9-$84aa TO CLOSE THE WINDOW. gENERALLY
-
- USED WITH COMMAND 13.
-
- 15 tHE DATA FOR THIS COMMAND IS THE ADDRESS OF A grphic COMMAND
-
- TABLE. sEE grphic FOR FURTHER INFORMATION.
-
- 16 tHE DATA FOR THIS COMMAND IS THE COLUMN OFFSET IN PIXELS AND
-
- THE ROW OFFSET IN PIXELS. tHIS COMMAND OPENS A SCROLLING
-
- WINDOW OF FILENAMES. lOCATIONS $10 AND $16-$17 MUST BE SET
-
- PRIOR TO CALLING window (sEE table FOR MORE INFORMATION).
-
- tHE FILENAMES ARE STORED AT $8300-$83ff, TO A MAXIMUM OF 15
-
- FILENAMES. lOCATION $885c WILL RETURN THE INDEX OF THE
-
- SELECTED FILE NAME. iF MORE THAN 6 FILES ARE FOUND, THE
-
- SUBWINDOW WILL HAVE A CLICK BOX FOR SCROLLING THE LIST.
-
- 17 tHE DATA FOR THIS COMMAND IS THE ADDRESS OF THE ROUTINE FOR
-
- BUTTON PRESSED. tHIS COMMAND SETS THE VECTOR AT $84a9-$84aa
-
- TO A USER SPECIFIED ROUTINE.
-
- 18 tHE DATA FOR THIS COMMAND IS THE COLUMN OFFSET IN BYTES, THE
-
- ROW OFFSET IN PIXELS AND THE ADDRESS OF A USER'S 8 BYTE
-
- CLICK BOX DESCRIPTION, IN THE FOLLOWING FORMAT:
-
- #BYTES dESCRIPTION
-
- 2 aDDRESS OF GRAPHIC DATA.
-
- 2 nOT USED.
-
- 1 wIDTH OF BOX IN BYTES.
-
- 1 hEIGHT OF BOX IN PIXELS.
-
- 2 aDDRESS OF ROUTINE TO PROCESS THIS BOX.
-
- 19 tHE DATA FOR THIS COMMAND IS THE ADDRESS OF A USER
-
- SUBROUTINE. tHIS COMMAND CALLS THE USER'S SUBROUTINE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- geos kERNAL rOUTINES 1-62
-
-
-
-
-
- fUNCTION nAME: wr180
-
- pURPOSE: wRITE TRACK 18 SECTOR 0 BACK TO DISK.
-
- cALL ADDRESS: $c24a
-
- iNPUT REQUIREMENTS:
-
- $8200-$82ff dATA FOR TRACK 18 SECTOR 0.
-
- oUTPUT:
-
- $04 $12, TRACK NUMBER.
-
- $05 $00, SECTOR NUMBER.
-
- $0a-$0b $8200, ADDRESS OF BUFFER AREA.
-
- eRRORS: sEE aPPENDIX i.
-
-
-
- dESCRIPTION: tHIS ROUTINE SETS UP THE POINTERS FOR write, THEN
-
- CALLS IT TO WRITE THE SECTOR. tHIS IS GENERALLY USED TO UPDATE
-
- THE bam ON THE DISK.
-
-
-
-
-
- fUNCTION nAME: write
-
- pURPOSE: wRITE A GIVEN TRACK AND SECTOR.
-
- cALL ADDRESS: $c1e7
-
- iNPUT REQUIREMENTS:
-
- $04 tRACK OF SECTOR TO BE WRITTEN.
-
- $05 sECTOR NUMBER TO BE WRITTEN.
-
- $0a-$0b pOINTER TO BUFFER.
-
- eRRORS: sEE aPPENDIX
-
-
-
- dESCRIPTION: lOADS TURBODOS IF IT IS NOT ALREADY THERE BY CALLING
-
- dsetup. tHE DESIRED BLOCK IS THEN WRITTEN TO THE DISK BY CALLING
-
- write2. fINALLY cwrite IS CALLED TO VERIFY THE SECTOR.
-
-
-
-
-
- fUNCTION nAME: write2
-
- pURPOSE: wRITE A SECTOR TO THE DISK.
-
- cALL ADDRESS: $c220
-
- iNPUT REQUIREMENTS:
-
- $04 tRACK NUMBER.
-
- $05 sECTOR NUMBER.
-
- $0a-$0b pOINTER TO DATA BUFFER.
-
- pREPARATORY ROUTINES: dsetup
-
- eRRORS: sEE aPPENDIX i.
-
-
-
- dESCRIPTION: tHIS ROUTINE IS TO write, AS read2 IS TO read.
-
- dsetup MUST HAVE BEEN CALLED PRIOR TO USING THIS ROUTINE.
-
-
-
-
-
- fUNCTION nAME: zfill
-
- pURPOSE: fILLS A MEMORY REGION WITH ZEROES.
-
- cALL ADDRESS: $c178
-
- iNPUT REQUIREMENTS:
-
- $02-$03 tHE LENGTH OF THE REGION.
-
- $04-$05 tHE ADDRESS OF THE REGION.
-
-
-
- dESCRIPTION: mEMORY IS FILLED WITH ZEROES BY STORING A $00 AT
-
- LOCATION $06 AND CALLING blkfil.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- dEVICE dRIVERS 2-1
-
-
-
-
-
- iNPUT dRIVERS
-
-
-
- iNPUT DRIVERS EXIST IN MEMORY FROM $fe80 TO $fff9. tHEY DO
-
- NOT HAVE A START ADDRESS SINCE THEY ARE NOT EXECUTABLE PROGRAMS.
-
- tHE DEFAULT INPUT DRIVER (joystick) IS BUILT INTO THE geos
-
- kernal; geos WILL ALWAYS BOOT UP WITH THE JOYSTICK AS THE INPUT
-
- DEVICE. tHE USER MUST SELECT ANOTHER ONE IF IT IS SO DESIRED.
-
- tHEY HAVE THREE ENTRY POINTS IN THE VERY BEGINNING. tHESE ENTRY
-
- POINTS ARE A JUMP TABLE FROM $fe80-$fe88.
-
- tHE FIRST ENTRY POINT AT $fe80 IS THE MASTER RESET VECTOR.
-
- tHIS ROUTINE MUST SET THE MOUSE SPEED (lOCATION $8507) TO ZERO,
-
- AS WELL AS RESET THE MOUSE'S POSITION TO 0,0 (lOCATIONS $3a-$3c).
-
- iT MUST ALSO CLEAR THE DIRECTION BYTE (lOCATION $8506).
-
- tHE SECOND VECTOR MUST RESET THE SPEED TO ZERO (lOCATION
-
- $8507).
-
- tHE THIRD VECTOR ACTUALLY PERFORMS THE INPUT. iT MUST ALSO
-
- MODIFY THE APPROPRIATE FLAGS, ADJUST THE MOUSE'S SPEED AND
-
- POSITION.
-
- tHE FOLLOWING IS A SMALL MEMORY MAP OF LOCATIONS OF INTEREST
-
- TO INPUT DRIVERS:
-
- $30 mOUSE CONTROL FLAG
-
- bIT 7 - mOUSE IS VISIBLE, DO NOT MODIFY THE MOUSE'S
-
- POSITION IF IT IS NOT VISIBLE.
-
- $39 iNPUT STATUS FLAG
-
- bIT 7 - tHERE IS DATA IN THE KEYBOARD QUEUE, THIS IS
-
- NOT USED BY THE INPUT DRIVER.
-
- bIT 6 - mOUSE HAS CHANGED DIRECTION.
-
- bIT 5 - bUTTON STATUS HAS CHANGED, EITHER THE BUTTON
-
- HAS BEEN RELEASED OR PUSHED SINCE LAST CHECKED.
-
- $3a-$3b mOUSE'S x POSITION (0-319), RANGE CHECKING IS NOT
-
- NECESSARY.
-
- $3c mOUSE'S y POSITION (0-199), RANGE CHECKING IS NOT
-
- NECESSARY.
-
- $8501 mOUSE'S MAXIMUM SPEED.
-
- $8502 mOUSE'S MINIMUM SPEED.
-
- $8503 aCCELERATION FACTOR; ADDED OR SUBTRACTED EACH TIME THE
-
- INPUT DRIVE IS SCANNED AND THE DIRECTION HAS NOT
-
- CHANGED.
-
- $8505 bUTTON STATUS: $00-PRESSED, $80-NOT PRESSED.
-
- $8506 dIRECTION; $ff IF NO DIRECTION IS SPECIFIED; OTHERWISE
-
- A NUMBER FROM 0 TO 7:
-
- 3 2 1
-
- * + *
-
- 4 -- * -- 0
-
- * + *
-
- 5 6 7
-
- tHIS LOCATION IS NEEDED BY THE SCROLL FEATURE FOR
-
- geoPAINT. iF NOT USED, FOR EXAMPLE BY A kOALAPAD, THIS
-
- FEATURE OF geoPAINT WILL NOT WORK, BUT NOTHING ELSE
-
- WILL BE AFFECTED.
-
- $8507 mOUSE'S CURRENT SPEED.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- dEVICE dRIVERS 2-2
-
-
-
-
-
- pRINTER dRIVERS
-
-
-
- pRINTER DRIVERS EXIST IN MEMORY FROM $7900-$7fff. tHIS
-
- OVERLAPS PART OF SCREEN 2. pRINTER DRIVERS ARE ONLY MEMORY
-
- RESIDENT WHEN THEY ARE IN USE. geos LOADS THE FIRST PRINTER
-
- DRIVER THAT IT CAN FIND ON THE DISK, WHENEVER IT NEEDS TO PRINT
-
- SOMETHING. tO MAKE A PARTICULAR PRINTER DRIVER ALWAYS BE THE ONE
-
- FOUND, ALL THAT MUST BE DONE IS TO PLACE IT AHEAD OF ALL THE
-
- OTHER PRINTER DRIVERS IN THE DIRECTORY. tHERE ARE FIVE ENTRY
-
- POINTS TO A PRINTER DRIVER. tHESE FORM A JUMP TABLE FROM $7900-
-
- $790e.
-
- tHE FIRST ENTRY POINT, AT $7900, IS THE MASTER RESET. tHIS
-
- ROUTINE MUST INITIALIZE ANY GLOBAL VARIABLES THAT NEED TO BE SET.
-
- tHIS ROUTINE IS CALLED ONCE WHEN THE DRIVER IS LOADED. oNLY THE
-
- mps-1000 DRIVER USES THIS ROUTINE. aLL THE OTHERS SIMPLY RETURN
-
- WITHOUT DOING ANYTHING.
-
- tHE SECOND ENTRY POINT, AT $7903, IS THE PRINTER
-
- INITIALIZATION. tHIS ROUTINE IS CALLED JUST PRIOR TO PRINTING AN
-
- IMAGE. tHE x REGISTER MUST BE SET TO AN ERROR CODE IF THE PRINTER
-
- IS NOT AVAILABLE. tHIS ERROR CODE IS THE c64'S kernal STATUS BYTE
-
- AT LOCATION $90. tHIS ROUTINE MUST INITIALIZE ANY TEMPORARY
-
- VARIABLES USED BY THE DRIVER.
-
- tHE THIRD ENTRY POINT, AT $7906, ACTUALLY PERFORMS THE
-
- PRINTING OF A LINE. lOCATIONS $02-$03 POINT TO THE BIT IMAGE
-
- GRAPHIC DATA FOR THE LINE (640 PIXELS, 8 BITS HIGH, 640 BYTES).
-
- lOCATIONS $04-$05 POINT TO A BUFFER AREA FREE FOR USE BY THE
-
- DRIVER IF IT NEEDS IT. tHIS IS MAINLY TO GIVE PRINTERS WHICH ONLY
-
- PRINT 7 PIXELS AT A TIME A PLACE TO ACCUMULATE THE EXTRA BITS.
-
- lOCATIONS $06-$07 POINT TO THE COLOR DATA FOR THE LINE. tHIS IS
-
- ONLY FOR THE BENEFIT OF COLOR PRINTERS. tHE PRINTER DRIVER MUST
-
- NOT MODIFIFY ANY OF THESE POINTERS.
-
- tHE FOURTH ENTRY POINT, AT $7909, CLOSES THE PRINTER. tHIS
-
- ROUTINE IS CALLED WHEN THE IMAGE IS FINISHED. tHIS ALLOWS 7 BIT
-
- PRINTERS TO PRINT THE CONTENTS OF THEIR BUFFERS. tHIS IS ALSO TO
-
- GIVE THE PRINTER DRIVER A CHANCE TO PRINT A TOP OF FORM
-
- CHARACTER.
-
- tHE FIFTH ENTRY POINT, AT $790c, RETURNS THE NUMBER OF
-
- CHARACTER COLUMNS THAT THE PRINTER CAN PRINT IN THE x REGISTER.
-
- tHE MAXIMUM NUMBER OF LINES PER PAGE IS RETURNED IN THE y
-
- REGISTER. tHE ACCUMULATOR IS LOADED WITH A ZERO. tHIS GIVES
-
- APPLICATIONS THE ABILITY TO COMPUTE NECESSARY BUFFER SIZES.
-
- tYPICAL VALUES ARE 80 COLUMNS BY 90 LINES OR 60 COLUMNS BY 90
-
- LINES.
-
- fINALLY, THE PRINTER DRIVER MUST ALSO INCLUDE ITS NAME AS A
-
- STRING AT LOCATION $790f. tHIS NAME MUST BE THE SAME AS THE FILE
-
- NAME. geoWRITE AND geoPAINT WILL NOT SEE THE DRIVER IF THE FILE
-
- NAME AND THIS TEXT STRING ARE NOT THE SAME. desktop DOES NOT
-
- CARE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- fILE fORMATS 3-1
-
-
-
-
-
-
-
- vlir fILE sTRUCTURE
-
-
-
- a vlir FILE IS A TREE STRUCTURED FILE. tHE DIRECTORY POINTS
-
- TO A SINGLE SECTOR CALLED THE vlir SECTOR. tHIS SECTOR IS A LIST
-
- OF THE INITIAL TRACKS AND SECTORS OF EACH OF ITS BRANCHES (OR
-
- CHAINS). iF THE BRANCH ADDRESS IS TRACK $00 SECTOR $ff, THEN THAT
-
- BRANCH DOES NOT EXIST AND IS NOT USED. iT IS A PLACE HOLDER. a
-
- BRANCH ADDRESS OF TRACK $00 SECTOR $00 SPECIFIES THE END OF THE
-
- SECTOR. tHIS IS USED BY THE vopen TO COUNT THE NUMBER OF
-
- BRANCHES. iT IS POSSIBLE NOT TO HAVE THIS END MARKER. tHAT IS THE
-
- CASE WHEN THERE ARE 127 BRANCHES. tHIS LIMIT OF 127 BRANCHES
-
- EXPLAINS MANY OF geos'S LIMITS, IE. 127 NOTE PAD PAGES, 127
-
- PICTURES IN A PHOTO ALBUM, 64 PAGES AND 63 PICTURES IN A geoWRITE
-
- FILE, ETC. eACH BRANCH IS THE EQUIVALENT OF A NORMAL FILE, IE.
-
- EACH SECTOR POINTS TO THE NEXT WITH THE FIRST TWO BYTES.
-
-
-
-
-
- fONT fILE fORMAT
-
-
-
- fONT FILES ARE vlir FILES; THE CHAIN NUMBER (0-126) IS THE
-
- POINT SIZE. geos LIMITS A FONT TO A POINT SIZE OF 48. tHIS IS
-
- PROBABLY DUE TO MEMORY LIMITATIONS FOR STORING THE FONT.
-
- nONEXISTANT POINT SIZES HAVE vlir CHAIN ADDRESSES OF $00,$ff.
-
- fONT FILES ARE IDENTIFIED BY A UNIQUE id NUMBER WHICH IS
-
- STORED IN THE FILE'S INFO SECTOR AT OFFSET 130. tHE INFO SECTOR
-
- CONTAINS A WORD IDENTIFIER FOR EACH POINT SIZE IN THE FONT. tHESE
-
- IDENTIFIERS HAVE THE FORM: id# * 8 + POINT SIZE. tHESE id WORDS
-
- ARE USED BY geoWRITE AND geoPAINT.
-
-
-
- fONT FILE CHAIN FORMAT:
-
-
-
- $00 nUMBER OF PIXELS MINUS 1 ABOVE THE UNDERLINE. tHIS IS
-
- THE LINE OF PRINT.
-
- $01-$02 nUMBER OF BYTES IN THE BIT STREAM.
-
- $03 pOINT SIZE, CHARACTER HEIGHT IN PIXELS.
-
- $04-$05 iNDEX FROM BEGINNING OF FONT TO TABLE OF BIT STREAM
-
- INDICES. uSUALLY $0008.
-
- $06-$07 iNDEX FROM BEGINNING OF FONT TO FIRST BIT STREAM.
-
- $08-??? tABLE OF WORDS WHICH ARE INDICES INTO THE BIT STREAMS;
-
- ONE FOR EACH CHARACTER FROM SPACE (32) TO THE TILDA
-
- (126). tHERE IS ALSO AN EXTRA INDEX ON THE END. tHIS
-
- EXTRA INDEX IS NEEDED BECAUSE THE DIFFERENCE BETWEEN A
-
- CHARACTER'S INDEX AND THE NEXT CHARACTER'S INDEX IS THE
-
- WIDTH OF THE CHARACTER IN PIXELS.
-
- ???-??? pOINTED TO BY $06-$07. tHE FONT IS STORED AS SEVERAL
-
- BIT STREAMS, ONE FOR EACH LINE OF PIXELS. tHE POINT
-
- SIZE IS THE NUMBER OF BIT STREAMS. aLL THE CHARACTER
-
- IMAGES ARE STORED IN THE BIT STREAM. tHE geos kernal
-
- HAS SOME VERY SOPHISTICATED BIT MANIPULATION ROUTINES
-
- FOR ACCESSING ANY GIVEN CHARACTER.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- fILE fORMATS 3-2
-
-
-
-
-
- nOTES fILE fORMAT
-
-
-
- tHE nOTES FILE CREATED BY THE nOTEPAD DESK ACCESSORY HAS A
-
- vlir FILE STRUCTURE. eACH BRANCH IS A SINGLE SECTOR WHICH
-
- COMPRISES A PAGE OF THE NOTEPAD. tHIS SETS THE NOTEPAD'S LIMITS
-
- TO 127 PAGES OF 253 CHARACTERS. 127 PAGES BECAUSE OF THE LIMIT TO
-
- THE NUMBER OF vlir CHAINS, AND 253 CHARACTERS BECAUSE A SECTOR
-
- HOLDS 254 DATA BYTES (2 BYTES FOR THE NEXT TRACK AND SECTOR LINK)
-
- AND THE LAST CHARACTER MUST BE A ZERO TO TERMINATE TO TEXT.
-
-
-
-
-
- pHOTO sCRAP fILE
-
-
-
- tHE pHOTO sCRAP FILE IS A CODED GRAPHICS IMAGE IN A
-
- SEQUENTIALLY STRUCTURED FILE. tHE FIRST BYTE IS THE NUMBER OF
-
- BYTES WIDE THE IMAGE IS (ONE EIGTH OF THE WIDTH IN PIXELS).
-
- tHIS MEANS THAT PHOTO SCRAPS ARE ALWAYS EVEN MULTIPLES OF EIGHT
-
- PIXELS WIDE. tHE SECOND AND THIRD BYTE FORM A WORD WHICH IS THE
-
- NUMBER OF PIXELS HIGH THE IMAGE IS. fOLLOWING THESE THREE BYTES
-
- IS THE GRAPHICS IMAGE, CODED IN THE SAME FORMAT AS A CLICK BOX
-
- (SUITABLE FOR draw OR draw2). tHIS FORMAT CONSISTS OF A CODE BYTE
-
- FOLLOWED BY 1 OR MORE DATA BYTES. tHE CODE BYTES ARE CLASSIFIED
-
- INTO THE FOLLOWING THREE BASIC TYPES.
-
- 1) cODE BYTES LESS THAN 128 MEAN THAT THE FOLLOWING BYTE IS
-
- TO BE REPEATED THAT MANY TIMES.
-
- 2) cODE BYTES RANGING FROM 128 TO 219 MEAN THAT IF 128 IS
-
- SUBTRACTED FROM THE CODE BYTE THEN THE RESULT IS THE
-
- NUMBER OF DATA BYTES THAT FOLLOW.
-
- 3) cODE BYTES RANGING FROM 220 TO 255 ARE SPECIAL. fIRST 219
-
- IS SUBTRACTED FROM THE CODE BYTE, THE RESULT IS THE
-
- NUMBER OF BYTES IN THE PATTERN THAT WILL FOLLOW.
-
- fOLLOWING THIS CODE BYTE IS A REPETITION COUNT FOR THE
-
- PATTERN. fOLLOWING THIS ARE THE BYTES THAT CONSTITUTE THE
-
- PATTERN. tHESE COULD INCLUDE EITHER OF THE FIRST TWO CODE
-
- TYPES.
-
- sINCE GRAPHIC IMAGES CAN BE IN COLOR, THE COLOR DATA FOLLOWS THE
-
- GRAPHIC IMAGE DATA. tHE COLOR DATA IS CODED IN THE SAME WAY AS
-
- THE GRAPHIC DATA; HOWEVER, EACH BYTE OF COLOR DATA IS THE COLOR
-
- FOR A BLOCK OF 8 BY 8 PIXELS (A NORMAL CHARACTER SPACE). tHIS IS
-
- THE REASON THAT geoPAINT MAKES PHOTO SCRAPS A MULTIPLE OF 8
-
- PIXELS HIGH AND WIDE.
-
-
-
-
-
- tEXT sCRAP fILE
-
-
-
- tEXT SCRAPS ARE SEQUENTIALLY STRUCTURED FILES. tHE FIRST TWO
-
- BYTES OF WHICH, FORM A WORD WHICH CONTAINS THE NUMBER OF BYTES IN
-
- THE SCRAP. fOLLOWING THIS ARE TEXT SEGMENTS IN THE SAME FORMAT AS
-
- geoWRITE FILES, IE. 4 CODE BYTES FOLLOWED BY A ZERO BYTE
-
- TERMINATED STRING OF TEXT. sEE THE geoWRITE fILE FORMAT FOR MORE
-
- INFORMATION.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- fILE fORMATS 3-3
-
-
-
-
-
- pHOTO AND tEXT aLBUM fILES
-
-
-
- aLBUM FILES ARE vlir STRUCTURED FILES, WITH EACH CHAIN
-
- CONTAINING AN INDIVIDUAL PHOTO SCRAP OR TEXT SCRAP.
-
-
-
-
-
- geoWRITE fILE fORMAT
-
-
-
- geoWRITE FILES ARE vlir STRUCTURED FILES. tHE FIRST 64
-
- BRANCHES ARE THE 64 PAGES ALLOWED IN THE FILE. tHE LAST 63
-
- BRANCHES ARE PHOTO SCRAPS, IF THERE ARE ANY PRESENT IN THE
-
- DOCUMENT. sEE THE SECTION ON pHOTO sCRAP fILES AND pHOTO aLBUMS
-
- FOR MORE INFORMATION CONCERNING THE PHOTOS.
-
- tHE FIRST TWO BYTES OF EACH PAGE FORM A WORD WHICH IS THE
-
- LEFT MARGIN'S POSITION IN PIXELS. tHE NEXT TWO BYTES ARE THE
-
- RIGHT MARGIN'S POSITION. tHE FIFTH THROUGH THE SIXTEENTH BYTES
-
- FORM 6 WORDS WHICH ARE THE TAB STOP POSITIONS, ALSO IN PIXELS.
-
- tHE TEXT WHICH FOLLOWS IS STORED IN SEGMENTS. eACH SEGMENT STARTS
-
- WITH 4 CODE BYTES. tHE FIRST BYTE IS A $17, IF THIS IS A TEXT
-
- SEGMENT (MORE LATER). tHE NEXT TWO BYTES ARE THE FONT id (CODED
-
- FORM WHICH INCLUDES POINT SIZE; SEE iNFO sECTOR LOCATIONS $80-
-
- $9f). tHE FOURTH BYTE IS THE STYLE FOR THE SEGMENT; EACH BIT
-
- DESIGNATING AN ATTRIBUTE:
-
- BIT 7 uNDERLINE
-
- BIT 6 bOLD
-
- BIT 5 rEVERSED, nOT USED IN geoWRITE FILES
-
- BIT 4 iTALICS
-
- BIT 3 oUTLINE
-
- fOLLOWING THE FOUR CODE BYTES IS THE TEXT STRING WHICH HAS A ZERO
-
- BYTE TERMINATOR. iF THE INITIAL CODE BYTE IS A $10, THEN THIS
-
- SEGMENT IS NOT A TEXT SEGMENT, IT IS A PHOTO SEGMENT. pHOTO
-
- SEGMENTS HAVE FIVE CODE BYTES AND NO DATA SECTION. tHE SECOND
-
- BYTE IS THE WIDTH OF THE IMAGE IN BYTES. tHE THIRD AND FOURTH
-
- BYTES DESIGNATE THE IMAGE'S HEIGHT IN PIXELS. pHOTO SEGMENTS HAVE
-
- AN EXTRA CODE BYTE WHICH IS THE vlir CHAIN NUMBER FOR THE IMAGE.
-
- tHIS COULD ALLOW A DOCUMENT TO HAVE 63 DIFFERENT IMAGES BUT USE
-
- THE SAME IMAGE SEVERAL TIMES WITHOUT STORING IT SEVERAL TIMES.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- fILE fORMATS 3-4
-
-
-
-
-
- geoPAINT fILE fORMAT
-
-
-
- geoPAINT FILES ARE vlir STRUCTURED FILES. eACH BRANCH
-
- REPRESENTS 2 LINES OF THE PICTURE. tHE DATA IN THE BRANCHES IS
-
- STORED IN A CODED FORM THAT IS DIFFERENT FROM PHOTO SCRAPS AND
-
- CLICK BOXES. fIRST OF ALL, CONSECUTIVE BYTES DO NOT FORM A
-
- HORIZONTAL LINE. tHE BYTES ARE IN THE SAME SEQUENCE AS THE
-
- cOMMODORE STORES THEM ON THE HIRES SCREEN. eIGHT CONSECUTIVE
-
- BYTES FILL A CHARACTER POSITION. eVERY EIGHTH BYTE IS ON THE SAME
-
- HORIZONTAL LINE. tHE DATA IS STORED IN A CODED FORM TO CONSERVE
-
- DISK STORAGE. tHE CODING IS SIMPLY A CODE BYTE FOLLOWED BY SOME
-
- DATA. cODE BYTES FALL INTO ONE OF THE FOLLOWING THREE CATAGORIES:
-
- 1) cODE BYTES LESS THAN 64 DETERMINE THE NUMBER OF
-
- INDIVIDUAL BYTES THAT FOLLOW.
-
- 2) cODE BYTES RANGING FROM 64 TO 127 ARE USED FOR FILL
-
- PATTERNS. tHE LEAST SIGNIFICANT 6 BITS DETERMINE HOW MANY
-
- CHARACTER POSITIONS ARE TO BE FILLED. tHIS CODE BYTE IS
-
- FOLLOWED BY EIGHT BYTES WHICH DETERMINE THE FILL PATTERN.
-
- 3) cODE BYTES GREATER THAN 127 ARE 128 MORE THAN THE NUMBER
-
- OF TIMES TO REPEAT THE BYTE THAT FOLLOWS THE CODE BYTE.
-
- tHIS CODING SCHEME IS USED TO FIRST SPECIFY THE 1280 BYTES THAT
-
- FORM THE TWO LINES OF THE PICTURE. tHIS IS FOLLOWED BY THE 160
-
- BYTES WHICH FORM THE COLOR DATA FOR THE TWO LINES.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- dIRECTORY sTRUCTURE 4-1
-
-
-
-
-
-
-
- geos dIRECTORY eNTRY fORMAT
-
-
-
- bYTE# dESCRIPTION
-
- $00 dos FILE TYPE
-
- bIT 7 fILE CLOSED PROPERLY.
-
- bIT 6 fILE IS WRITE PROTECTED.
-
- bITS 0-2 fILE TYPE
-
- 0 del
-
- 1 seq
-
- 2 prg
-
- 3 usr
-
- 4 rel (nOT PERMITTED UNDER geos)
-
- $01 tRACK NUMBER OF FIRST SECTOR.
-
- $02 sECTOR NUMBER OF FIRST SECTOR.
-
- $03-$12 fILE NAME.
-
- $13 tRACK NUMBER FOR INFO SECTOR.
-
- $14 sECTOR NUMBER FOR INFO SECTOR.
-
- $15 fILE STRUCTURE.
-
- 0 sEQUENTIAL STRUCTURE.
-
- 1 vlir FORMAT
-
- $16 geos FILE TYPE.
-
- 0 nON-geos FILE.
-
- 1 basic pROGRAM.
-
- 2 aSSEMBLY PROGRAM.
-
- 3 dATA FILE.
-
- 4 sYSTEM FILE.
-
- 5 dESK aCCESSORY.
-
- 6 aPPLICATION.
-
- 7 aPPLICATION dATA.
-
- 8 fONT FILE.
-
- 9 pRINTER DRIVER.
-
- 10 iNPUT DRIVER.
-
- tHE NEXT FEW BYTES DEFINE THE TIME AND DATE OF THE FILE'S
-
- CREATION.
-
- $17 yEAR.
-
- $18 mONTH.
-
- $19 dAY.
-
- $1a hOUR.
-
- $1b mINUTE.
-
- $1c-$1d fILE SIZE IN BLOCKS (INCLUDING INFO SECTOR).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- dIRECTORY sTRUCTURE 4-2
-
-
-
-
-
- dIRECTORY hEADER (tRACK 18 SECTOR 0)
-
-
-
- $00 tRACK OF FIRST DIRECTORY SECTOR.
-
- $01 sECTOR OF FIRST DIRECTORY SECTOR.
-
- $02 $41, ascii 'a' INDICATING 4040 FORMAT.
-
- $03 $2a, dos VERSION.
-
- $04-$8f bLOCK aVAILABILITY mAP, bam, 35 TRACKS, 4 BYTES EACH.
-
- fIRST BYTE HAS NUMBER OF SECTORS FREE ON THAT TRACK.
-
- tHE OTHER THREE BYTES ARE A BIT STREAM. bIT ZERO OF THE
-
- FIRST OF THE THREE BYTES IS SECTOR 0. iF THE BIT IS
-
- SET, THEN THE BLOCK IS FREE.
-
- $90-$9f dISK NAME PADDED WITH SHIFTED SPACES ($a0).
-
- $a0-$a1 tWO EXTRA CHARACTERS FOR DISK NAME.
-
- $a2-$a3 dISK id.
-
- $a4 sHIFTED SPACE ($a0).
-
- $a5-$a6 ascii '2a' FOR dos VERSION.
-
- $a7-$aa sHIFTED SPACES ($a0).
-
- $ab tRACK FOR desktop'S BUFFER.
-
- $ac sECTOR FOR desktop'S BUFFER.
-
- $ad-$bc ascii 'geos FORMAT v1.1', ONLY THE FIRST 11 BYTES ARE
-
- USED TO CHECK FOR geos FORMAT.
-
- $bd-$ff fILLED WITH ZEROES.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- iNFORMATION sECTOR fORMAT 5-1
-
-
-
-
-
-
-
- iNFORMATION sECTOR
-
-
-
- bYTE # dESCRIPTION
-
- $00 $00, TRACK LINK IS ZERO BECAUSE THERE IS ONLY ONE
-
- SECTOR.
-
- $01 $ff, NUMBER OF BYTES IN THIS SECTOR.
-
- $02-$04 $03, $15, $bf, iNFORMATION SECTOR IDENTIFICATION BYTES.
-
- $05-$43 iCON IMAGE IN SPRITE FORMAT.
-
- $44 dos FILE TYPE.
-
- $45 geos FILE TYPE.
-
- $46 fILE STRUCTURE, 0 FOR SEQUENTIAL, 1 FOR vlir.
-
- $47-$48 lOAD ADDRESS.
-
- $49-$4a eND OF LOAD ADDRESS.
-
- $4b-$4c sTART OF EXECUTION ADDRESS FOR PROGRAM; UNUSED
-
- OTHERWISE.
-
- $4d-$60 cLASS OF FILE; ZERO BYTE TERMINATED.
-
- $61-$74 aUTHOR OF FILE; ZERO BYTE TERMINATED. tHE FOLLOWING
-
- geos FILE TYPES HAVE AUTHORS:
-
- 1 basic pROGRAM 6 aPPLICATION
-
- 2 aSSEMBLY pROGRAM 9 pRINTER DRIVER
-
- 5 dESK aCCESSORY 10 iNPUT dRIVER
-
- $75-$88 fOR aPPLICATION dATA FILES (AND dATA FILES?), THIS IS
-
- THE CLASS OF THE FILE THAT CREATED THIS FILE.
-
- $80-$81 fOR FONT FILES ONLY, THIS IS THE id NUMBER FOR THE
-
- FONT. tHIS IS HOW geos DISTINGUISHES BETWEEN FONTS FOR
-
- geoWRITE AND geoPAINT WITHOUT ACTUALLY STORING THE FONT
-
- NAME. eACH FONT HAS ITS OWN UNIQUE id NUMBER. tHE KNOWN
-
- FONTS HAVE THE FOLLOWING id NUMBERS:
-
- 0 bsw 13 tILDEN
-
- 1 uNIVERSITY 14 eVANS
-
- 2 cALIFORNIA 15 dURANT
-
- 3 rOMA 16 tELEGRAPH
-
- 4 dWINELLE 17 sUPERB
-
- 5 cORY 18 bOWDITCH
-
- 6 tOLMAN 19 oRMOND
-
- 7 bUBBLE 20 eLMWOOD
-
- 8 fONTKNOX 21 hEARST
-
- 9 hARMON 21 bRENNENS (bug)
-
- 10 mYKONOS 23 cHANNING
-
- 11 bOALT 24 pUTNAM
-
- 12 sTADIUM 25 lEcONTE
-
- tHERE IS A BUG ON fONTpACK i, THE bRENNENS FONT SHOULD
-
- HAVE AN id NUMBER OF 22 (OR hEARST SHOULD). sINCE THESE
-
- TWO FONTS HAVE THE SAME id NUMBER, ONLY ONE OF THEM CAN
-
- BE USED IN ANY FILE, INCLUDING IN geoPAINT. wHEN geos
-
- LOOKS FOR A FONT AFTER THE USER HAS SELECTED IT, IT
-
- USES THE id BYTE TO FIND IT. iF THE id BYTES ARE THE
-
- SAME, THEN THE FIRST FILE ENCOUNTERED IS USED.
-
- $82-$9f fOR FONT FILES ONLY; id WORDS FOR EACH POINT SIZE.
-
- tHESE ARE CODED AS: 64 * id# + POINT SIZE.
-
- $a0-$ff tEXT FIELD FOR THE FILE; ZERO BYTE TERMINATED.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- mEMORY mAP 6-1
-
-
-
-
-
- $01 r6510 bUILT-IN 6510 i/o PORT, BIT ORIENTED
-
- bIT 0 - 0=ram, 1=basic rom
-
- bIT 1 - 0=ram, 1=kERNAL rom
-
- bIT 2 - 0=cHARACTER SET rom,
-
- 1=i/o PORTS
-
- bITS 3-5 - cASSETTE CONTROL LINES
-
- bITS 6-7 - uNCONNECTED
-
- $02-$03 gpnt1 gENERAL POINTER, USUALLY USED TO PASS A
-
- PARAMETER TO A kERNAL ROUTINE.
-
- $04-$05 gpnt2 gENERAL POINTER
-
- $04 track tRACK NUMBER FOR DISK OPERATIONS
-
- $05 sector sECTOR NUMBER FOR DISK OPERATIONS
-
- $05 row rOW TO PRINT TEXT ON
-
- $06-$0b boxsiz bOX SIZE DESCRIPTOR
-
- $06 bxtop tOP ROW OF A BOX
-
- $07 bxbot bOTTOM ROW OF A BOX
-
- $08-$09 bxleft lEFT MARGIN OF A BOX
-
- $0a-$0b bxrite rIGHT MARGIN OF A BOX
-
- $0c-$0d dirpnt dIRECTORY ENTRY POINTER, RETURNED BY
-
- LOOKUP. aLSO USED AS THE DESTINATION
-
- INDIRECT POINTER FOR HIRES GRAPHIC
-
- OPERATIONS.
-
- $0e-$0f filpnt fILENAME POINTER, USED TO POINT TO A
-
- FILE NAME FOR FILE OPERATIONS. aLSO USED
-
- AS THE SOURCE INDIRECT POINTER FOR HIRES
-
- GRAPHIC OPERATIONS.
-
- $10 sgtype sELECTED geos FILE TYPE; USED BY table
-
- $11 maxfil mAXIMUM NUMBER OF FILES TO FIND; USED BY
-
- TABLE
-
- $12-$13 tEMPORARY STORAGE AREAS
-
- $14-$15 dirpt2 aLTERNATE DIRECTORY ENTRY POINTER,
-
- USUALLY POINTS TO $8400. aLSO USED TO
-
- POINT TO A FILE'S INFO SECTOR WHEN IT IS
-
- IN MEMORY.
-
- $16 dpage nUMBER OF DIRECTORY SECTORS TO SKIP
-
- BEFORE FINDING A HOLE IN THE DIRECTORY;
-
- USED BY FILE SAVE ROUTINES AND hole.
-
- aLSO USED AS A PARAMETER VALUE TO BE
-
- PASSED TO PROGRAMS. cOULD BE desktop'S
-
- PAGE NUMBER.
-
- $16-$17 classp pOINTER TO CLASS STRING; USED BY table
-
- $18-$19 column cOLUMN TO PRINT TEXT IN
-
- $20-$21 uNUSED
-
- $22-$23 patern pOINTER TO FILL PATTERN DATA
-
- $24-$25 inppnt pOINTER TO INPUT BUFFER
-
- $26-$2e fontdt cURRENT FONT DATA TABLE. sEE fONT fILE
-
- fORMAT FOR A COMPLETE DESCRIPTION OF
-
- THIS HEADER INFORMATION.
-
- $26 pline nUMBER OF PIXELS ABOVE LINE OF PRINT.
-
- uNDERLINING APPEARS 1 PIXEL BELOW THE
-
- LINE OF PRINT.
-
- $27-$28 bslen nUMBER OF BYTES IN THE FONT'S BIT
-
- STREAMS
-
- $29 psize pOINT SIZE OF THE FONT
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- mEMORY mAP 6-2
-
-
-
-
-
- $2a-$2b bspnts aDDRESS OF BIT STREAM INDICES TABLE
-
- $2c-$2d bspnt aDDRESS OF THE FIRST BIT STREAM
-
- $2e style dEFINES THE CURRENT PRINT STYLE
-
- bIT 7 - uNDERLINE
-
- bIT 6 - bOLDFACE
-
- bIT 5 - rEVERSED VIDEO
-
- bIT 4 - iTALICS
-
- bIT 3 - oUTLINE
-
- $2f scnflg cONTROLS THE SOURCE AND DESTINATION
-
- SCREENS, USED BY rowadr. bITS 6 & 7 ARE
-
- USED TO DETERMINE THE SOURCE AND
-
- DESTINATION SCREENS AS FOLLOWS:
-
- 7 6 $0c-$0d $0e-$0f
-
- 0 0 af00 af00 (midscreen)
-
- 0 1 2 1
-
- 1 0 1 1
-
- 1 1 1 2
-
- iF BIT 5 IS SET, THEN ONLY SCREEN 1 IS
-
- USED FOR TEXT (mODE 10).
-
- $30 msflag mOUSE CONTROL FLAG
-
- bIT 7 - mOUSE IS NOT VISIBLE
-
- bIT 6 - eNABLE CHECKING MOUSE'S
-
- POSITION AGAINST CURRENT
-
- MENU LIMITS.
-
- bIT 5 - eNABLE CHECKING MOUSE'S
-
- POSITION AGAINST CLICK BOX
-
- TABLE.
-
- $31-$32 mspnt pOINTER TO THE SPRITE DATA FOR THE
-
- DEFAULT MOUSE, USUALLY $84c1
-
- $33 topm tOP MARGIN, USUALLY 0 (tOP OF SCREEN)
-
- $34 botm bOTTOM MARGIN, USUALLY 199 (bOTTOM OF
-
- SCREEN)
-
- $35-$36 leftm lEFT MARGIN
-
- $37-$38 rightm rIGHT MARGIN, IF AN ATTEMPT IS MADE TO
-
- PRINT TEXT PAST THIS COLUMN, CONTROL
-
- PASSES THROUGH $84ab.
-
- $39 inpflg iNPUT CONTROL FLAGS
-
- bIT 7 - tHERE IS DATA IN THE
-
- KEYBOARD BUFFER
-
- bIT 6 - iNPUT DEVICE HAS CHANGED
-
- DIRECTION
-
- bIT 5 - bUTTON STATUS HAS CHANGED
-
- $3a-$3b mousex mOUSE'S x POSITION
-
- $3c mousey mOUSE'S y POSITION
-
- $3f-$40 cbpnt pOINTER TO CLICK BOX DATA TABLE
-
- $41-$42 jmpvec jUMP VECTOR USED BY indjmp
-
- $43-$44 winpnt pOINTER USED BY window TO POINT TO THE
-
- WINDOW DESCRIPTOR BLOCK.
-
- $8e tHE LEAST SIGNIFICANT 3 BITS OF LOCATION
-
- $dd00, USED BY SERIAL COMMUNICATIONS
-
- ROUTINES. tHESE THREE BITS REPRESENT THE
-
- vic MEMORY BANK NUMBER AND THE rs-232
-
- OUTPUT LINE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- mEMORY mAP 6-3
-
-
-
-
-
- $8f a COPY OF LOCATION $8e WITH THE CLOCK
-
- AND DATA LINES SET.
-
- $6000-$7f3f scren2 sECONDARY HIRES SCREEN, USED AS A BACKUP
-
- FOR ERASING MENUS AND WINDOWS.
-
- $7900-$7fff pRINTER DRIVER ADDRESS; SEE PRINTER
-
- DRIVER DEFINITIONS
-
- $7900 mASTER RESET FOR A PRINTER DRIVER
-
- $7903 sELECT PRINTER TO BEGIN TO PRINT AN
-
- IMAGE
-
- $7906 oUTPUT LINE OF IMAGE
-
- $7909 cLOSE PRINTER, END AN IMAGE
-
- $790c rETURN HEIGHT AND WIDTH OF PRINTED PAGE
-
- $790f pRINTER DRIVER'S NAME AS A TEXT STRING
-
- $8000-$80ff buf0 dISK BUFFER #0
-
- $8100-$81ff buf1 dISK BUFFER #1, iNFO SECTOR
-
- $8200-$82ff buf2 dISK BUFFER #2, dIRECTORY WORK AREA
-
- $8300-$83ff buf3 dISK BUFFER #3, tABLE OF TRACKS AND
-
- SECTORS
-
- $8400-$841d dentry cURRENT DIRECTORY ENTRY, SET UP BY
-
- lookup
-
- $841e-$842f dname0 nAME OF DISK IN DRIVE 0 (DEVICE 8)
-
- $8430-$8441 dname1 nAME OF DISK IN DRIVE 1 (DEVICE 9)
-
- $8442-$8453 dname2 nAME OF DISK IN DRIVE 2 (DEVICE 10)
-
- $8454-$8465 dname3 nAME OF DISK IN DRIVE 3 (DEVICE 11)
-
- $8466-$8488 uNUSED
-
- $8486 bootdv pOINT TO INDEX FROM TO REACH $848e
-
- $8489 curdrv cURRENT DRIVE'S DEVICE NUMBER
-
- $848a drvflg pOINT TO INDEX FROM TO REACH $8492
-
- $848b format fORMAT FLAG OF CURRENT DISK,
-
- $00 - geos FORMAT
-
- $ff - nON-geos DISKETTE
-
- $848c skew sKEW FACTOR FOR DISKETTE OPERATIONS
-
- $848d numdrv nUMBER OF DRIVE IN THE SYSTEM
-
- $848e-$8491 geos USES THIS TABLE TO DESIGNATE THE
-
- BOOT DRIVE, BY PLACING A $01 IN THE
-
- LOCATION CORRESPONDING TO THE BOOT
-
- DRIVE. tHIS TABLE IS REACHED BY INDEXING
-
- OFF OF $8486 WITH THE DEVICE NUMBER.
-
- $8492-$8495 dRIVE STATUS BYTES, INDEXED FROM $848a
-
- WITH THE DEVICE NUMBER.
-
- bIT 7 - tURBODOS IS LOADED
-
- bIT 6 - tURBODOS IS RUNNING
-
- $8496 chain cURRENT vlir CHAIN NUMBER
-
- $8497 nchain nUMBER OF vlir CHAINS IN THE OPEN FILE
-
- $8498 modflg mODIFIED FLAG, SET TO $ff IF THE OPEN
-
- vlir FILE HAS BEEN CHANGED; $00
-
- OTHERWISE
-
- $8499-$849a vsize vlir FILE SIZE
-
- $849b-$849c imain vECTOR FOR USER ADDITIONS TO THE geos
-
- MAIN LOOP
-
- $849d-$849e igirq vECTOR FOR geos'S irq ROUTINE
-
- $849f-$84a0 iuirq vECTOR FOR A USER'S ADDITIONS TO THE irq
-
- ROUTINE
-
- $84a1-$84a2 ibuton vECTOR FOR BUTTON STATUS CHANGES
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- mEMORY mAP 6-4
-
-
-
-
-
- $84a3-$84a4 icrhit vECTOR FOR CARRIAGE RETURN ENTERED FROM
-
- THE KEYBOARD
-
- $84a5-$84a6 imsdir vECTOR FOR MOUSE DIRECTION CHANGE
-
- $84a7-$84a8 iclsmn vECTOR TO CLOSE A MENU
-
- $84a9-$84aa iacton tHIS VECTOR IS USED FOR A LOT OF THINGS
-
- THAT REQUIRE AN ACTION TO BE PERFORMED.
-
- tHESE ITEMS INCLUDE: A CHARACTER WAS
-
- TYPED, THE BUTTON WAS RELEASED, THE
-
- BUTTON WAS PRESSED AND EITHER THE MOUSE
-
- WAS VISIBLE OR bIT 5 OF msflag (LOCATION
-
- $30) WAS SET.
-
- $84ab-$84ac imargn vECTOR FOR MARGINS EXCEEDED
-
- $84ad-$84ae ialarm vECTOR FOR THE ALARM CLOCK ROUTINE
-
- $84af-$84b0 ibrk vECTOR FOR THE brk INSTRUCTION,
-
- INITIALLY THIS IS SET TO syserr
-
- $84b1-$84b2 iclear vECTOR FOR A ROUTINE TO CLEAR A REGION
-
- OF THE SCREEN, INITIALLY SET TO copyb3
-
- $84b3 dftime dEFAULT DELAY VALUE FOR FLASHING BOXES
-
- $84b4 curflg tEXT CURSOR CONTROL FLAG
-
- bIT 7 - bLINK THE CURSOR
-
- bIT 6 - cURSOR IS TURNED ON
-
- bITS 0-5 - bLINK RATE
-
- $84b5 cbflag cONTROL FLAG FOR CLICK BOX
-
- bIT 7 - fLASH THE BOX
-
- bIT 6 - oNLY INVERT THE BOX
-
- $84b6 posflg mOUSE POSITION FLAG, SET BY irqrtn
-
- bIT 7 - mOUSE IS BELOW THE BOTTOM
-
- OF THE WINDOW, wnbot, $84b9
-
- bIT 6 - mOUSE IS ABOVE THE TOP OF
-
- THE WINDOW, wntop, $84b8
-
- bIT 5 - mOUSE IS TO THE LEFT OF THE
-
- WINDOW, wnleft, $84ba-$84bb
-
- bIT 4 - mOUSE IS TO THE RIGHT OF
-
- THE WINDOW, wnrite, $84bc-
-
- $84bd
-
- bIT 3 - mOUSE IS OUTSIDE THE MENU,
-
- mntop, mnbot, mnleft,
-
- mnrite, $86c1-$86c6
-
- $84b7 numenu nUMBER OF MENU LEVELS
-
- $84b8-$84bd wINDOW SIZE DESCRIPTION
-
- $84b8 wntop tOP ROW OF WINDOW
-
- $84b9 wnbot bOTTOM ROW OF WINDOW
-
- $84ba-$84bb wnleft lEFT MARGIN OF WINDOW
-
- $84bc-$84bd wnrite rIGHT MARGIN OF WINDOW
-
- $84be-$84bf cursx tEXT CURSOR'S x POSITION
-
- $84c0 cursy tEXT CURSOR'S y POSITION
-
- $84c1-$84ff dmouse sPRITE DATA FOR DEFAULT MOUSE
-
- $8500 uNUSED
-
- $8501 maxspd mAXIMUM MOUSE SPEED
-
- $8502 minspd mINIMUM MOUSE SPEED
-
- $8503 accel mOUSE'S ACCELERATION RATE
-
- $8504 key nEXT KEY FROM KEYBOARD BUFFER, SET BY
-
- getin
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- mEMORY mAP 6-5
-
-
-
-
-
- $8505 button cURRENT BUTTON STATUS
-
- $00 - pRESSED
-
- $ff - rELEASED
-
- $8506 msdir mOUSE'S CURRENT DIRECTION, 0-7,$ff
-
- 3 2 1
-
- 4 * 0
-
- 5 6 7
-
- $8507 mspeed cURRENT MOUSE SPEED
-
- $8508-$8509 uNUSED
-
- $850a-$850b rndnum rANDOM NUMBER GENERATOR VALUE
-
- $850c-$8514 tmpfnt tEMPORARY STORAGE FOR FONT DATA DURING
-
- MENU PROCESSING, COPY OF fontdt,
-
- LOCATIONS $26-$2e
-
- $8515 a COUNTER USED BY THE CLICK BOX ROUTINE,
-
- WHICH IS DECREMENTED BY THE irq SERVICE
-
- ROUTINE IF IT IS NONZERO. sEE aPPENDIX
-
- iv.
-
- $8516 year cURRENT YEAR (0-99)
-
- $8517 month cURRENT MONTH
-
- $8518 day cURRENT DAY OF THE MONTH
-
- $8519 hour cURRENT HOUR
-
- $851a minute cURRENT MINUTE OF THE HOUR
-
- $851b second cURRENT SECOND OF THE MINUTE
-
- $851c tenths cURRENT TENTHS OF THE SECOND
-
- $851d wincmd cOMMAND BYTE RETURNED BY THE WINDOW
-
- PROCESSOR
-
- $851e pcolor pREFERRED COLORS; HIGH NIBBLE FOR THE
-
- FOREGROUND COLOR AND LOW NIBBLE FOR THE
-
- BACKGROUND COLOR
-
- $851f-$8697 savbuf tEMPORARY STORAGE BUFFER FOR THE WINDOW
-
- PROCESSOR; SEE window FOR MORE
-
- INFORMATION
-
- $8698-$86bb uNUSED
-
- $86c0 numopt nUMBER OF OPTIONS IN THE CURRENT MENU
-
- $86c1-$86c6 cURRENT MENU SIZE DESCRIPTION
-
- $86c1 mntop tOP ROW OF MENU
-
- $86c2 mnbot bOTTOM ROW OF MENU
-
- $86c3-$86c4 mnleft lEFT MARGIN OF MENU
-
- $86c5-$86c6 mnrite rIGHT MARGIN OF MENU
-
- $86c7-$86ce mstack sTACK FOR MENU DESCRIPTORS
-
- $86cf-$86d2 option mENU OPTION THAT WAS CLICKED ON, INDEXED
-
- BY MENU LEVEL (0-3)
-
- $86d3-$86e1 limith mENU OPTION BOX LIMITS, EITHER ROW
-
- VALUES OR COLUMN HIGH BYTES
-
- $86e2-$86f0 limitl mENU OPTION BOX LIMITS, COLUMN LOW BYTES
-
- $86f1-$8718 timers tABLE OF RUNNING TIMERS, SEE $8755
-
- $8719-$872c timcmd tIMER COMMAND BYTES
-
- bIT 7 - eXECUTE ROUTINE, TIMER
-
- REACHED ZERO
-
- bIT 6 - dISABLE ROUTINE EXECUTION,
-
- LEAVE TIMER RUNNING
-
- bIT 5 - sTOP TIMER
-
- bIT 4 - sTOP TIMER
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- mEMORY mAP 6-6
-
-
-
-
-
- $872d-$8754 timrtn sUBROUTINE ADDRESSES ASSOCIATED WITH
-
- EACH TIMER
-
- $8755-$877c timval iNITIAL VALUES FOR TIMERS, COPIED TO
-
- $86f1 WHEN THE TIMER REACHES ZERO
-
- $877d numtim nUMBER OF TIMERS IN TABLE
-
- $877e dlysp sTACK POINTER FOR DELAY STACK
-
- $877f-$87a6 dlyval tIME DELAY VALUES
-
- $87a7-$87ce dlyrtn rETURN ADDRESSES FOR WHEN THE DELAY TIME
-
- HAS EXPIRED
-
- $87cf inplen lENGTH OF USER ENTRY
-
- $87d0 maxlen mAXIMUM LENGTH OF USER ENTRY
-
- $87d1-$87d2 tmpvec cOPY OF imargn, LOCATIONS $84a3-$84a4
-
- $87d3 marflg mARGIN CONTROL FLAG,
-
- bIT 7 - uSER SUPPLIES THE MARGIN
-
- EXCEEDED ROUTINE FOR THE
-
- WINDOW WITH A LINE OF TEXT,
-
- input OR WINDOW COMMAND 13
-
- $87d4-$87d6 cOLUMN AND ROW VARIABLES FOR grphic
-
- PROCESSOR
-
- $87d7 head hEAD OF KEYBOARD QUEUE
-
- $87d8 tail tAIL OF KEYBOARD QUEUE
-
- $87d9 qflag iF THIS FLAG IS ZERO, THEN THE VALUE OF
-
- nxtkey, LOCATION $87ea, IS PLACED IN THE
-
- KEYBOARD QUEUE
-
- $87da-$87e9 queue kEYBOARD QUEUE
-
- $87ea nxtkey nEXT KEY TO BE PLACED IN THE KEYBOARD
-
- BUFFER
-
- $87eb-$87f2 uSED BY KEYBOARD SCAN ROUTINE FOR
-
- DEBOUNCING THE KEYBOARD
-
- $87f3-$87fa uSED BY KEYBOARD SCAN ROUTINE TO PREVENT
-
- MULTIPLE KEY HITS
-
- $87fb-$8806 uSED BY drawch TO MANIPULATE THE FONT
-
- BIT STREAMS
-
- $8807 dwidth wIDTH OF PREVIOUS CHARACTER FOR DELETE
-
- CHARACTER
-
- $8808 tEMPORARY STORAGE USED BY THE CLICK BOX
-
- ROUTINE
-
- $8809 tEMPORARY STORAGE USED BY THE CLICK BOX
-
- ROUTINE
-
- $880a belflg a NON-ZERO VALUE DISABLES ALARM CHIMES
-
- $880b tEMPORARY STORAGE USED BY THE irq
-
- ROUTINE
-
- $880c-$884f cbtbl dEFAULT CLICK BOX TABLE USED BY THE
-
- WINDOW PROCESSOR; SEE ALSO cboxes
-
- $880c numcb nUMBER OF CLICK BOXES (8 MAXIMUM)
-
- $880d-$880e cbmsx x POSITION OF MOUSE AFTER CLICK BOXES
-
- HAVE BEEN DRAWN
-
- $880f cbmsy y POSITION OF MOUSE AFTER CLICK BOXES
-
- HAVE BEEN DRAWN
-
- $8810-$884f cbdefs cLICK BOX DEFINITIONS; SEE cboxes
-
- $8850-$8851 rETURN ADDRESS OF CALLER TO loadsw
-
- $8852 cOPY OF THE sp REGISTER FROM loadsw
-
- $8853-$8854 rETURN ADDRESS OF CALLER TO window
-
- $8855 cOPY OF THE sp REGISTER FROM window
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- mEMORY mAP 6-7
-
-
-
-
-
- $8856-$885c uSED BY COMMAND 16 IN window
-
- $8856 numfil nUMBER OF FILES FOUND
-
- $8857 ofsetl lEFT INDENT OF FILE SUBWINDOW
-
- $8858 ofsetd dOWN INDENT OF FILE SUBWINDOW
-
- $8859-$885a tblpnt pOINTER TO FILENAME TABLE
-
- $885b fstfil iNDEX OF FIRST FILE IN THE SUBWINDOW
-
- $885c selfil iNDEX ON SELECTED FILE
-
- $885d pARAMETER PASSED TO A PROGRAM, COPY OF
-
- dpage, LOCATION $16
-
- $885e cOPY OF THE STATUS REGISTER DURING
-
- SERIAL COMMUNICATIONS
-
- $885f cOPY OF LOCATION $d01a DURING SERIAL
-
- COMMUNICATIONS
-
- $8860 cOPY OF r6510, LOCATION $01, DURING
-
- SERIAL COMMUNICATIONS
-
- $8861 cOPY OF LOCATION $d015 DURING SERIAL
-
- COMMUNICATION
-
- $8862 cOPY OF LOCATION $dd00 BEFORE SENDING
-
- tURBODOS
-
- $8863-$8866 cOMMAND BUFFER FOR tURBODOS
-
- $8867 cOPY OF LOCATION $dd00 WITH SERIAL LINES
-
- CLEARED
-
- $8868 cOPY OF LOCATION $dd00 WITH CLOCK LINE
-
- SET
-
- $8869 try1 tRY COUNTER FOR DISK READ/WRITE
-
- OPERATIONS
-
- $886a dstat dISK STATUS BYTE READ BY tURBODOS
-
- $886b ldflag lOAD FLAG
-
- bIT 0 - dO NOT RUN THE APPLICATION
-
- BEING LOADED; USE ldadrs
-
- LOCATIONS $886c-$886d AS
-
- LOAD ADDRESS
-
- $886c-$886d ldadrs aLTERNATE FILE LOAD ADDRESS
-
- $886e rEPORTS WHICH DRIVE IS BEING SEARCHED
-
- $00 - LOGGED DISK
-
- $ff - CHECKING OTHER DRIVE
-
- $886f-$8874 uSED BY vlir FILE ROUTINES
-
- $886f dtrack tRACK NUMBER OF vlir FILE DIRECTORY
-
- ENTRY
-
- $8870 dsectr sECTOR NUMBER OF vlir FILE DIRECTORY
-
- ENTRY
-
- $8871-$8872 vdirpt iNDEX INTO DIRECTORY SECTOR TO vlir FILE
-
- DIRECTORY ENTRY
-
- $8873 vtrack tRACK NUMBER OF vlir SECTOR
-
- $8874 vsectr sECTOR NUMBER OF vlir SECTOR
-
- $8875 try2 tRY COUNTER USED BY cwrite
-
- $8876 verflg vERIFY FLAG; $00=no, $ff=yes
-
- $8877-$89ff uNUSED
-
- $8a00-$8a3e sPRITE DATA BLOCK #40, geos SPRITE 0
-
- $8a40-$8a7e sPRITE DATA BLOCK #41, geos SPRITE 1
-
- $8a80-$8abe sPRITE DATA BLOCK #42, geos SPRITE 2
-
- $8ac0-$8afe sPRITE DATA BLOCK #43, geos SPRITE 3
-
- $8b00-$8b3e sPRITE DATA BLOCK #44, geos SPRITE 4
-
- $8b40-$8b7e sPRITE DATA BLOCK #45, geos SPRITE 5
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- mEMORY mAP 6-8
-
-
-
-
-
- $8b80-$8bbe sPRITE DATA BLOCK #46, geos SPRITE 6
-
- $8bc0-$8bfe sPRITE DATA BLOCK #47, geos SPRITE 7
-
-
-
- $8c00-$8fe7 coldat cOLOR RAM FOR HIRES SCREEN
-
- $8fe8-$8fff sPRITE POINTERS; USUALLY SET TO 40 TO 47
-
- $9000-$9fff fIRST SECTION OF THE geos kERNAL
-
- $a000-$bf3f scren1 pRIMARY HIRES SCREEN
-
- $bf40-$fe7f sECOND SECTION OF THE geos kERNAL
-
- $fe80-$fff9 iNPUT DRIVER
-
- $fe80 mASTER RESET FOR THE INPUT DRIVER
-
- $fe83 sET MOUSE SPEED TO ZERO
-
- $fe86 rEAD INPUT DEVICE
-
- $fffa-$fffb nmi VECTOR
-
- $fffc-$fffd pOWER UP RESET VECTOR
-
- $fffe-$ffff irq VECTOR
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- aPPENDIX i : geos eRRORS i-1
-
-
-
-
-
- geos SUBROUTINES THAT ARE ABLE TO RETURN ERRORS, RETURN ONE OF
-
- THE FOLLOWING ERROR NUMBERS IN THE x REGISTER.
-
-
-
- 2 iLLEGAL TRACK OR SECTOR.
-
- 3 dISK FULL.
-
- 5 fILE NOT FOUND.
-
- 6 aTTEMPT TO DEALLOCATE AN UNALLOCATED BLOCK.
-
- 7 iLLEGAL vlir CHAIN NUMBER.
-
- 8 vlir FILE ERROR; ILLEGAL TRACK OR SECTOR SPECIFIED.
-
- 9 tOO MANY vlir CHAINS.
-
- 10 fILE IS NOT A vlir FILE.
-
- 11 eND OF FILE, FILE TOO LONG.
-
- 13 dEVICE NOT PRESENT.
-
- 31 wRITE PROTECT IS ON.
-
- 32 rEAD ERROR, NO SYNC CHARACTER.
-
- 35 dISK DRIVE fdc ERRORS:
-
- 2 hEADER BLOCK NOT FOUND.
-
- 7 vERIFY ERROR AFTER WRITE.
-
- 9 hEADER BLOCK CHECKSUM ERROR.
-
- 10 dATA BLOCK TOO LONG.
-
- 11 id MISMATCH ERROR.
-
- 38 dISK DRIVE fdc ERRORS:
-
- 4 dATA BLOCK NOT FOUND.
-
- 5 dATA BLOCK CHECKSUM ERROR.
-
- 39 wRITE ERROR. sEE cwrite.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- aPPENDIX ii : gLOSSARY ii-1
-
-
-
-
-
- tHIS IS A SIMPLE GLOSSARY FOR SOME OF THE TERMS USED IN THIS
-
- MANUAL.
-
-
-
- box : a RECTANGULAR REGION ON THE HIRES GRAPHIC SCREEN.
-
-
-
- click : tO PRESS THE BUTTON. uSUALLY USED TO SELECT THE OPTION
-
- BEING POINTED TO BY THE MOUSE.
-
-
-
- click box : a SPECIAL CONTROL STRUCTURE THAT APPEARS AS A BOX ON
-
- THE SCREEN. tHIS BOX IS CAPABLE OF BEING CLICKED ON WITH THE
-
- MOUSE. wHEN THE BOX IS CLICKED ON, SOME OPERATION OCCURS.
-
-
-
- cursor : tHE TEXT CURSOR THAT APPEARS WHEN THE USER IS ASKED TO
-
- TYPE SOMETHING IN ON THE KEYBOARD. iT APPEARS AS A THIN VERTICAL
-
- BAR.
-
-
-
- double click : tO CLICK TWICE ON AN OPTION. tHIS IS USED AS A
-
- VERIFICATION METHOD, MAKING SURE THAT THE USER WISHES TO PERFORM
-
- THAT OPERATION.
-
-
-
- font : dATA THAT REPRESENTS THE GRAPHICAL IMAGE OF A CHARACTER
-
- SET.
-
-
-
- info sector (information sector) : a SECTOR ON THE DISK
-
- ASSOCIATED WITH A FILE. tHIS CONTAINS SOME INFORMATION ABOUT THE
-
- ASSOCIATED FILE, IE. ICON IMAGE, LOAD ADDRESS, CLASS, AUTHOR AND
-
- TEXT FIELD. sEE CHAPTER 5.
-
-
-
- inline data : tHIS RELATES TO DATA THAT IS IN THE MIDDLE OF A
-
- REGION OF MACHINE CODE. tHE DATA IMMEDIATELY FOLLOWS THE
-
- SUBROUTINE CALL AND CONTROL RETURNS TO THE INSTRUCTION FOLLOWING
-
- THE DATA. tHIS RELIEVES THE USER OF THE BURDEN OF SETTING UP THE
-
- INPUT PARAMETERS TO A SUBROUTINE THAT IS SELDOMLY CALLED OR WHOSE
-
- DATA DOES NOT CHANGE. sEE pfill2 FOR AN EXAMPLE OF INLINE DATA.
-
-
-
- invert : tO CHANGE THE PIXELS ON THE HIRES SCREEN FROM BACKGROUND
-
- TO FOREGROUND, OR FROM FOREGROUND TO BACKGROUND.
-
-
-
- memory swapping : uSED BY DESK ACCESSORIES TO SAVE THE MEMORY
-
- THAT THEY WOULD NORMALLY RESIDE IN. tHIS ALLOWS THEM TO BE USED
-
- FROM WITHIN APPLICATIONS BECAUSE THE APPLICATION'S MEMORY IS
-
- RESTORED WHEN THE DESK ACCESSORY IS FINISHED.
-
-
-
- menu : a LIST OF OPTIONS FOR THE USER TO SELECT FROM. a MENU CAN
-
- BE EITHER HORIZONTAL OR VERTICAL. gENERALLY, THE MAIN MENU IS
-
- HORIZONTAL AND THE SUBMENUS ARE VERTICAL.
-
-
-
- mouse : tHE LITTLE ARROW THAT IS CONTROLLED BY THE JOYSTICK OR
-
- OTHER INPUT DEVICE.
-
-
-
- recurring timed event : tHIS IS A SUBROUTINE THAT IS TO BE
-
- EXECUTED EVERY SO OFTEN. tHE AMOUNT OF TIME BETWEEN EXECUTIONS IS
-
- STORED. tHE INTERRUPT ROUTINES DECREMENT THE TIMERS EVERY
-
- SIXTIETH OF A SECOND. wHEN THE TIMER REACHES ZERO, THE geos MAIN
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- aPPENDIX ii : gLOSSARY ii-2
-
-
-
-
-
- LOOP CALLS THE APPROPRIATE ROUTINE. tHIS ALLOWS SEVERAL THINGS TO
-
- SEEM TO HAPPEN SIMULTANEOUSLY. iT IS THE BEGINNINGS OF
-
- MULTITASKING.
-
-
-
- skew factor : tHIS IS THE NUMBER OF SECTOR TO SKIP OVER WHEN
-
- LOOKING FOR CONSECUTIVE SECTORS FOR A FILE. iT IS 8 FOR tURBODOS
-
- AND 10 FOR dos. tHE REASON FOR USING A SKEW FACTOR IS EFFICIENCY.
-
- iF PHYSICALLY CONSECUTIVE SECTORS WERE USED, THE DISK DRIVE WOULD
-
- HAVE TO WAIT FOR A COMPLETE REVOLUTION OF THE DISK BETWEEN EACH
-
- SECTOR READ. tHE SKEW FACTOR IS SET SO THAT THIS IS NOT
-
- NECESSARY. a SKEW FACTOR IS SET TO A VALUE SUCH THAT BY THE TIME
-
- THE COMPUTER HAS PROCESSED A SECTOR, THE NEXT SECTOR IS ON
-
- POSITION TO BE READ.
-
-
-
- string : a SEQUENCE OF BYTES TERMINATED BY A ZERO BYTE. uSUALLY
-
- USED FOR REPRESENTING TEXT.
-
-
-
- turbodos : tHE SPECIAL DISK ROUTINES USED BY bERKELEY sOFTWORKS
-
- TO SPEED UP DISK ACCESS.
-
-
-
- vlir : vARIABLE lENGTH iNDEX rECORD, A TREE STRUCTURED FILE
-
- STRUCTURE. pRESENTLY geos LIMITS FILES TO 127 OF THESE RECORDS.
-
-
-
- window : a SPECIAL CONTROL STRUCTURE THAT APPEARS AS A LARGE BOX
-
- ON THE SCREEN, USUALLY WITH A SHADOW. tHIS CONTROL STRUCTURE IS
-
- USED TO ELICIT SOME FORM OF USER INPUT OR SELECTION.
-
-
-
- zero byte : a SINGLE BYTE WITH THE VALUE OF ZERO.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- aPPENDIX iii : fILL pATTERNS iii-1
-
-
-
-
-
- 0 1 2 3
-
- ---------- ---------- ---------- ----------
-
- i i i********i i* * * * i i* ** *i
-
- i i i********i i * * * *i i * * i
-
- i i i********i i* * * * i i * * i
-
- i i i********i i * * * *i i* ** *i
-
- i i i********i i* * * * i i* ** *i
-
- i i i********i i * * * *i i * * i
-
- i i i********i i* * * * i i * * i
-
- i i i********i i * * * *i i* ** *i
-
- ---------- ---------- ---------- ----------
-
-
-
- 4 5 6 7
-
- ---------- ---------- ---------- ----------
-
- i***** **i i* * i i *** ***i i* * i
-
- i**** * *i i * * i i** *** *i i i
-
- i***** **i i* * i i *** ***i i * * i
-
- i**** * *i i * * i i** *** *i i i
-
- i***** **i i* * i i *** ***i i* * i
-
- i**** * *i i * * i i** *** *i i i
-
- i***** **i i* * i i *** ***i i * * i
-
- i**** * *i i * * i i** *** *i i i
-
- ---------- ---------- ---------- ----------
-
-
-
- 8 9 10 11
-
- ---------- ---------- ---------- ----------
-
- i *** ***i i********i i * * * *i i *i
-
- i********i i i i * * * *i i * i
-
- i** *** *i i********i i * * * *i i * i
-
- i********i i i i * * * *i i * i
-
- i *** ***i i********i i * * * *i i * i
-
- i********i i i i * * * *i i * i
-
- i** *** *i i********i i * * * *i i * i
-
- i********i i i i * * * *i i* i
-
- ---------- ---------- ---------- ----------
-
-
-
- 12 13 14 15
-
- ---------- ---------- ---------- ----------
-
- i* i i******* i i *******i i********i
-
- i * i i****** *i i* ******i i* * i
-
- i * i i***** **i i** *****i i* * i
-
- i * i i**** ***i i*** ****i i* * i
-
- i * i i*** ****i i**** ***i i********i
-
- i * i i** *****i i***** **i i* * i
-
- i * i i* ******i i****** *i i* * i
-
- i *i i *******i i******* i i* * i
-
- ---------- ---------- ---------- ----------
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- aPPENDIX iii : fILL pATTERNS iii-2
-
-
-
-
-
- 16 17 18 19
-
- ---------- ---------- ---------- ----------
-
- i********i i********i i * i i* * i
-
- i* i i* i i *** i i * * i
-
- i* i i* i i * * i i * * i
-
- i* i i* i i** *i i * *i
-
- i* i i********i i* i i* * i
-
- i* i i *i i *i i i
-
- i* i i *i i * i i* * * * i
-
- i* i i *i i * i i i
-
- ---------- ---------- ---------- ----------
-
-
-
- 20 21 22 23
-
- ---------- ---------- ---------- ----------
-
- i* i i * i i* * i i **i
-
- i * i i* * i i * * i i* * i
-
- i * i i i i *** *i i * * i
-
- i i i i i * * i i ** i
-
- i * i i * i i* * i i ** i
-
- i * i i * * i i *i i * i
-
- i * i i i i *i i *i
-
- i i i i i *i i *i
-
- ---------- ---------- ---------- ----------
-
-
-
- 24 25 26 27
-
- ---------- ---------- ---------- ----------
-
- i***** i i* i i * * * *i i * i
-
- i *** * i i* i i* * * * i i * i
-
- i * * i i * *i i * i i * * * i
-
- i * ***i i ***** i i * i i* * * * i
-
- i* ****i i * i i * * * *i i********i
-
- i * ***i i * i i * * i i * i
-
- i * * i i * * i i * i i * i
-
- i *** *i i*** **i i * i i * i
-
- ---------- ---------- ---------- ----------
-
-
-
- 28 29 30 31
-
- ---------- ---------- ---------- ----------
-
- i * i i *** ***i i* ******i i i
-
- i * * i i* * *i i i i * i
-
- i* * i i* ****i i* ******i i * * i
-
- i* * i i* ****i i* ******i i * * * i
-
- i* * i i *** ***i i* ** i i * * * *i
-
- i* * i i* ** i i* ** i i * * * i
-
- i * *i i***** i i* ** i i * * i
-
- i * i i***** i i* ** i i * i
-
- ---------- ---------- ---------- ----------
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- aPPENDIX iv : pROGRAMMING nOTES iv-1
-
-
-
-
-
- tHIS SECTION CONTAINS SOME INFORMATION ON WRITING PROGRAMS
-
- UNDER THE geos OPERATING SYSTEM.
-
- iT IS IMPORTANT THAT ALL geos PROGRAMS HAVE AN INFORMATION
-
- SECTOR. iF ONE IS MISSING, THEN desktop WILL NOT ALLOW YOU TO
-
- OPEN THE DISK (iT NEEDS THE ICON DATA). tHEREFORE, TO CREATE geos
-
- PROGRAMS, IT IS SUGGESTED THAT A SMALL basic-aSSEMBLY LANGUAGE
-
- SHELL BE ADDED TO THE BEGINNING OF A USER'S PROGRAM. tHIS SHELL
-
- WILL CONSIST OF A basic sys STATEMENT AND SOME ASSEMBLY CODE TO
-
- DELETE THE FILE (uSE delete) AND RESAVE THE FILE AS A geos FILE
-
- (uSE save). aFTER HAVING DONE THIS, FOR COMPLETENESS, THE INFO
-
- SECTOR THAT IS IN MEMORY SHOULD BE REWRITTEN BECAUSE save WILL
-
- CLEAR THE TEXT FIELD. aLSO THE DIRECTORY SHOULD BE MODIFIED TO
-
- INCLUDE THE PROPER TIME AND DATE OF FILE CREATION (uSE lookup AND
-
- write). aFTER ALL THIS HAS BEEN DONE, A CALL TO init01 AND restrt
-
- WILL RESTART geos. tHE convert PROGRAM BY bsw DOES NOT CONVERT
-
- ITSELF IN THIS WAY. iT IS DESIGNED SO THAT THE INFORMATION SECTOR
-
- IS EXACTLY IN THE LAST DISK SECTOR OF THE FILE. iT THEN MODIFIES
-
- THE SECTOR LINKS OF THE LAST TWO SECTORS AND CHANGES THE
-
- DIRECTORY ENTRY FOR CONVERT. tHIS LEAVES THE CONVERSION CODE AS
-
- PART OF THE FINAL PROGRAM; THE METHOD OUTLINED ABOVE DOES NOT.
-
- aNOTHER POSSIBILITY IS TO USE THE SAME METHOD AS bsw, BUT TO MAKE
-
- THE INFO SECTOR THE FIRST SECTOR AFTER THE INITIAL SHELL. tHEN
-
- ONLY 1 SECTOR AND THE DIRECTORY NEED BE MODIFIED, AND SECTORS FOR
-
- THE SHELL PROGRAM CAN BE FREED UP. tHIS IS ALL UP TO A USER'S
-
- DISCRETION.
-
- iF A PROGRAM WITH A basic START (10 sys2061), IS TO USE geos
-
- IT MUST FIRST DISABLE INTERRUPTS (sei) AND THEN SET THE SYSTEM TO
-
- ALL ram BY LOADING LOCATION $01 WITH A VALUE OF $30. tHIS IS
-
- IMPORTANT BECAUSE geos RESIDES BENEATH THE cOMMODORE'S romS AND
-
- i/o SECTION. wHEN geos NEEDS TO DO i/o, IT SWITCHES IN THE i/o
-
- PORTS, RELIEVING THE USER OF THIS BURDEN. aLSO A CALL TO init01
-
- WILL SET THINGS UP SO THAT THE geos GRAPHIC SCREEN IS DISPLAYED.
-
- aPPLICATION PROGRAMS HAVE EVERYTHING SET UP FOR THEM BEFORE
-
- THEY ARE RUN. tO TERMINATE AN APPLICATION PROPERLY, A jmp restrt
-
- IS MADE AT SOME POINT. iF THE PROGRAM IS SIMPLY A MENU, LIKE
-
- cONVERT, THEN A CALL TO menu AND AN rts IS SUFFICIENT TO BE THE
-
- MAIN BODY OF CODE. oNE OF THE MENU OPTIONS SHOULD MAKE THE JUMP
-
- TO restrt. mORE ON THAT rts LATER.
-
- dESK aCCESSORIES ARE SIMILAR TO APPLICATIONS EXCEPT THAT
-
- THEY HAVE THE MEMORY THAT THEY RESIDE IN SAVED TO DISK FIRST.
-
- tHIS MEANS THAT THEY SHOULD BE RELATIVELY SHORT PROGRAMS. tO
-
- DECIDE WHETHER SOMETHING SHOULD BE A DESK ACCESSORY OR AN
-
- APPLICATION, ONE NEED ONLY DETERMINE WHETHER IT IS NECESSARY TO
-
- BE ABLE TO RUN THE PROGRAM FROM WITHIN ANOTHER APPLICATION (IE.
-
- LIKE RUNNING pHOTO mANAGER FROM geoPAINT). dESK ACCESSORIES ALSO
-
- HAVE SOME RESTRICTIONS THAT DO NOT APPLY TO APPLICATIONS. iN
-
- ORDER FOR A DESK ACCESSORY TO OPEN A WINDOW, THE WINDOW STORAGE
-
- AREA savbuf MUST BE SAVED AND LATER RESTORED. tHIS IS BECAUSE
-
- geos SAVED EVERYTHING BEFORE EXECUTING THE DESK ACCESSORY. tO
-
- TERMINATE A DESK ACCESSORY, THE VECTOR imain SHOULD BE LOADED
-
- WITH ldswap AND AN rts SHOULD BE MADE. mORE ON THE rts IN A
-
- MOMENT. aNOTHER MEANS OF TERMINATING A DESK ACCESSORY IS SIMPLY
-
- TO JUMP TO ldswap. iT IS THE DESK ACCESSORY'S RESPONSIBILITY TO
-
- CLEAN UP AFTER ITSELF AND TO TAKE ITSELF OUT OF MEMORY.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- aPPENDIX iv : pROGRAMMING nOTES iv-2
-
-
-
-
-
- tHE rts MENTIONED IN THE PREVIOUS PARAGRAPHS CAUSES geos TO
-
- RETURN TO ITS MAIN ROUTINE (main). tHIS IS A SIMPLE POLLING LOOP
-
- THAT LOOKS FOR THINGS TO DO. hALF OF geos IS INTERRUPT DRIVEN AND
-
- HALF OF IT IS POLLED. iT FIRST CHECKS IF THE USER HAS DONE
-
- ANYTHING, IN THE FOLLOWING ORDER:
-
- 1) mOUSE DIRECTION CHANGE, JUMP THROUGH imsdir
-
- 2) bUTTON STATUS CHANGE, JUMP THROUGH ibuton
-
- 3) kEY ENTERED FROM KEYBOARD, JUMP THROUGH icrhit
-
- 4) mOUSE OUTSIDE MENU, JUMP THROUGH iclsmn
-
- tHEN THE MAIN LOOP LOOKS FOR SOMETHING TO DO BY CHECKING THE
-
- RECURRING TIMED EVENTS AND THE DELAYED ROUTINES, EXECUTING THOSE
-
- THAT ARE READY. tHE MAIN LOOP THEN MAINTAINS THE MEMORY IMAGE OF
-
- THE TIME AND DATE AND HANDLES THE ALARM CLOCK. fINALLY, IF THERE
-
- IS SOMETHING AT imain, IT IS CALLED AND THE LOOP STARTS OVER.
-
- tHE irq INTERRUPT ROUTINE DOES MAINLY i/o OPERATIONS. fIRST
-
- IT DECREMENTS LOCATION $8515 IF IT IS NON-ZERO (COUNTER FOR CLICK
-
- BOX HANDLER). tHEN IT SCANS THE KEYBOARD AND ENTERS ANY DEPRESSED
-
- KEYS INTO THE KEYBOARD BUFFER. lOCATION $880a IS THEN DECREMENTED
-
- IF IT IS NON-ZERO (CHIME COUNTER). nEXT, A JUMP THROUGH igirq IS
-
- MADE TO irqrtn. aFTER WHICH, A JUMP IS MADE THROUGH iuirq TO
-
- PROCESS ANY USER ADDITIONS TO THE irq SERVICE ROUTINE. tHESE
-
- ADDITIONS SHOULD BE FAIRLY SHORT SO AS NOT TO MAKE THE INTERRUPT
-
- TAKE TOO LONG. fINALLY THE STATUS QUO IS RESTORED AND THINGS GO
-
- ON THEIR MERRY WAY.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- tHIS SPECIAL petscii arcED VERSION OF THIS mANUAL WAS EDITED AND CREATED
-
- BY eARL gOLDBERG OF THE cOMMODORE uSERS gROUP OF kANSAS cITY. 03-dEC-86
-
-
-
-
-
-
-
-