(sic09/basic09.asm):00001 ******************************************************************** (sic09/basic09.asm):00002 * Basic09 - BASIC for OS-9 (sic09/basic09.asm):00003 * (sic09/basic09.asm):00004 * Edt/Rev YYYY/MM/DD Modified by (sic09/basic09.asm):00005 * Comment (sic09/basic09.asm):00006 * ------------------------------------------------------------------ (sic09/basic09.asm):00007 * 22 2002/10/09 Boisy G. Pitre (sic09/basic09.asm):00008 * Obtained from Curtis Boyle, marked V1.1.0. (sic09/basic09.asm):00009 * (sic09/basic09.asm):00010 * BASIC09 - Copyright (C) 1980 by Microware & Motorola (sic09/basic09.asm):00011 *********** (sic09/basic09.asm):00012 * Basic09 & RunB programs have extended memory module headers. Layout is as (sic09/basic09.asm):00013 * follows: (sic09/basic09.asm):00014 * Offset | Name | Purpose (sic09/basic09.asm):00015 * --------+------------+---------- (sic09/basic09.asm):00016 * $0000 | M$ID | Module sync bytes ($87CD) (sic09/basic09.asm):00017 * $0002 | M$Size | Size of module (sic09/basic09.asm):00018 * $0004 | M$Name | Offset to module name (sic09/basic09.asm):00019 * $0006 | M$Type | Type/Language ($22 for RUNB modules) (sic09/basic09.asm):00020 * $0007 | M$Revs | Attributes/Revision level (sic09/basic09.asm):00021 * $0008 | M$Parity | Header parity check (sic09/basic09.asm):00022 * $0009 | M$Exec | Execution offset (start of tokenized RUNB code) (sic09/basic09.asm):00023 * $000B | ??? | Data area size required (sic09/basic09.asm):00024 * $000D | ??? | ??? (sic09/basic09.asm):00025 * $0017 | ??? | Flags: (sic09/basic09.asm):00026 * | | x0000000 - 1=Packed, 0=Not packed (sic09/basic09.asm):00027 * | | 0x000000 - ??? but 1 when CRC has just been made (sic09/basic09.asm):00028 * | | 0000000x - 1=Line with compiler error (sic09/basic09.asm):00029 * | | 0=No lines with compiler errors (sic09/basic09.asm):00030 * $0018 | ??? | Size of module name (sic09/basic09.asm):00031 * NitrOS9 V1.21 mods (sic09/basic09.asm):00032 * 06/17/94 - Changed intercept routine @ L07B5: Replaced LSL $100,u 4 LDW #$100 (sic09/basic09.asm):00037 * 1 CLRA 2 CLR ,-s (sic09/basic09.asm):00038 * 1 CLRB 3 TFM s,u+ (sic09/basic09.asm):00039 * 2 STD ,--u 2 LEAS 1,s (sic09/basic09.asm):00040 * 3 CMPU ,s 1 NOP (sic09/basic09.asm):00041 * 2 BHI L07C9 1 NOP (sic09/basic09.asm):00042 * Bytes: 15 15 (sic09/basic09.asm):00043 * - Changed CLRA/LDB #$01 to LDD #$0001 @ end of start (sic09/basic09.asm):00044 * 06/22/94 - Changed L0DBB (reset temp buffer to empty state) to use PSHS D (sic09/basic09.asm):00045 * - LDA #1 / STA ' buffer fill @ L08E5 to use LDQ/STQ (sic09/basic09.asm):00235 * 11/12/95 - Changed L3405 to use INCD instead of ADDD #1 (NEXT Integer STEP 1 (sic09/basic09.asm):00236 * - Changed L341E to TFR A,E instead of PSHS A, changed TST ,S+ to (sic09/basic09.asm):00237 * TSTE (NEXT Integer STEP <>1) (sic09/basic09.asm):00238 * 11/16/95 - Changed to L345E (REAL NEXT STEP 1) to do direct call to REAL add (sic09/basic09.asm):00239 * routine (changed BSR L321E/BSR L34DC to LBSR L3FB1) (sic09/basic09.asm):00240 * - As per above, changed same call @ L34A5 (REAL NEXT STEP <>1), and (sic09/basic09.asm):00241 * eliminated L321E completely (sic09/basic09.asm):00242 * - @ L347E & L34CC, eliminated L3221 calls, replaced BSR L3221's (sic09/basic09.asm):00243 * with LBSR L4449 (Real Compare) (in REAL NEXT, both cases) (sic09/basic09.asm):00244 * 11/25/95 - Remove L50A1 & L509E (calls to REAL Multiply & REAL divide), (sic09/basic09.asm):00245 * changed L529B to call them directly (prints exponents?) (sic09/basic09.asm):00246 * 11/30/95 - Changed L3AF9 to use SUBR (saves 1 byte/9 cyc on RUN (mlsub) (sic09/basic09.asm):00247 * 12/05/95 - Changed L3A48 (called by REM) to use ABX instead of CLRA/LEAX D,X (sic09/basic09.asm):00248 * (used to jump ahead in I-Code to skip remark text) (sic09/basic09.asm):00249 * - Attempted to just move L33DF (NEXT) & L34E5 (FOR) Tables to just (sic09/basic09.asm):00250 * after L3446 for 8 bit offsets - also removed LSLB @ L33EA (sic09/basic09.asm):00251 * 02/12/95 - Changed routines around L57EB to skip ORCC if not necessary (blo& (sic09/basic09.asm):00252 * bcs) (sic09/basic09.asm):00253 * - Changed LEAX to 8 bit from 16 @ L4B89 (sic09/basic09.asm):00254 * 06/07/14 - Changed Date$ to conform with Y2K changes in F$Time. RG (sic09/basic09.asm):00255 ******************************** (sic09/basic09.asm):00256 (sic09/basic09.asm):00257 * Version Numbers 0001 (sic09/basic09.asm):00258 B09Vrsn equ 1 0001 (sic09/basic09.asm):00259 B09Major equ 1 0000 (sic09/basic09.asm):00260 B09Minor equ 0 (sic09/basic09.asm):00261 (sic09/basic09.asm):00262 nam Basic09 (sic09/basic09.asm):00263 ttl BASIC for OS-9 (sic09/basic09.asm):00264 (sic09/basic09.asm):00265 ifp1 (sic09/basic09.asm):00266 use defsfile ( defsfile):00001 use os9.d ( os9.d):00001 IFNE OS9.D-1 ( os9.d):00002 0001 ( os9.d):00003 OS9.D SET 1 ( os9.d):00004 ( os9.d):00005 ******************************************************************** ( os9.d):00006 * os9.d - NitrOS-9 System Definitions ( os9.d):00007 * ( os9.d):00008 * Edt/Rev YYYY/MM/DD Modified by ( os9.d):00009 * Comment ( os9.d):00010 * ------------------------------------------------------------------ ( os9.d):00011 * 1983/03/01 ( os9.d):00012 * Six new Status codes added: SS.BlkRd - SS.ELog. ( os9.d):00013 * ( os9.d):00014 * 1983/03/08 ( os9.d):00015 * New status code added: SS.SSig. ( os9.d):00016 * ( os9.d):00017 * 1983/04/21 ( os9.d):00018 * Added new F$ call for 7 day clock function for control level II. ( os9.d):00019 * ( os9.d):00020 * 1983/05/04 William G. Phelps ( os9.d):00021 * F$CMDir service request added for NCM. ( os9.d):00022 * ( os9.d):00023 * 1983/06/29 ( os9.d):00024 * Added ProfFlag to init module offsets. ( os9.d):00025 * ( os9.d):00026 * 1983/07/12 Mark G. Hawkins ( os9.d):00027 * Added SS.Atlas for CoCo. ( os9.d):00028 * ( os9.d):00029 * 1983/10/08 Robert E. Sorensen ( os9.d):00030 * Added SS.Break for ACIA Break command. ( os9.d):00031 * ( os9.d):00032 * 1983/11/29 ( os9.d):00033 * Added SS.RsBit to reserve (not allocate in) bitmap sector. ( os9.d):00034 * ( os9.d):00035 * 1984/02/17 ( os9.d):00036 * Added reserved status codes for Hoshi and Gimix. ( os9.d):00037 * ( os9.d):00038 * 1984/03/07 Mark G. Hawkins ( os9.d):00039 * Added SS.Cursr and SS.ScSiz for CoCo. ( os9.d):00040 * Added New signal code S$Window ... CoCo future. ( os9.d):00041 * ( os9.d):00042 * 1984/04/11 Mark G. Hawkins ( os9.d):00043 * Added SS.Sound for CoCo. ( os9.d):00044 * ( os9.d):00045 * 1984/05/05 Mark G. Hawkins ( os9.d):00046 * Added label SS.SetMF to Gimix Reserved byte ( os9.d):00047 * Changed SS.Sound to SS.KySns. ( os9.d):00048 * ( os9.d):00049 * 1985/05/24 Mark G. Hawkins ( os9.d):00050 * Added SS.ComSt Communication Set (Parity,Baud). ( os9.d):00051 * ( os9.d):00052 * 1985/05/28 Tim A. Harris ( os9.d):00053 * Added F$VIRQ for Virtual IRQ. ( os9.d):00054 * ( os9.d):00055 * 1985/07/30 Mark G. Hawkins ( os9.d):00056 * Added SS.Open, SS.Close, SS.HngUP. ( os9.d):00057 * ( os9.d):00058 * 1985/07/30 Mark G. Hawkins ( os9.d):00059 * Added E$HangUp error for CDC Lost. ( os9.d):00060 * ( os9.d):00061 * 1985/08/24 Doug J. Nicholson ( os9.d):00062 * Added DT.NFM device type. ( os9.d):00063 * ( os9.d):00064 * 1985/06/20 Mark G. Hawkins ( os9.d):00065 * Added SS.MAGBf, SS.SLCBf. ( os9.d):00066 * ( os9.d):00067 * 1985/08/29 Ken Mizuno ( os9.d):00068 * Fixed DT.SBF/NFM values to 3/4. ( os9.d):00069 * ( os9.d):00070 * 1985/09/01 Ken Mizuno ( os9.d):00071 * Added SS.FDInf, SS.Attr to accept 68K request thru NET. ( os9.d):00072 * ( os9.d):00073 * 1985/09/03 Ken Mizuno/Robert F. Doggett ( os9.d):00074 * Eliminated E$BPrcID, made Error #238 become E$DNE for ( os9.d):00075 * 68000 compatability. ( os9.d):00076 * ( os9.d):00077 * 1986/04/15 Mark G. Hawkins ( os9.d):00078 * F$AlHRAM System call added for CoCo. ( os9.d):00079 * ( os9.d):00080 * 1986/09/08 Mark G. Hawkins ( os9.d):00081 * F$Alarm for CoCo Clock Module. ( os9.d):00082 * ( os9.d):00083 * 1986/09/17 Mark G. Hawkins ( os9.d):00084 * SS.Tone For CoCo. ( os9.d):00085 * ( os9.d):00086 * 1986/09/23 Mark G. Hawkins ( os9.d):00087 * Added F$NMLink and F$NMLoad for CoCo. ( os9.d):00088 * ( os9.d):00089 * 1986/09/30 Mark G. Hawkins ( os9.d):00090 * Added Reserved User $70 to $7f in system calls. ( os9.d):00091 * ( os9.d):00092 * 1986/09/30 Mark G. Hawkins ( os9.d):00093 * Created Color Computer 3 Version of OS9Defs. ( os9.d):00094 * ( os9.d):00095 * 1998/10/03 Boisy G. Pitre ( os9.d):00096 * Consolidated Level 1/Level 2 os9defs. ( os9.d):00097 * ( os9.d):00098 * 2002/04/04 Boisy G. Pitre ( os9.d):00099 * Consolidated Level 2/Level 2 V3 os9defs. ( os9.d):00100 * ( os9.d):00101 * 2002/04/30 Boisy G. Pitre ( os9.d):00102 * Added NitrOS-9 definitions. ( os9.d):00103 * ( os9.d):00104 * 2003/05/30 Boisy G. Pitre ( os9.d):00105 * Added WD1002 sys vars to Level One section. ( os9.d):00106 * ( os9.d):00107 * 2003/06/02 Boisy G. Pitre ( os9.d):00108 * Fixed incorrectly ordered D.X*** system globals for OS-9 Level One and ( os9.d):00109 * changed the sizes from 2 to 3 bytes. ( os9.d):00110 * DT.NFM is now the same for both Level One and Level Two. ( os9.d):00111 * Added DT.CDFM type for future CD-ROM file manager ( os9.d):00112 * ( os9.d):00113 * 2003/11/05 Robert Gault ( os9.d):00114 * Fixed MouseInf. Made it rmb 2 as it should be. Also changes to init and cc3io. ( os9.d):00115 * ( os9.d):00116 * 2005/11/02 P.Harvey-Smith ( os9.d):00117 * Added definitions for boot areas on Dragon computers. ( os9.d):00118 * ( os9.d):00119 * 2006/03/03 Boisy G. Pitre ( os9.d):00120 * Added F$Debug and D.DbgMem areas, common to all levels of NitrOS-9 ( os9.d):00121 * ( os9.d):00122 * 2019/10/30 Bill Nobel, from discussions with L. Curtis Boyle ( os9.d):00123 * Added I$ModDsc call (modify device descriptor in system memory) BN/LCB ( os9.d):00124 * ( os9.d):00125 * 2019/12/27 L. Curtis Boyle ( os9.d):00126 * Added D.IRQTmp for faster temp vars (currently used in Krn F$Move/6809, ( os9.d):00127 * can be used elsewheres later, in small routines with IRQ's turned off). ( os9.d):00128 * ( os9.d):00129 * 2019/10/30 Bill Nobel, from discussions with L. Curtis Boyle ( os9.d):00130 * Added S$FS2Sig & S$KQ3Sig (both $80) FS2 & KQ3 (VRN) signal codes added (LCB). ( os9.d):00131 ( os9.d):00132 NAM os9.d ( os9.d):00133 IFEQ Level-1 ( os9.d):00134 TTL NitrOS-9 Level 1 System Symbol Definitions ( os9.d):00135 ELSE ( os9.d):00136 IFEQ Level-2 ( os9.d):00137 TTL NitrOS-9 Level 2 System Symbol Definitions ( os9.d):00138 ELSE ( os9.d):00139 TTL NitrOS-9 Level 3 System Symbol Definitions ( os9.d):00140 ENDC ( os9.d):00141 ENDC ( os9.d):00142 ( os9.d):00143 * Common definitions 0001 ( os9.d):00144 true EQU 1 useful name 0000 ( os9.d):00145 false EQU 0 useful name ( os9.d):00146 ( os9.d):00147 PAG ( os9.d):00148 ***************************************** ( os9.d):00149 * System Service Request Code Definitions ( os9.d):00150 * ( os9.d):00151 ORG 0 0000 ( os9.d):00152 F$Link RMB 1 Link to Module 0001 ( os9.d):00153 F$Load RMB 1 Load Module from File 0002 ( os9.d):00154 F$UnLink RMB 1 Unlink Module 0003 ( os9.d):00155 F$Fork RMB 1 Start New Process 0004 ( os9.d):00156 F$Wait RMB 1 Wait for Child Process to Die 0005 ( os9.d):00157 F$Chain RMB 1 Chain Process to New Module 0006 ( os9.d):00158 F$Exit RMB 1 Terminate Process 0007 ( os9.d):00159 F$Mem RMB 1 Set Memory Size 0008 ( os9.d):00160 F$Send RMB 1 Send Signal to Process 0009 ( os9.d):00161 F$Icpt RMB 1 Set Signal Intercept 000A ( os9.d):00162 F$Sleep RMB 1 Suspend Process 000B ( os9.d):00163 F$SSpd RMB 1 Suspend Process 000C ( os9.d):00164 F$ID RMB 1 Return Process ID 000D ( os9.d):00165 F$SPrior RMB 1 Set Process Priority 000E ( os9.d):00166 F$SSWI RMB 1 Set Software Interrupt 000F ( os9.d):00167 F$PErr RMB 1 Print Error 0010 ( os9.d):00168 F$PrsNam RMB 1 Parse Pathlist Name 0011 ( os9.d):00169 F$CmpNam RMB 1 Compare Two Names 0012 ( os9.d):00170 F$SchBit RMB 1 Search Bit Map 0013 ( os9.d):00171 F$AllBit RMB 1 Allocate in Bit Map 0014 ( os9.d):00172 F$DelBit RMB 1 Deallocate in Bit Map 0015 ( os9.d):00173 F$Time RMB 1 Get Current Time 0016 ( os9.d):00174 F$STime RMB 1 Set Current Time 0017 ( os9.d):00175 F$CRC RMB 1 Generate CRC ($17) ( os9.d):00176 ( os9.d):00177 IFGT Level-1 ( os9.d):00178 ( os9.d):00179 * NitrOS-9 Level 2 system calls 0018 ( os9.d):00180 F$GPrDsc RMB 1 Get Process Descriptor copy ($18) 0018 ( os9.d):00181 F$GBlkMp RMB 1 Get System Block Map copy ($19) 0018 ( os9.d):00182 F$GModDr RMB 1 Get Module Directory copy ($1A) 0018 ( os9.d):00183 F$CpyMem RMB 1 Copy External Memory ($1B) 0018 ( os9.d):00184 F$SUser RMB 1 Set User ID number ($1C) 0018 ( os9.d):00185 F$UnLoad RMB 1 Unlink Module by name ($1D) 0018 ( os9.d):00186 F$Alarm RMB 1 Color Computer 3 Alarm Call ($1E) ( os9.d):00187 RMB 2 Reserved - For overlap of other systems ($1F) 0018 ( os9.d):00188 F$NMLink RMB 1 Color Computer 3 Non-Mapping Link ($21) 0018 ( os9.d):00189 F$NMLoad RMB 1 Color Computer 3 Non-Mapping Load ($22) ( os9.d):00190 ( os9.d):00191 ELSE ( os9.d):00192 ( os9.d):00193 * NitrOS-9 Level 1 system call padding 0018 ( os9.d):00194 RMB 11 ( os9.d):00195 ( os9.d):00196 ENDC ( os9.d):00197 0023 ( os9.d):00198 F$Debug RMB 1 Drop the system into the debugger ($23) ( os9.d):00199 ( os9.d):00200 IFGT Level-1 ( os9.d):00201 ( os9.d):00202 ORG $25 0024 ( os9.d):00203 F$TPS RMB 1 Return System's Ticks Per Second 0024 ( os9.d):00204 F$TimAlm RMB 1 CoCo individual process alarm call ( os9.d):00205 ( os9.d):00206 ENDC ( os9.d):00207 ( os9.d):00208 ORG $27 Beginning of System Reserved Calls ( os9.d):00209 * NitrOS-9 common system calls 0027 ( os9.d):00210 F$VIRQ RMB 1 Install/Delete Virtual IRQ 0028 ( os9.d):00211 F$SRqMem RMB 1 System Memory Request 0029 ( os9.d):00212 F$SRtMem RMB 1 System Memory Return 002A ( os9.d):00213 F$IRQ RMB 1 Enter IRQ Polling Table 002B ( os9.d):00214 F$IOQu RMB 1 Enter I/O Queue 002C ( os9.d):00215 F$AProc RMB 1 Enter Active Process Queue 002D ( os9.d):00216 F$NProc RMB 1 Start Next Process 002E ( os9.d):00217 F$VModul RMB 1 Validate Module 002F ( os9.d):00218 F$Find64 RMB 1 Find Process/Path Descriptor 0030 ( os9.d):00219 F$All64 RMB 1 Allocate Process/Path Descriptor 0031 ( os9.d):00220 F$Ret64 RMB 1 Return Process/Path Descriptor 0032 ( os9.d):00221 F$SSvc RMB 1 Service Request Table Initialization 0033 ( os9.d):00222 F$IODel RMB 1 Delete I/O Module ( os9.d):00223 ( os9.d):00224 IFGT Level-1 ( os9.d):00225 0034 ( os9.d):00226 F$SLink RMB 1 System Link 0034 ( os9.d):00227 F$Boot RMB 1 Bootstrap System 0034 ( os9.d):00228 F$BtMem RMB 1 Bootstrap Memory Request 0034 ( os9.d):00229 F$GProcP RMB 1 Get Process ptr 0034 ( os9.d):00230 F$Move RMB 1 Move Data (low bound first) 0034 ( os9.d):00231 F$AllRAM RMB 1 Allocate RAM blocks 0034 ( os9.d):00232 F$AllImg RMB 1 Allocate Image RAM blocks 0034 ( os9.d):00233 F$DelImg RMB 1 Deallocate Image RAM blocks 0034 ( os9.d):00234 F$SetImg RMB 1 Set Process DAT Image 0034 ( os9.d):00235 F$FreeLB RMB 1 Get Free Low Block 0034 ( os9.d):00236 F$FreeHB RMB 1 Get Free High Block 0034 ( os9.d):00237 F$AllTsk RMB 1 Allocate Process Task number 0034 ( os9.d):00238 F$DelTsk RMB 1 Deallocate Process Task number 0034 ( os9.d):00239 F$SetTsk RMB 1 Set Process Task DAT registers 0034 ( os9.d):00240 F$ResTsk RMB 1 Reserve Task number 0034 ( os9.d):00241 F$RelTsk RMB 1 Release Task number 0034 ( os9.d):00242 F$DATLog RMB 1 Convert DAT Block/Offset to Logical 0034 ( os9.d):00243 F$DATTmp RMB 1 Make temporary DAT image (Obsolete) 0034 ( os9.d):00244 F$LDAXY RMB 1 Load A [X,[Y]] 0034 ( os9.d):00245 F$LDAXYP RMB 1 Load A [X+,[Y]] 0034 ( os9.d):00246 F$LDDDXY RMB 1 Load D [D+X,[Y]] 0034 ( os9.d):00247 F$LDABX RMB 1 Load A from 0,X in task B 0034 ( os9.d):00248 F$STABX RMB 1 Store A at 0,X in task B 0034 ( os9.d):00249 F$AllPrc RMB 1 Allocate Process Descriptor 0034 ( os9.d):00250 F$DelPrc RMB 1 Deallocate Process Descriptor 0034 ( os9.d):00251 F$ELink RMB 1 Link using Module Directory Entry 0034 ( os9.d):00252 F$FModul RMB 1 Find Module Directory Entry 0034 ( os9.d):00253 F$MapBlk RMB 1 Map Specific Block 0034 ( os9.d):00254 F$ClrBlk RMB 1 Clear Specific Block 0034 ( os9.d):00255 F$DelRAM RMB 1 Deallocate RAM blocks 0034 ( os9.d):00256 F$GCMDir RMB 1 Pack module directory 0034 ( os9.d):00257 F$AlHRAM RMB 1 Allocate HIGH RAM Blocks ( os9.d):00258 ( os9.d):00259 * Alan DeKok additions 0034 ( os9.d):00260 F$ReBoot RMB 1 Reboot machine (reload OS9Boot) or drop to RSDOS 0034 ( os9.d):00261 F$CRCMod RMB 1 CRC mode, toggle or report current status 0034 ( os9.d):00262 F$XTime RMB 1 Get Extended time packet from RTC (fractions of second) 0034 ( os9.d):00263 F$VBlock RMB 1 Verify modules in a block of memory, add to module directory ( os9.d):00264 ( os9.d):00265 ENDC ( os9.d):00266 ( os9.d):00267 * ( os9.d):00268 * Numbers $70 through $7F are reserved for user definitions ( os9.d):00269 * ( os9.d):00270 ORG $70 ( os9.d):00271 ( os9.d):00272 IFEQ Level-1 ( os9.d):00273 ( os9.d):00274 RMB 16 Reserved for user definition ( os9.d):00275 ( os9.d):00276 ELSE ( os9.d):00277 0070 ( os9.d):00278 F$RegDmp RMB 1 Ron Lammardo's debugging register dump 0071 ( os9.d):00279 F$NVRAM RMB 1 Non Volatile RAM (RTC battery backed static) read/write ( os9.d):00280 0072 ( os9.d):00281 RMB $80-. Reserved for user definitions ( os9.d):00282 ENDC ( os9.d):00283 ( os9.d):00284 PAG ( os9.d):00285 ************************************** ( os9.d):00286 * I/O Service Request Code Definitions ( os9.d):00287 * ( os9.d):00288 ORG $80 0080 ( os9.d):00289 I$Attach RMB 1 Attach I/O Device 0081 ( os9.d):00290 I$Detach RMB 1 Detach I/O Device 0082 ( os9.d):00291 I$Dup RMB 1 Duplicate Path 0083 ( os9.d):00292 I$Create RMB 1 Create New File 0084 ( os9.d):00293 I$Open RMB 1 Open Existing File 0085 ( os9.d):00294 I$MakDir RMB 1 Make Directory File 0086 ( os9.d):00295 I$ChgDir RMB 1 Change Default Directory 0087 ( os9.d):00296 I$Delete RMB 1 Delete File 0088 ( os9.d):00297 I$Seek RMB 1 Change Current Position 0089 ( os9.d):00298 I$Read RMB 1 Read Data 008A ( os9.d):00299 I$Write RMB 1 Write Data 008B ( os9.d):00300 I$ReadLn RMB 1 Read Line of ASCII Data 008C ( os9.d):00301 I$WritLn RMB 1 Write Line of ASCII Data 008D ( os9.d):00302 I$GetStt RMB 1 Get Path Status 008E ( os9.d):00303 I$SetStt RMB 1 Set Path Status 008F ( os9.d):00304 I$Close RMB 1 Close Path 0090 ( os9.d):00305 I$DeletX RMB 1 Delete from current exec dir 0091 ( os9.d):00306 I$ModDsc RMB 1 Modify SCF/RBF Descriptor in Memory ( os9.d):00307 ( os9.d):00308 ******************* ( os9.d):00309 * File Access Modes ( os9.d):00310 * 0001 ( os9.d):00311 READ. EQU %00000001 0002 ( os9.d):00312 WRITE. EQU %00000010 0003 ( os9.d):00313 UPDAT. EQU READ.+WRITE. 0004 ( os9.d):00314 EXEC. EQU %00000100 0008 ( os9.d):00315 PREAD. EQU %00001000 0010 ( os9.d):00316 PWRIT. EQU %00010000 0020 ( os9.d):00317 PEXEC. EQU %00100000 0040 ( os9.d):00318 SHARE. EQU %01000000 0080 ( os9.d):00319 DIR. EQU %10000000 0020 ( os9.d):00320 ISIZ. EQU %00100000 ( os9.d):00321 ( os9.d):00322 ************** ( os9.d):00323 * Signal Codes ( os9.d):00324 * ( os9.d):00325 ORG 0 0000 ( os9.d):00326 S$Kill RMB 1 Non-Interceptable Abort 0001 ( os9.d):00327 S$Wake RMB 1 Wake-up Sleeping Process 0002 ( os9.d):00328 S$Abort RMB 1 Keyboard Abort 0003 ( os9.d):00329 S$Intrpt RMB 1 Keyboard Interrupt 0004 ( os9.d):00330 S$Window RMB 1 Window Change 0004 ( os9.d):00331 S$HUP EQU S$Window Hang Up 0005 ( os9.d):00332 S$Alarm RMB 1 CoCo individual process' alarm signal ( os9.d):00333 ( os9.d):00334 ifgt Level-1 ( os9.d):00335 ORG $80 0006 ( os9.d):00336 S$FS2Sig RMB 1 FS2 VIRQ Signal code (VRN) 0006 ( os9.d):00337 S$KQ3Sig EQU S$FS2Sig KQ3 VIRQ Signal code (VRN) ( os9.d):00338 endc ( os9.d):00339 ( os9.d):00340 PAG ( os9.d):00341 ********************************** ( os9.d):00342 * Status Codes for GetStat/GetStat ( os9.d):00343 * ( os9.d):00344 ORG 0 0000 ( os9.d):00345 SS.Opt RMB 1 Read/Write PD Options 0001 ( os9.d):00346 SS.Ready RMB 1 Check for Device Ready 0002 ( os9.d):00347 SS.Size RMB 1 Read/Write File Size 0003 ( os9.d):00348 SS.Reset RMB 1 Device Restore 0004 ( os9.d):00349 SS.WTrk RMB 1 Device Write Track 0005 ( os9.d):00350 SS.Pos RMB 1 Get File Current Position 0006 ( os9.d):00351 SS.EOF RMB 1 Test for End of File 0007 ( os9.d):00352 SS.Link RMB 1 Link to Status routines 0008 ( os9.d):00353 SS.ULink RMB 1 Unlink Status routines 0009 ( os9.d):00354 SS.Feed RMB 1 Issue form feed 000A ( os9.d):00355 SS.Frz RMB 1 Freeze DD. information 000B ( os9.d):00356 SS.SPT RMB 1 Set DD.TKS to given value 000C ( os9.d):00357 SS.SQD RMB 1 Sequence down hard disk 000D ( os9.d):00358 SS.DCmd RMB 1 Send direct command to disk 000E ( os9.d):00359 SS.DevNm RMB 1 Return Device name (32-bytes at [X]) 000F ( os9.d):00360 SS.FD RMB 1 Return File Descriptor (Y-bytes at [X]) 0010 ( os9.d):00361 SS.Ticks RMB 1 Set Lockout honor duration 0011 ( os9.d):00362 SS.Lock RMB 1 Lock/Release record 0012 ( os9.d):00363 SS.DStat RMB 1 Return Display Status (CoCo) 0013 ( os9.d):00364 SS.Joy RMB 1 Return Joystick Value (CoCo) 0014 ( os9.d):00365 SS.BlkRd RMB 1 Block Read 0015 ( os9.d):00366 SS.BlkWr RMB 1 Block Write 0016 ( os9.d):00367 SS.Reten RMB 1 Retension cycle 0017 ( os9.d):00368 SS.WFM RMB 1 Write File Mark 0018 ( os9.d):00369 SS.RFM RMB 1 Read past File Mark 0019 ( os9.d):00370 SS.ELog RMB 1 Read Error Log 001A ( os9.d):00371 SS.SSig RMB 1 Send signal on data ready 001B ( os9.d):00372 SS.Relea RMB 1 Release device 001C ( os9.d):00373 SS.AlfaS RMB 1 Return Alfa Display Status (CoCo, SCF/GetStat) 001C ( os9.d):00374 SS.Attr EQU SS.AlfaS To serve 68K/RBF/SetStat only, thru NET 001D ( os9.d):00375 SS.Break RMB 1 Send break signal out acia 001E ( os9.d):00376 SS.RsBit RMB 1 Reserve bitmap sector (do not allocate in) LSB(X)=sct# 001F ( os9.d):00377 RMB 1 Reserved 0020 ( os9.d):00378 SS.FDInf EQU $20 To serve 68K/RBF/GetStat only, thru NET 0020 ( os9.d):00379 SS.DirEnt RMB 1 Reserve bitmap sector (do not allocate in) LSB(X)=sct# 0021 ( os9.d):00380 RMB 3 Reserve $20-$23 for Japanese version (Hoshi) 0024 ( os9.d):00381 SS.SetMF RMB 1 Reserve $24 for Gimix G68 (Flex compatability?) 0025 ( os9.d):00382 SS.Cursr RMB 1 Cursor information for COCO 0026 ( os9.d):00383 SS.ScSiz RMB 1 Return screen size for COCO 0027 ( os9.d):00384 SS.KySns RMB 1 Getstat/SetStat for COCO keyboard 0028 ( os9.d):00385 SS.ComSt RMB 1 Getstat/SetStat for Baud/Parity 0029 ( os9.d):00386 SS.Open RMB 1 SetStat to tell driver a path was opened 002A ( os9.d):00387 SS.Close RMB 1 SetStat to tell driver a path was closed 002B ( os9.d):00388 SS.HngUp RMB 1 SetStat to tell driver to hangup phone 002C ( os9.d):00389 SS.FSig RMB 1 New signal for temp locked files 0026 ( os9.d):00390 SS.DSize EQU SS.ScSiz Return disk size (RBF GetStat) 0012 ( os9.d):00391 SS.VarSect EQU SS.DStat Variable Sector Size (RBF GetStat) ( os9.d):00392 ( os9.d):00393 * System Specific and User defined codes above $80 ( os9.d):00394 ORG $80 0080 ( os9.d):00395 SS.AAGBf RMB 1 SetStat to Allocate Additional Graphic Buffer 0081 ( os9.d):00396 SS.SLGBf RMB 1 SetStat to Select a different Graphic Buffer 0082 ( os9.d):00397 SS.Mount RMB 1 Network 4 Mount Setstat 0083 ( os9.d):00398 SS.RdNet RMB 1 Read Raw Sector from Network 4 Omnidrive 0084 ( os9.d):00399 SS.MpGPB RMB 1 SetStat to request a Get/Put Buffer be mapped in workspace 0085 ( os9.d):00400 SS.Slots RMB 1 Network 4 slots? getstat ( os9.d):00401 ( os9.d):00402 * IFGT Level-1 ( os9.d):00403 IFNE 1 ( os9.d):00404 * Level 2 Windowing 0086 ( os9.d):00405 SS.WnSet RMB 1 Set up High Level Windowing Information 0087 ( os9.d):00406 SS.MnSel RMB 1 Request High level Menu Handler take determine next event 0088 ( os9.d):00407 SS.SBar RMB 1 SetStat to set position block on Window scroll bars 0089 ( os9.d):00408 SS.Mouse RMB 1 Return Mouse information packet (COCO) 008A ( os9.d):00409 SS.MsSig RMB 1 SetStat to tell driver to send signal on mouse event 008B ( os9.d):00410 SS.AScrn RMB 1 Allocate a screen for application poking 008C ( os9.d):00411 SS.DScrn RMB 1 Display a screen allocated by SS.AScrn 008D ( os9.d):00412 SS.FScrn RMB 1 Free a screen allocated by SS.AScrn 008E ( os9.d):00413 SS.PScrn RMB 1 Polymorph Screen into different screen type 008F ( os9.d):00414 SS.ScInf RMB 1 Get Current screen info for direct writes 0090 ( os9.d):00415 RMB 1 Reserved 0091 ( os9.d):00416 SS.Palet RMB 1 Return palette information 0092 ( os9.d):00417 SS.Montr RMB 1 Get and Set Monitor Type 0093 ( os9.d):00418 SS.ScTyp RMB 1 Get screen type information 0094 ( os9.d):00419 SS.GIP RMB 1 Global Input Parameters (SetStat) 0095 ( os9.d):00420 SS.UMBar RMB 1 update menu bar (SetStat) 0096 ( os9.d):00421 SS.FBRgs RMB 1 return color registers (GetStat) 0097 ( os9.d):00422 SS.DfPal RMB 1 set/return default palette registers (Getstat/Setstat) 0098 ( os9.d):00423 SS.Tone RMB 1 Generate a tone using 6 bit sound 0099 ( os9.d):00424 SS.GIP2 RMB 1 Global Input Params #2 (L2V3) 009A ( os9.d):00425 SS.AnPal RMB 1 Animate palettes (L2V3) 009B ( os9.d):00426 SS.FndBf RMB 1 Find named buffer (L2V3) ( os9.d):00427 ( os9.d):00428 * sc6551 defined 0099 ( os9.d):00429 SS.CDSta EQU SS.GIP2 009A ( os9.d):00430 SS.CDSig EQU SS.AnPal 009B ( os9.d):00431 SS.CDRel EQU SS.FndBf ( os9.d):00432 ELSE ( os9.d):00433 * These are wide open in Level 1 ( os9.d):00434 RMB 19 ( os9.d):00435 ( os9.d):00436 * sc6551 defined 009C ( os9.d):00437 SS.CDSta RMB 1 009C ( os9.d):00438 SS.CDSig RMB 1 009C ( os9.d):00439 SS.CDRel RMB 1 ( os9.d):00440 ENDC ( os9.d):00441 ( os9.d):00442 ORG $A0 ( os9.d):00443 * ( os9.d):00444 * New Default SCF input buffer Set status call 00A0 ( os9.d):00445 SS.Fill RMB 1 Pre-load SCF device input buffer 00A1 ( os9.d):00446 SS.Hist RMB 1 Enable command-line history easily ( os9.d):00447 ( os9.d):00448 ( os9.d):00449 ORG $B0 ( os9.d):00450 * ( os9.d):00451 * New WDDisk get/set status calls 00B0 ( os9.d):00452 SS.ECC RMB 1 ECC corrected data error enable/disable (GetStat/SetStat) ( os9.d):00453 ( os9.d):00454 * ( os9.d):00455 IFGT Level-1 ( os9.d):00456 ( os9.d):00457 * VRN get/set status calls. Named by Alan DeKok. 00B1 ( os9.d):00458 SS.VCtr EQU $80 Return FS2 total VIRQ counter 00B1 ( os9.d):00459 SS.VSig EQU $81 Return FS2 number of signals sent ( os9.d):00460 00B1 ( os9.d):00461 SS.FClr EQU $81 Set/clear FS2 VIRQ 00B1 ( os9.d):00462 SS.FSet EQU $C7 Set FS2+ VIRQ 00B1 ( os9.d):00463 SS.KSet EQU $C8 Set KQ3 VIRQ 00B1 ( os9.d):00464 SS.KClr EQU $C9 Clr KQ3 VIRQ 00B1 ( os9.d):00465 SS.ARAM EQU $CA Allocate RAM blocks 00B1 ( os9.d):00466 SS.DRAM EQU $CB De-allocate RAM blocks ( os9.d):00467 ( os9.d):00468 * SDisk 3 Definition Equates 00B1 ( os9.d):00469 SS.DRead EQU SS.AAGBf SDisk3 Direct Sector Read ($80) 00B1 ( os9.d):00470 SS.DWrit EQU SS.DRead SDisk3 Direct sector Write ($80) 00B1 ( os9.d):00471 SS.UnFrz EQU SS.SLGBf SDisk3 UNFreeze DD info ($81) 00B1 ( os9.d):00472 SS.MOFF EQU SS.Mount SDisk3 fast motor off call ($82) 00B1 ( os9.d):00473 SS.MoTim EQU SS.RdNet SDisk3 Set motor shut off time ($83) 00B1 ( os9.d):00474 SS.SDRD EQU SS.MpGPB SDisk3 System direct read ($84) 00B1 ( os9.d):00475 SS.SDWRT EQU SS.SDRD SDisk3 System direct writes ($84) 00B1 ( os9.d):00476 SS.Sleep EQU SS.Slots SDisk3 (DMC ONLY) Enable/disable F$Sleep calls in read/write 1773 I/O ($85) 00B1 ( os9.d):00477 SS.DrvCh EQU SS.WnSet SDisk3 (DMC ONLY) Set drive number to cache, or return drive number being cached ($86) ( os9.d):00478 ( os9.d):00479 ENDC ( os9.d):00480 ( os9.d):00481 TTL Direct Page Definitions ( os9.d):00482 PAG ( os9.d):00483 ( os9.d):00484 ********************************** ( os9.d):00485 * Direct Page Variable Definitions ( os9.d):00486 * ( os9.d):00487 ORG $00 0000 ( os9.d):00488 D.WDAddr RMB 2 FHL/Isted WD1002-05 interface base address 0002 ( os9.d):00489 D.WDBtDr RMB 1 FHL/Isted WD1002-05 boot physical device drive num. 0003 ( os9.d):00490 D.SWPage RMB 1 SmartWatch page # (see clock2_smart) 0004 ( os9.d):00491 RMB 5 0009 ( os9.d):00492 D.COCOXT RMB 1 Busy flag for CoCo-XT driver (one drive at a time) 000A ( os9.d):00493 D.DbgMem RMB 2 Debug memory pointer 000C ( os9.d):00494 D.DWSubAddr RMB 2 DriveWire subroutine module pointer 000E ( os9.d):00495 D.DWStat RMB 2 DriveWire statics page 0010 ( os9.d):00496 D.DWSrvID RMB 1 DriveWire server ID 0011 ( os9.d):00497 D.IRQTmp RMB 2 1 or 2 byte DP scratch var (for when IRQ's are off) ( os9.d):00498 ( os9.d):00499 ORG $20 ( os9.d):00500 ( os9.d):00501 IFEQ Level-1 ( os9.d):00502 ( os9.d):00503 * Level 1 DP vars 0020 ( os9.d):00504 D.FMBM RMB 4 Free memory bit map pointers 0020 ( os9.d):00505 D.MLIM RMB 2 Memory limit $24 0020 ( os9.d):00506 D.ModDir RMB 4 Module directory $26 0020 ( os9.d):00507 D.Init RMB 2 Rom base address $2A 0020 ( os9.d):00508 D.SWI3 RMB 2 Swi3 vector $2C 0020 ( os9.d):00509 D.SWI2 RMB 2 Swi2 vector $2E 0020 ( os9.d):00510 D.FIRQ RMB 2 Firq vector $30 0020 ( os9.d):00511 D.IRQ RMB 2 Irq vector $32 0020 ( os9.d):00512 D.SWI RMB 2 Swi vector $34 0020 ( os9.d):00513 D.NMI RMB 2 Nmi vector $36 0020 ( os9.d):00514 D.SvcIRQ RMB 2 Interrupt service entry $38 0020 ( os9.d):00515 D.Poll RMB 2 Interrupt polling routine $3A 0020 ( os9.d):00516 D.UsrIRQ RMB 2 User irq routine $3C 0020 ( os9.d):00517 D.SysIRQ RMB 2 System irq routine $3E 0020 ( os9.d):00518 D.UsrSvc RMB 2 User service request routine $40 0020 ( os9.d):00519 D.SysSvc RMB 2 System service request routine $42 0020 ( os9.d):00520 D.UsrDis RMB 2 User service request dispatch table 0020 ( os9.d):00521 D.SysDis RMB 2 System service reuest dispatch table 0020 ( os9.d):00522 D.Slice RMB 1 Process time slice count $48 0020 ( os9.d):00523 D.PrcDBT RMB 2 Process descriptor block address $49 0020 ( os9.d):00524 D.Proc RMB 2 Process descriptor address $4B 0020 ( os9.d):00525 D.AProcQ RMB 2 Active process queue $4D 0020 ( os9.d):00526 D.WProcQ RMB 2 Waiting process queue $4F 0020 ( os9.d):00527 D.SProcQ RMB 2 Sleeping process queue $51 0020 ( os9.d):00528 D.Time EQU . Time 0020 ( os9.d):00529 D.Year RMB 1 $53 0020 ( os9.d):00530 D.Month RMB 1 $54 0020 ( os9.d):00531 D.Day RMB 1 $55 0020 ( os9.d):00532 D.Hour RMB 1 $56 0020 ( os9.d):00533 D.Min RMB 1 $57 0020 ( os9.d):00534 D.Sec RMB 1 $58 0020 ( os9.d):00535 D.Tick RMB 1 $59 0020 ( os9.d):00536 D.TSec RMB 1 Ticks / second $5A 0020 ( os9.d):00537 D.TSlice RMB 1 Ticks / time-slice $5B 0020 ( os9.d):00538 D.IOML RMB 2 I/O mgr free memory low bound $5C 0020 ( os9.d):00539 D.IOMH RMB 2 I/O mgr free memory hi bound $5E 0020 ( os9.d):00540 D.DevTbl RMB 2 Device driver table addr $60 0020 ( os9.d):00541 D.PolTbl RMB 2 Irq polling table addr $62 0020 ( os9.d):00542 D.PthDBT RMB 2 Path descriptor block table addr $64 0020 ( os9.d):00543 D.BTLO RMB 2 Bootstrap low address $66 0020 ( os9.d):00544 D.BTHI RMB 2 Bootstrap hi address $68 0020 ( os9.d):00545 D.DMAReq RMB 1 DMA in use flag $6A 0020 ( os9.d):00546 D.AltIRQ RMB 2 Alternate IRQ vector (CC) $6B 0020 ( os9.d):00547 D.KbdSta RMB 2 Keyboard scanner static storage (CC) $6D 0020 ( os9.d):00548 D.DskTmr RMB 2 Disk Motor Timer (CC) $6F 0020 ( os9.d):00549 D.CBStrt RMB 16 reserved for CC warmstart ($71) 0020 ( os9.d):00550 D.Clock RMB 2 Address of Clock Tick Routine (CC) $81 0020 ( os9.d):00551 D.Boot RMB 1 Bootstrap attempted flag 0020 ( os9.d):00552 D.URtoSs RMB 2 address of user to system routine (VIRQ) $84 0020 ( os9.d):00553 D.CLTb RMB 2 Pointer to clock interrupt table (VIRQ) $86 0020 ( os9.d):00554 D.MDREG RMB 1 6309 MD (mode) shadow register $88 (added in V2.01.00) 0020 ( os9.d):00555 D.CRC RMB 1 CRC checking mode flag $89 (added in V2.01.00) 0020 ( os9.d):00556 D.Clock2 RMB 2 CC Clock2 entry address ( os9.d):00557 ( os9.d):00558 ORG $100 ( os9.d):00559 *D.XSWI3 RMB 3 ( os9.d):00560 *D.XSWI2 RMB 3 ( os9.d):00561 *D.XFIRQ RMB 3 ( os9.d):00562 *D.XIRQ RMB 3 ( os9.d):00563 *D.XSWI RMB 3 ( os9.d):00564 *D.XNMI RMB 3 ( os9.d):00565 0020 ( os9.d):00566 D.XSWI3 RMB 3 0020 ( os9.d):00567 D.XSWI2 RMB 3 0020 ( os9.d):00568 D.XSWI RMB 3 0020 ( os9.d):00569 D.XNMI RMB 3 0020 ( os9.d):00570 D.XIRQ RMB 3 0020 ( os9.d):00571 D.XFIRQ RMB 3 ( os9.d):00572 ( os9.d):00573 * Table Sizes 0020 ( os9.d):00574 BMAPSZ EQU 32 Bitmap table size 0020 ( os9.d):00575 SVCTNM EQU 2 Number of service request tables 0020 ( os9.d):00576 SVCTSZ EQU (256-BMAPSZ)/SVCTNM-2 Service request table size ( os9.d):00577 ( os9.d):00578 ELSE ( os9.d):00579 ( os9.d):00580 * Level 2 DP vars 0020 ( os9.d):00581 D.Tasks RMB 2 Task User Table 0022 ( os9.d):00582 D.TmpDAT RMB 2 Temporary DAT Image stack 0024 ( os9.d):00583 D.Init RMB 2 Initialization Module ptr 0026 ( os9.d):00584 D.Poll RMB 2 Interrupt Polling Routine ptr 0028 ( os9.d):00585 D.Time EQU . System Time 0028 ( os9.d):00586 D.Year RMB 1 0029 ( os9.d):00587 D.Month RMB 1 002A ( os9.d):00588 D.Day RMB 1 002B ( os9.d):00589 D.Hour RMB 1 002C ( os9.d):00590 D.Min RMB 1 002D ( os9.d):00591 D.Sec RMB 1 002E ( os9.d):00592 D.Tick RMB 1 002F ( os9.d):00593 D.Slice RMB 1 current slice remaining 0030 ( os9.d):00594 D.TSlice RMB 1 Ticks per Slice 0031 ( os9.d):00595 D.Boot RMB 1 Bootstrap attempted flag 0032 ( os9.d):00596 D.MotOn RMB 1 Floppy Disk Motor-On time out 0033 ( os9.d):00597 D.ErrCod RMB 1 Reset Error Code 0034 ( os9.d):00598 D.Daywk RMB 1 day of week, com-trol clock 0035 ( os9.d):00599 D.TkCnt RMB 1 Tick Counter 0036 ( os9.d):00600 D.BtPtr RMB 2 Address of Boot in System Address space 0038 ( os9.d):00601 D.BtSz RMB 2 Size of Boot ( os9.d):00602 ( os9.d):00603 IFNE H6309 003A ( os9.d):00604 D.MDREG RMB 1 6309 MD (mode) shadow register ( os9.d):00605 ELSE 003A ( os9.d):00606 RMB 1 Currently unused in NitrOS-9/6809 ( os9.d):00607 ENDC ( os9.d):00608 003B ( os9.d):00609 D.CRC RMB 1 CRC checking mode flag ( os9.d):00610 003C ( os9.d):00611 D.Tenths RMB 1 Tenths and hundredths of second for F$Xtime 003D ( os9.d):00612 D.Task1N RMB 1 Map type 1 task number*2 - offset into [D.TskIPt] 003E ( os9.d):00613 D.Quick RMB 1 Quick system call return flag - 0 =stack is at $FEE1 003F ( os9.d):00614 D.QIRQ RMB 1 Quick IRQ flag - 0 =IRQ wasn't clock, so quick return ( os9.d):00615 ( os9.d):00616 ORG $40 0040 ( os9.d):00617 D.BlkMap RMB 4 Memory Block Map ptr 0044 ( os9.d):00618 D.ModDir RMB 4 Module Directory ptrs 0048 ( os9.d):00619 D.PrcDBT RMB 2 Process Descriptor Block Table ptr 004A ( os9.d):00620 D.SysPrc RMB 2 System Process Descriptor ptr 004C ( os9.d):00621 D.SysDAT RMB 2 System DAT Image ptr 004E ( os9.d):00622 D.SysMem RMB 2 System Memory Map ptr 0050 ( os9.d):00623 D.Proc RMB 2 Current Process ptr 0052 ( os9.d):00624 D.AProcQ RMB 2 Active Process Queue 0054 ( os9.d):00625 D.WProcQ RMB 2 Waiting Process Queue 0056 ( os9.d):00626 D.SProcQ RMB 2 Sleeping Process Queue 0058 ( os9.d):00627 D.ModEnd RMB 2 Module Directory end ptr 005A ( os9.d):00628 D.ModDAT RMB 2 Module Dir DAT image end ptr 005C ( os9.d):00629 D.CldRes RMB 2 Cold Restart vector 005E ( os9.d):00630 D.BtBug RMB 3 Boot debug information 0061 ( os9.d):00631 D.Pipe RMB 2 ( os9.d):00632 ( os9.d):00633 ORG $6B 006B ( os9.d):00634 D.Crash RMB 6 Pointer to CC Crash Routine 0071 ( os9.d):00635 D.CBStrt RMB $B Reserved for CC warmstart ($71) 007C ( os9.d):00636 D.QCnt RMB 1 Count of number of quick system calls performed ( os9.d):00637 ( os9.d):00638 ORG $80 0080 ( os9.d):00639 D.DevTbl RMB 2 I/O Device Table 0082 ( os9.d):00640 D.PolTbl RMB 2 I/O Polling Table 0084 ( os9.d):00641 RMB 4 reserved 0088 ( os9.d):00642 D.PthDBT RMB 2 Path Descriptor Block Table ptr 008A ( os9.d):00643 D.DMAReq RMB 1 DMA Request flag ( os9.d):00644 ( os9.d):00645 ******** ( os9.d):00646 * CoCo 3 STUFF COMES NEXT ( os9.d):00647 * This area is used for the CoCo Hardware Registers ( os9.d):00648 * ( os9.d):00649 ORG $90 0090 ( os9.d):00650 D.HINIT RMB 1 GIME INIT0 register (hardware setup $FF90) 0091 ( os9.d):00651 D.TINIT RMB 1 GIME INIT1 register (timer/task register $FF91) 0092 ( os9.d):00652 D.IRQER RMB 1 Interrupt enable regsiter ($FF92) 0093 ( os9.d):00653 D.FRQER RMB 1 Fast Interrupt enable register ($FF93) 0094 ( os9.d):00654 D.TIMMS RMB 1 Timer most significant nibble ($FF94) 0095 ( os9.d):00655 D.TIMLS RMB 1 Timer least significant byte ($FF95) 0096 ( os9.d):00656 D.RESV1 RMB 1 reserved register ($FF96) 0097 ( os9.d):00657 D.RESV2 RMB 1 reserved register ($FF97) 0098 ( os9.d):00658 D.VIDMD RMB 1 video mode register ($FF98) 0099 ( os9.d):00659 D.VIDRS RMB 1 video resolution register ($FF99) 009A ( os9.d):00660 D.BORDR RMB 1 border register ($FF9A) 009B ( os9.d):00661 D.RESV3 RMB 1 reserved register ($FF9B) 009C ( os9.d):00662 D.VOFF2 RMB 1 vertical scroll/offset 2 register ($FF9C) 009D ( os9.d):00663 D.VOFF1 RMB 1 vertical offset 1 register ($FF9D) 009E ( os9.d):00664 D.VOFF0 RMB 1 vertical offset 0 register ($FF9E) 009F ( os9.d):00665 D.HOFF0 RMB 1 horizontal offset 0 register ($FF9F) 00A0 ( os9.d):00666 D.Speed RMB 1 Speed of COCO CPU 0=slow,1=fast ($A0) 00A1 ( os9.d):00667 D.TskIPt RMB 2 Task image Pointer table (CC) ($A1) 00A3 ( os9.d):00668 D.MemSz RMB 1 128/512K memory flag (CC) ($A3) 00A4 ( os9.d):00669 D.SSTskN RMB 1 System State Task Number (COCO) ($A4) 00A5 ( os9.d):00670 D.CCMem RMB 2 Pointer to beginning of CC Memory ($A5) 00A7 ( os9.d):00671 D.CCStk RMB 2 Pointer to top of CC Memory ($A7) 00A9 ( os9.d):00672 D.Flip0 RMB 2 Change to Task 0 ($A9) 00AB ( os9.d):00673 D.Flip1 RMB 2 Change to reserved Task 1 ($AB) 00AD ( os9.d):00674 D.VIRQ RMB 2 VIRQ Polling routine ($AD) 00AF ( os9.d):00675 D.IRQS RMB 1 IRQ shadow register (CC Temporary) ($AF) 00B0 ( os9.d):00676 D.CLTb RMB 2 VIRQ Table address ($B0) 00B2 ( os9.d):00677 D.AltIRQ RMB 2 Alternate IRQ Vector (CC) ($B2) 00B4 ( os9.d):00678 D.GPoll RMB 2 CC GIME IRQ enable/disable toggle 00B6 ( os9.d):00679 D.Clock2 RMB 2 CC Clock2 entry address ( os9.d):00680 ORG $C0 00C0 ( os9.d):00681 D.SysSvc RMB 2 System Service Routine entry 00C2 ( os9.d):00682 D.SysDis RMB 2 System Service Dispatch Table ptr 00C4 ( os9.d):00683 D.SysIRQ RMB 2 System IRQ Routine entry 00C6 ( os9.d):00684 D.UsrSvc RMB 2 User Service Routine entry 00C8 ( os9.d):00685 D.UsrDis RMB 2 User Service Dispatch Table ptr 00CA ( os9.d):00686 D.UsrIRQ RMB 2 User IRQ Routine entry 00CC ( os9.d):00687 D.SysStk RMB 2 System stack 00CE ( os9.d):00688 D.SvcIRQ RMB 2 In-System IRQ service 00D0 ( os9.d):00689 D.SysTsk RMB 1 System Task number ( os9.d):00690 ORG $E0 00E0 ( os9.d):00691 D.Clock RMB 2 00E2 ( os9.d):00692 D.XSWI3 RMB 2 00E4 ( os9.d):00693 D.XSWI2 RMB 2 00E6 ( os9.d):00694 D.XFIRQ RMB 2 00E8 ( os9.d):00695 D.XIRQ RMB 2 00EA ( os9.d):00696 D.XSWI RMB 2 00EC ( os9.d):00697 D.XNMI RMB 2 00EE ( os9.d):00698 D.ErrRst RMB 2 00F0 ( os9.d):00699 D.SysVec RMB 2 F$xxx system call vector for NitrOS-9 Level 3 00F2 ( os9.d):00700 D.SWI3 RMB 2 00F4 ( os9.d):00701 D.SWI2 RMB 2 00F6 ( os9.d):00702 D.FIRQ RMB 2 00F8 ( os9.d):00703 D.IRQ RMB 2 00FA ( os9.d):00704 D.SWI RMB 2 00FC ( os9.d):00705 D.NMI RMB 2 ( os9.d):00706 ( os9.d):00707 ************************* ( os9.d):00708 * Level 2 flags used for bytes in the memory block map at D.BlkMap ( os9.d):00709 * and for bytes in the system memory map at D.SysMem. ( os9.d):00710 * A value of 0 indicates an unused/unassigned block. ( os9.d):00711 * In the code, block assignment often involves incrementing a value ( os9.d):00712 * from 0 to 1 rather than explict use of RAMinUse. ( os9.d):00713 * 0080 ( os9.d):00714 NotRAM EQU %10000000 Block Not RAM flag 0004 ( os9.d):00715 VidRAM EQU %00000100 Block is being used as Video RAM 0002 ( os9.d):00716 ModBlock EQU %00000010 Module in Block 0001 ( os9.d):00717 RAMinUse EQU %00000001 RAM Block in use flag ( os9.d):00718 * ( os9.d):00719 * Service Dispatch Table special entries ( os9.d):00720 * 00FE ( os9.d):00721 IOEntry EQU 254 ( os9.d):00722 ( os9.d):00723 ENDC ( os9.d):00724 ( os9.d):00725 TTL Structure Formats ( os9.d):00726 PAG ( os9.d):00727 ************************************ ( os9.d):00728 * Module Directory Entry Definitions ( os9.d):00729 * ( os9.d):00730 ORG 0 ( os9.d):00731 IFGT Level-1 0000 ( os9.d):00732 MD$MPDAT RMB 2 Module DAT Image ptr 0000 ( os9.d):00733 MD$MBSiz RMB 2 Memory Block size ( os9.d):00734 ENDC 0000 ( os9.d):00735 MD$MPtr RMB 2 Module ptr 0002 ( os9.d):00736 MD$Link RMB 2 Module Link count 0004 ( os9.d):00737 MD$ESize EQU . Module Directory Entry size ( os9.d):00738 ( os9.d):00739 ************************************ ( os9.d):00740 * Module Definitions ( os9.d):00741 * ( os9.d):00742 * Universal Module Offsets ( os9.d):00743 * ( os9.d):00744 ORG 0 0000 ( os9.d):00745 M$ID RMB 2 ID Code 0002 ( os9.d):00746 M$Size RMB 2 Module Size 0004 ( os9.d):00747 M$Name RMB 2 Module Name 0006 ( os9.d):00748 M$Type RMB 1 Type / Language 0007 ( os9.d):00749 M$Revs RMB 1 Attributes / Revision Level 0008 ( os9.d):00750 M$Parity RMB 1 Header Parity 0009 ( os9.d):00751 M$IDSize EQU . Module ID Size ( os9.d):00752 * ( os9.d):00753 * Type-Dependent Module Offsets ( os9.d):00754 * ( os9.d):00755 * System, File Manager, Device Driver, Program Module ( os9.d):00756 * 0009 ( os9.d):00757 M$Exec RMB 2 Execution Entry Offset ( os9.d):00758 * ( os9.d):00759 * Device Driver, Program Module ( os9.d):00760 * 000B ( os9.d):00761 M$Mem RMB 2 Stack Requirement ( os9.d):00762 * ( os9.d):00763 * Device Driver, Device Descriptor Module ( os9.d):00764 * 000D ( os9.d):00765 M$Mode RMB 1 Device Driver Mode Capabilities ( os9.d):00766 * ( os9.d):00767 * Device Descriptor Module ( os9.d):00768 * ( os9.d):00769 ORG M$IDSize 0009 ( os9.d):00770 M$FMgr RMB 2 File Manager Name Offset 000B ( os9.d):00771 M$PDev RMB 2 Device Driver Name Offset 000D ( os9.d):00772 RMB 1 M$Mode (defined above) 000E ( os9.d):00773 M$Port RMB 3 Port Address 0011 ( os9.d):00774 M$Opt RMB 1 Device Default Options 0012 ( os9.d):00775 M$DTyp RMB 1 Device Type 0012 ( os9.d):00776 IT.DTP EQU M$DTyp Descriptor type offset ( os9.d):00777 * ( os9.d):00778 * Configuration Module Entry Offsets ( os9.d):00779 * ( os9.d):00780 ORG M$IDSize 0009 ( os9.d):00781 MaxMem RMB 3 Maximum Free Memory 000C ( os9.d):00782 PollCnt RMB 1 Entries in Interrupt Polling Table 000D ( os9.d):00783 DevCnt RMB 1 Entries in Device Table 000E ( os9.d):00784 InitStr RMB 2 Initial Module Name 0010 ( os9.d):00785 SysStr RMB 2 System Device Name 0012 ( os9.d):00786 StdStr RMB 2 Standard I/O Pathlist 0014 ( os9.d):00787 BootStr RMB 2 Bootstrap Module name 0016 ( os9.d):00788 ProtFlag RMB 1 Write protect enable flag ( os9.d):00789 0017 ( os9.d):00790 OSLevel RMB 1 OS level 0018 ( os9.d):00791 OSVer RMB 1 OS version 0019 ( os9.d):00792 OSMajor RMB 1 OS major 001A ( os9.d):00793 OSMinor RMB 1 OS minor 001B ( os9.d):00794 Feature1 RMB 1 feature byte 1 001C ( os9.d):00795 Feature2 RMB 1 feature byte 2 001D ( os9.d):00796 OSName RMB 2 OS revision name string (nul terminated) 001F ( os9.d):00797 InstallName RMB 2 installation name string (nul terminated) 0021 ( os9.d):00798 BuildInfo RMB 2 build information string (nul terminated) 0023 ( os9.d):00799 RMB 2 reserved for future use ( os9.d):00800 ( os9.d):00801 IFGT Level-1 ( os9.d):00802 * -- VTIO area -- (NitrOS-9 Level 2 and above) * 0025 ( os9.d):00803 MonType RMB 1 Monitor type (0=CMP,1=RGB,2=MONO) 0025 ( os9.d):00804 MouseInf RMB 2 Mouse resolution/Mouse port; was 1, major error RG. 0025 ( os9.d):00805 KeyRptS RMB 1 Key repeat start constant 0025 ( os9.d):00806 KeyRptD RMB 1 Key repeat delay constant ( os9.d):00807 ENDC ( os9.d):00808 ( os9.d):00809 * Feature1 byte definitions 0001 ( os9.d):00810 CRCOn EQU %00000001 CRC checking on 0000 ( os9.d):00811 CRCOff EQU %00000000 CRC checking off 0000 ( os9.d):00812 Proc6809 EQU %00000000 6809 procesor 0002 ( os9.d):00813 Proc6309 EQU %00000010 6309 procesor ( os9.d):00814 ( os9.d):00815 PAG ( os9.d):00816 ************************** ( os9.d):00817 * Module Field Definitions ( os9.d):00818 * ( os9.d):00819 * ID Field - First two bytes of a NitrOS-9 module ( os9.d):00820 * 0087 ( os9.d):00821 M$ID1 EQU $87 Module ID code byte one 00CD ( os9.d):00822 M$ID2 EQU $CD Module ID code byte two 87CD ( os9.d):00823 M$ID12 EQU M$ID1*256+M$ID2 ( os9.d):00824 ( os9.d):00825 * ( os9.d):00826 * Module Type/Language Field Masks ( os9.d):00827 * 00F0 ( os9.d):00828 TypeMask EQU %11110000 Type Field 000F ( os9.d):00829 LangMask EQU %00001111 Language Field ( os9.d):00830 ( os9.d):00831 * ( os9.d):00832 * Module Type Values ( os9.d):00833 * 00F0 ( os9.d):00834 Devic EQU $F0 Device Descriptor Module 00E0 ( os9.d):00835 Drivr EQU $E0 Physical Device Driver 00D0 ( os9.d):00836 FlMgr EQU $D0 File Manager 00C0 ( os9.d):00837 Systm EQU $C0 System Module 0050 ( os9.d):00838 ShellSub EQU $50 Shell+ shell sub module 0040 ( os9.d):00839 Data EQU $40 Data Module 0030 ( os9.d):00840 Multi EQU $30 Multi-Module 0020 ( os9.d):00841 Sbrtn EQU $20 Subroutine Module 0010 ( os9.d):00842 Prgrm EQU $10 Program Module ( os9.d):00843 ( os9.d):00844 * ( os9.d):00845 * Module Language Values ( os9.d):00846 * 0001 ( os9.d):00847 Objct EQU 1 6809 Object Code Module 0002 ( os9.d):00848 ICode EQU 2 Basic09 I-code 0003 ( os9.d):00849 PCode EQU 3 Pascal P-code 0004 ( os9.d):00850 CCode EQU 4 C I-code 0005 ( os9.d):00851 CblCode EQU 5 Cobol I-code 0006 ( os9.d):00852 FrtnCode EQU 6 Fortran I-code 0007 ( os9.d):00853 Obj6309 EQU 7 6309 object code ( os9.d):00854 * ( os9.d):00855 * Module Attributes / Revision byte ( os9.d):00856 * ( os9.d):00857 * Field Masks ( os9.d):00858 * 00F0 ( os9.d):00859 AttrMask EQU %11110000 Attributes Field 000F ( os9.d):00860 RevsMask EQU %00001111 Revision Level Field ( os9.d):00861 * ( os9.d):00862 * Attribute Flags ( os9.d):00863 * 0080 ( os9.d):00864 ReEnt EQU %10000000 Re-Entrant Module 0040 ( os9.d):00865 ModProt EQU %01000000 Gimix Module protect bit (0=protected, 1=write enable) 0020 ( os9.d):00866 ModNat EQU %00100000 6309 native mode attribute 0040 ( os9.d):00867 BufWrits EQU ModProt SCF buffered read supported (Coco only at this point) 0010 ( os9.d):00868 BufReads EQU %00010000 SCF buffered write supported (Coco only at this point) ( os9.d):00869 * LCB - propose we add Buffered Read/Buffered Write attribute bits for Coco (in descriptors and ( os9.d):00870 * drivers for SCF), with one of them replacing ModProt. SCF would check Read/ReadLn and Write/WritLn ( os9.d):00871 * calls, and if both the driver and descriptor have the appropriate bit set, it would do buffered 32 ( os9.d):00872 * byte (for now) reads/writes like the Grfdrv write call does now, for all bytes that are ASCII >$1F ( os9.d):00873 * (ie non-control chars, which need special processing) ( os9.d):00874 ( os9.d):00875 ( os9.d):00876 ******************** ( os9.d):00877 * Device Type Values ( os9.d):00878 * ( os9.d):00879 * These values define various classes of devices, which are ( os9.d):00880 * managed by a file manager module. The Device Type is embedded ( os9.d):00881 * in a device's device descriptor. ( os9.d):00882 * 0000 ( os9.d):00883 DT.SCF EQU 0 Sequential Character File Manager 0001 ( os9.d):00884 DT.RBF EQU 1 Random Block File Manager 0002 ( os9.d):00885 DT.Pipe EQU 2 Pipe File Manager 0003 ( os9.d):00886 DT.SBF EQU 3 Sequential Block File Manager 0004 ( os9.d):00887 DT.NFM EQU 4 Network File Manager 0005 ( os9.d):00888 DT.CDFM EQU 5 CD-ROM File Manager 0006 ( os9.d):00889 DT.RFM EQU 6 Remote File Manager ( os9.d):00890 ( os9.d):00891 ********************* ( os9.d):00892 * CRC Result Constant ( os9.d):00893 * 0080 ( os9.d):00894 CRCCon1 EQU $80 0FE3 ( os9.d):00895 CRCCon23 EQU $0FE3 ( os9.d):00896 ( os9.d):00897 TTL Process Information ( os9.d):00898 PAG ( os9.d):00899 ******************************** ( os9.d):00900 * Process Descriptor Definitions ( os9.d):00901 * ( os9.d):00902 IFEQ Level-1 ( os9.d):00903 ( os9.d):00904 * Level 1 process descriptor defs 0025 ( os9.d):00905 DefIOSiz EQU 12 0025 ( os9.d):00906 NumPaths EQU 16 Number of Local Paths ( os9.d):00907 ( os9.d):00908 ORG 0 0025 ( os9.d):00909 P$ID RMB 1 Process ID 0025 ( os9.d):00910 P$PID RMB 1 Parent's ID 0025 ( os9.d):00911 P$SID RMB 1 Sibling's ID 0025 ( os9.d):00912 P$CID RMB 1 Child's ID 0025 ( os9.d):00913 P$SP RMB 2 Stack ptr 0025 ( os9.d):00914 P$CHAP RMB 1 process chapter number 0025 ( os9.d):00915 P$ADDR RMB 1 user address beginning page number 0025 ( os9.d):00916 P$PagCnt RMB 1 Memory Page Count 0025 ( os9.d):00917 P$User RMB 2 User Index $09 0025 ( os9.d):00918 P$Prior RMB 1 Priority $0B 0025 ( os9.d):00919 P$Age RMB 1 Age $0C 0025 ( os9.d):00920 P$State RMB 1 Status $0D 0025 ( os9.d):00921 P$Queue RMB 2 Queue Link (Process ptr) $0E 0025 ( os9.d):00922 P$IOQP RMB 1 Previous I/O Queue Link (Process ID) $10 0025 ( os9.d):00923 P$IOQN RMB 1 Next I/O Queue Link (Process ID) 0025 ( os9.d):00924 P$PModul RMB 2 Primary Module 0025 ( os9.d):00925 P$SWI RMB 2 SWI Entry Point 0025 ( os9.d):00926 P$SWI2 RMB 2 SWI2 Entry Point 0025 ( os9.d):00927 P$SWI3 RMB 2 SWI3 Entry Point $18 0025 ( os9.d):00928 P$DIO RMB DefIOSiz default I/O ptrs $1A 0025 ( os9.d):00929 P$PATH RMB NumPaths I/O path table $26 0025 ( os9.d):00930 P$Signal RMB 1 Signal Code $36 0025 ( os9.d):00931 P$SigVec RMB 2 Signal Intercept Vector 0025 ( os9.d):00932 P$SigDat RMB 2 Signal Intercept Data Address 0025 ( os9.d):00933 P$NIO RMB 4 additional dio pointers for net ( os9.d):00934 RMB $40-. unused 0025 ( os9.d):00935 P$Size EQU . Size of Process Descriptor ( os9.d):00936 ( os9.d):00937 * ( os9.d):00938 * Process State Flags ( os9.d):00939 * 0025 ( os9.d):00940 SysState EQU %10000000 0025 ( os9.d):00941 TimSleep EQU %01000000 0025 ( os9.d):00942 TimOut EQU %00100000 0025 ( os9.d):00943 ImgChg EQU %00010000 0025 ( os9.d):00944 Condem EQU %00000010 0025 ( os9.d):00945 Dead EQU %00000001 ( os9.d):00946 ( os9.d):00947 ELSE ( os9.d):00948 ( os9.d):00949 * Level 2 process descriptor defs 0010 ( os9.d):00950 DefIOSiz EQU 16 Default I/O Data Length 000C ( os9.d):00951 NefIOSiz EQU 12 On-Net Default I/O Data Length 0010 ( os9.d):00952 NumPaths EQU 16 Number of Local Paths ( os9.d):00953 ( os9.d):00954 ORG 0 0000 ( os9.d):00955 P$ID RMB 1 Process ID 0001 ( os9.d):00956 P$PID RMB 1 Parent's ID 0002 ( os9.d):00957 P$SID RMB 1 Sibling's ID 0003 ( os9.d):00958 P$CID RMB 1 Child's ID 0004 ( os9.d):00959 P$SP RMB 2 Stack ptr 0006 ( os9.d):00960 P$Task RMB 1 Task Number 0007 ( os9.d):00961 P$PagCnt RMB 1 Memory Page Count 0008 ( os9.d):00962 P$User RMB 2 User Index 000A ( os9.d):00963 P$Prior RMB 1 Priority 000B ( os9.d):00964 P$Age RMB 1 Age 000C ( os9.d):00965 P$State RMB 1 Status 000D ( os9.d):00966 P$Queue RMB 2 Queue Link (Process ptr) 000F ( os9.d):00967 P$IOQP RMB 1 Previous I/O Queue Link (Process ID) 0010 ( os9.d):00968 P$IOQN RMB 1 Next I/O Queue Link (Process ID) 0011 ( os9.d):00969 P$PModul RMB 2 Primary Module 0013 ( os9.d):00970 P$SWI RMB 2 SWI Entry Point 0015 ( os9.d):00971 P$SWI2 RMB 2 SWI2 Entry Point 0017 ( os9.d):00972 P$SWI3 RMB 2 SWI3 Entry Point 0019 ( os9.d):00973 P$Signal RMB 1 Signal Code 001A ( os9.d):00974 P$SigVec RMB 2 Signal Intercept Vector 001C ( os9.d):00975 P$SigDat RMB 2 Signal Intercept Data Address 001E ( os9.d):00976 P$DeadLk RMB 1 Dominant proc ID if I/O locked 001F ( os9.d):00977 RMB $20-. unused 0020 ( os9.d):00978 P$DIO RMB DefIOSiz Default I/O ptrs 0030 ( os9.d):00979 P$Path RMB NumPaths I/O Path Table 0040 ( os9.d):00980 P$DATImg RMB 64 DAT Image 0080 ( os9.d):00981 P$Links RMB 32 Block Link counts 00A0 ( os9.d):00982 P$NIO RMB 6*2 additional DIO ptrs for net, compatible with 68k 00AC ( os9.d):00983 P$SelP RMB 1 Selected Path for COCO Windows (Default 0) 00AD ( os9.d):00984 P$UTicks RMB 4 proc User Tick counter (L2V3) 00B1 ( os9.d):00985 P$STicks RMB 4 proc System Tick counter (L2V3) 00B5 ( os9.d):00986 P$FCalls RMB 4 proc F$ call counter (L2V3) 00B9 ( os9.d):00987 P$ICalls RMB 4 proc I$ call counter (L2V3) 00BD ( os9.d):00988 P$DatBeg RMB 3 proc Date of creation (Y/M/D) (L2V3) 00C0 ( os9.d):00989 P$TimBeg RMB 3 proc Time of creation (H/M/S) (L2V3) 00C3 ( os9.d):00990 P$Alarm RMB 6 00C9 ( os9.d):00991 RMB $200-. Local stack 0200 ( os9.d):00992 P$Stack EQU . Top of Stack 0200 ( os9.d):00993 P$Size EQU . Size of Process Descriptor ( os9.d):00994 ( os9.d):00995 * ( os9.d):00996 * Process State Flags ( os9.d):00997 * 0080 ( os9.d):00998 SysState EQU %10000000 0040 ( os9.d):00999 TimSleep EQU %01000000 0020 ( os9.d):01000 TimOut EQU %00100000 0010 ( os9.d):01001 ImgChg EQU %00010000 0008 ( os9.d):01002 Suspend EQU %00001000 0002 ( os9.d):01003 Condem EQU %00000010 0001 ( os9.d):01004 Dead EQU %00000001 ( os9.d):01005 ( os9.d):01006 ENDC ( os9.d):01007 ( os9.d):01008 TTL NitrOS-9 I/O Symbolic Definitions ( os9.d):01009 PAG ( os9.d):01010 ************************* ( os9.d):01011 * Path Descriptor Offsets ( os9.d):01012 * ( os9.d):01013 ORG 0 0000 ( os9.d):01014 PD.PD RMB 1 Path Number 0001 ( os9.d):01015 PD.MOD RMB 1 Mode (Read/Write/Update) 0002 ( os9.d):01016 PD.CNT RMB 1 Number of Open Images 0003 ( os9.d):01017 PD.DEV RMB 2 Device Table Entry Address 0005 ( os9.d):01018 PD.CPR RMB 1 Current Process 0006 ( os9.d):01019 PD.RGS RMB 2 Caller's Register Stack 0008 ( os9.d):01020 PD.BUF RMB 2 Buffer Address 000A ( os9.d):01021 PD.FST RMB 32-. File Manager's Storage 0020 ( os9.d):01022 PD.OPT EQU . PD GetSts(0) Options 0020 ( os9.d):01023 PD.DTP RMB 1 Device Type 0021 ( os9.d):01024 RMB 64-. Path options 0040 ( os9.d):01025 PDSIZE EQU . ( os9.d):01026 ( os9.d):01027 * ( os9.d):01028 * Pathlist Special Symbols ( os9.d):01029 * 002F ( os9.d):01030 PDELIM EQU '/ Pathlist Name Separator 002E ( os9.d):01031 PDIR EQU '. Directory 0040 ( os9.d):01032 PENTIR EQU '@ Entire Device ( os9.d):01033 ( os9.d):01034 PAG ( os9.d):01035 **************************** ( os9.d):01036 * File Manager Entry Offsets ( os9.d):01037 * ( os9.d):01038 ORG 0 0000 ( os9.d):01039 FMCREA RMB 3 Create (Open New) File 0003 ( os9.d):01040 FMOPEN RMB 3 Open File 0006 ( os9.d):01041 FMMDIR RMB 3 Make Directory 0009 ( os9.d):01042 FMCDIR RMB 3 Change Directory 000C ( os9.d):01043 FMDLET RMB 3 Delete File 000F ( os9.d):01044 FMSEEK RMB 3 Position File 0012 ( os9.d):01045 FMREAD RMB 3 Read from File 0015 ( os9.d):01046 FMWRIT RMB 3 Write to File 0018 ( os9.d):01047 FMRDLN RMB 3 ReadLn 001B ( os9.d):01048 FMWRLN RMB 3 WritLn 001E ( os9.d):01049 FMGSTA RMB 3 Get File Status 0021 ( os9.d):01050 FMSSTA RMB 3 Set File Status 0024 ( os9.d):01051 FMCLOS RMB 3 Close File ( os9.d):01052 ( os9.d):01053 ***************************** ( os9.d):01054 * Device Driver Entry Offsets ( os9.d):01055 * ( os9.d):01056 ORG 0 0000 ( os9.d):01057 D$INIT RMB 3 Device Initialization 0003 ( os9.d):01058 D$READ RMB 3 Read from Device 0006 ( os9.d):01059 D$WRIT RMB 3 Write to Device 0009 ( os9.d):01060 D$GSTA RMB 3 Get Device Status 000C ( os9.d):01061 D$PSTA RMB 3 Put Device Status 000F ( os9.d):01062 D$TERM RMB 3 Device Termination ( os9.d):01063 ( os9.d):01064 ********************* ( os9.d):01065 * Device Table Format ( os9.d):01066 * ( os9.d):01067 ORG 0 0000 ( os9.d):01068 V$DRIV RMB 2 Device Driver module 0002 ( os9.d):01069 V$STAT RMB 2 Device Driver Static storage 0004 ( os9.d):01070 V$DESC RMB 2 Device Descriptor module 0006 ( os9.d):01071 V$FMGR RMB 2 File Manager module 0008 ( os9.d):01072 V$USRS RMB 1 use count ( os9.d):01073 IFGT Level-1 0009 ( os9.d):01074 V$DRIVEX RMB 2 Device Driver execution address 0009 ( os9.d):01075 V$FMGREX RMB 2 File Manager execution address ( os9.d):01076 ENDC 0009 ( os9.d):01077 DEVSIZ EQU . ( os9.d):01078 ( os9.d):01079 ******************************* ( os9.d):01080 * Device Static Storage Offsets ( os9.d):01081 * ( os9.d):01082 ORG 0 0000 ( os9.d):01083 V.PAGE RMB 1 Port Extended Address 0001 ( os9.d):01084 V.PORT RMB 2 Device 'Base' Port Address 0003 ( os9.d):01085 V.LPRC RMB 1 Last Active Process ID 0004 ( os9.d):01086 V.BUSY RMB 1 Active Process ID (0=UnBusy) 0005 ( os9.d):01087 V.WAKE RMB 1 Active PD if Driver MUST Wake-up 0006 ( os9.d):01088 V.USER EQU . Driver Allocation Origin ( os9.d):01089 ( os9.d):01090 ******************************** ( os9.d):01091 * Interrupt Polling Table Format ( os9.d):01092 * ( os9.d):01093 ORG 0 0000 ( os9.d):01094 Q$POLL RMB 2 Absolute Polling Address 0002 ( os9.d):01095 Q$FLIP RMB 1 Flip (EOR) Byte ..normally Zero 0003 ( os9.d):01096 Q$MASK RMB 1 Polling Mask (after Flip) 0004 ( os9.d):01097 Q$SERV RMB 2 Absolute Service routine Address 0006 ( os9.d):01098 Q$STAT RMB 2 Static Storage Address 0008 ( os9.d):01099 Q$PRTY RMB 1 Priority (Low Numbers=Top Priority) ( os9.d):01100 IFGT Level-1 0009 ( os9.d):01101 Q$MAP RMB 2 NitrOS-9 Level 2 and above ( os9.d):01102 ENDC 0009 ( os9.d):01103 POLSIZ EQU . ( os9.d):01104 ( os9.d):01105 ******************** ( os9.d):01106 * VIRQ packet format ( os9.d):01107 * ( os9.d):01108 ORG 0 0000 ( os9.d):01109 Vi.Cnt RMB 2 count down counter 0002 ( os9.d):01110 Vi.Rst RMB 2 reset value for counter 0004 ( os9.d):01111 Vi.Stat RMB 1 status byte 0005 ( os9.d):01112 Vi.PkSz EQU . ( os9.d):01113 0001 ( os9.d):01114 Vi.IFlag EQU %00000001 status byte virq flag ( os9.d):01115 ( os9.d):01116 PAG ( os9.d):01117 ************************************* ( os9.d):01118 * Machine Characteristics Definitions ( os9.d):01119 * 0000 ( os9.d):01120 R$CC EQU 0 Condition Codes register 0001 ( os9.d):01121 R$A EQU 1 A Accumulator 0002 ( os9.d):01122 R$B EQU 2 B Accumulator 0001 ( os9.d):01123 R$D EQU R$A Combined A:B Accumulator ( os9.d):01124 IFNE H6309 0005 ( os9.d):01125 R$E EQU 3 E Accumulator 0005 ( os9.d):01126 R$F EQU 4 F Accumulator 0005 ( os9.d):01127 R$W EQU R$E Combined E:F Accumulator 0005 ( os9.d):01128 R$Q EQU R$A Combined A:B:E:F Accumulator 0005 ( os9.d):01129 R$DP EQU 5 Direct Page register 0005 ( os9.d):01130 R$X EQU 6 X Index register 0005 ( os9.d):01131 R$Y EQU 8 Y Index register 0005 ( os9.d):01132 R$U EQU 10 User Stack register 0005 ( os9.d):01133 R$PC EQU 12 Program Counter register 0005 ( os9.d):01134 R$Size EQU 14 Total register package size ( os9.d):01135 ELSE 0003 ( os9.d):01136 R$DP EQU 3 Direct Page register 0004 ( os9.d):01137 R$X EQU 4 X Index register 0006 ( os9.d):01138 R$Y EQU 6 Y Index register 0008 ( os9.d):01139 R$U EQU 8 User Stack register 000A ( os9.d):01140 R$PC EQU 10 Program Counter register 000C ( os9.d):01141 R$Size EQU 12 Total register package size ( os9.d):01142 ENDC ( os9.d):01143 ( os9.d):01144 * MD register masks ( os9.d):01145 * 6309 definitions 0080 ( os9.d):01146 DIV0 EQU %10000000 division by 0 trap flag : 1 = trap occured 0040 ( os9.d):01147 badinstr EQU %01000000 illegal instruction trap flag : 1 = trap occured ( os9.d):01148 0080 ( os9.d):01149 Entire EQU %10000000 Full Register Stack flag 0040 ( os9.d):01150 FIRQMask EQU %01000000 Fast-Interrupt Mask bit 0020 ( os9.d):01151 HalfCrry EQU %00100000 Half Carry flag 0010 ( os9.d):01152 IRQMask EQU %00010000 Interrupt Mask bit 0008 ( os9.d):01153 Negative EQU %00001000 Negative flag 0004 ( os9.d):01154 Zero EQU %00000100 Zero flag 0002 ( os9.d):01155 TwosOvfl EQU %00000010 Two's Comp Overflow flag 0001 ( os9.d):01156 Carry EQU %00000001 Carry bit 0050 ( os9.d):01157 IntMasks EQU IRQMask+FIRQMask 0080 ( os9.d):01158 Sign EQU %10000000 sign bit ( os9.d):01159 ( os9.d):01160 TTL Error Code Definitions ( os9.d):01161 PAG ( os9.d):01162 ************************ ( os9.d):01163 * Error Code Definitions ( os9.d):01164 * ( os9.d):01165 * Basic09 Error Codes ( os9.d):01166 * ( os9.d):01167 ORG 10 000A ( os9.d):01168 E$UnkSym RMB 1 Unknown symbol 000B ( os9.d):01169 E$ExcVrb RMB 1 Excessive verbage 000C ( os9.d):01170 E$IllStC RMB 1 Illegal statement construction 000D ( os9.d):01171 E$ICOvf RMB 1 I-code overflow 000E ( os9.d):01172 E$IChRef RMB 1 Illegal channel reference 000F ( os9.d):01173 E$IllMod RMB 1 Illegal mode 0010 ( os9.d):01174 E$IllNum RMB 1 Illegal number 0011 ( os9.d):01175 E$IllPrf RMB 1 Illegal prefix 0012 ( os9.d):01176 E$IllOpd RMB 1 Illegal operand 0013 ( os9.d):01177 E$IllOpr RMB 1 Illegal operator 0014 ( os9.d):01178 E$IllRFN RMB 1 Illegal record field name 0015 ( os9.d):01179 E$IllDim RMB 1 Illegal dimension 0016 ( os9.d):01180 E$IllLit RMB 1 Illegal literal 0017 ( os9.d):01181 E$IllRet RMB 1 Illegal relational 0018 ( os9.d):01182 E$IllSfx RMB 1 Illegal type suffix 0019 ( os9.d):01183 E$DimLrg RMB 1 Dimension too large 001A ( os9.d):01184 E$LinLrg RMB 1 Line number too large 001B ( os9.d):01185 E$NoAssg RMB 1 Missing assignment statement 001C ( os9.d):01186 E$NoPath RMB 1 Missing path number 001D ( os9.d):01187 E$NoComa RMB 1 Missing coma 001E ( os9.d):01188 E$NoDim RMB 1 Missing dimension 001F ( os9.d):01189 E$NoDO RMB 1 Missing DO statement 0020 ( os9.d):01190 E$MFull RMB 1 Memory full 0021 ( os9.d):01191 E$NoGoto RMB 1 Missing GOTO 0022 ( os9.d):01192 E$NoLPar RMB 1 Missing left parenthesis 0023 ( os9.d):01193 E$NoLRef RMB 1 Missing line reference 0024 ( os9.d):01194 E$NoOprd RMB 1 Missing operand 0025 ( os9.d):01195 E$NoRPar RMB 1 Missing right parenthesis 0026 ( os9.d):01196 E$NoTHEN RMB 1 Missing THEN statement 0027 ( os9.d):01197 E$NoTO RMB 1 Missing TO statement 0028 ( os9.d):01198 E$NoVRef RMB 1 Missing variable reference 0029 ( os9.d):01199 E$EndQou RMB 1 Missing end quote 002A ( os9.d):01200 E$SubLrg RMB 1 Too many subscripts 002B ( os9.d):01201 E$UnkPrc RMB 1 Unknown procedure 002C ( os9.d):01202 E$MulPrc RMB 1 Multiply defined procedure 002D ( os9.d):01203 E$DivZer RMB 1 Divice by zero 002E ( os9.d):01204 E$TypMis RMB 1 Operand type mismatch 002F ( os9.d):01205 E$StrOvf RMB 1 String stack overflow 0030 ( os9.d):01206 E$NoRout RMB 1 Unimplemented routine 0031 ( os9.d):01207 E$UndVar RMB 1 Undefined variable 0032 ( os9.d):01208 E$FltOvf RMB 1 Floating Overflow 0033 ( os9.d):01209 E$LnComp RMB 1 Line with compiler error 0034 ( os9.d):01210 E$ValRng RMB 1 Value out of range for destination 0035 ( os9.d):01211 E$SubOvf RMB 1 Subroutine stack overflow 0036 ( os9.d):01212 E$SubUnd RMB 1 Subroutine stack underflow 0037 ( os9.d):01213 E$SubRng RMB 1 Subscript out of range 0038 ( os9.d):01214 E$ParmEr RMB 1 Paraemter error 0039 ( os9.d):01215 E$SysOvf RMB 1 System stack overflow 003A ( os9.d):01216 E$IOMism RMB 1 I/O type mismatch 003B ( os9.d):01217 E$IONum RMB 1 I/O numeric input format bad 003C ( os9.d):01218 E$IOConv RMB 1 I/O conversion: number out of range 003D ( os9.d):01219 E$IllInp RMB 1 Illegal input format 003E ( os9.d):01220 E$IOFRpt RMB 1 I/O format repeat error 003F ( os9.d):01221 E$IOFSyn RMB 1 I/O format syntax error 0040 ( os9.d):01222 E$IllPNm RMB 1 Illegal path number 0041 ( os9.d):01223 E$WrSub RMB 1 Wrong number of subscripts 0042 ( os9.d):01224 E$NonRcO RMB 1 Non-record type operand 0043 ( os9.d):01225 E$IllA RMB 1 Illegal argument 0044 ( os9.d):01226 E$IllCnt RMB 1 Illegal control structure 0045 ( os9.d):01227 E$UnmCnt RMB 1 Unmatched control structure 0046 ( os9.d):01228 E$IllFOR RMB 1 Illegal FOR variable 0047 ( os9.d):01229 E$IllExp RMB 1 Illegal expression type 0048 ( os9.d):01230 E$IllDec RMB 1 Illegal declarative statement 0049 ( os9.d):01231 E$ArrOvf RMB 1 Array size overflow 004A ( os9.d):01232 E$UndLin RMB 1 Undefined line number 004B ( os9.d):01233 E$MltLin RMB 1 Multiply defined line number 004C ( os9.d):01234 E$MltVar RMB 1 Multiply defined variable 004D ( os9.d):01235 E$IllIVr RMB 1 Illegal input variable 004E ( os9.d):01236 E$SeekRg RMB 1 Seek out of range 004F ( os9.d):01237 E$NoData RMB 1 Missing data statement ( os9.d):01238 ( os9.d):01239 * ( os9.d):01240 * System Dependent Error Codes ( os9.d):01241 * ( os9.d):01242 ( os9.d):01243 * Level 2 windowing error codes ( os9.d):01244 ORG 183 00B7 ( os9.d):01245 E$IWTyp RMB 1 Illegal window type 00B8 ( os9.d):01246 E$WADef RMB 1 Window already defined 00B9 ( os9.d):01247 E$NFont RMB 1 Font not found 00BA ( os9.d):01248 E$StkOvf RMB 1 Stack overflow 00BB ( os9.d):01249 E$IllArg RMB 1 Illegal argument 00BC ( os9.d):01250 RMB 1 reserved 00BD ( os9.d):01251 E$ICoord RMB 1 Illegal coordinates 00BE ( os9.d):01252 E$Bug RMB 1 Bug (should never be returned) 00BF ( os9.d):01253 E$BufSiz RMB 1 Buffer size is too small 00C0 ( os9.d):01254 E$IllCmd RMB 1 Illegal command 00C1 ( os9.d):01255 E$TblFul RMB 1 Screen or window table is full 00C2 ( os9.d):01256 E$BadBuf RMB 1 Bad/Undefined buffer number 00C3 ( os9.d):01257 E$IWDef RMB 1 Illegal window definition 00C4 ( os9.d):01258 E$WUndef RMB 1 Window undefined ( os9.d):01259 00C5 ( os9.d):01260 E$Up RMB 1 Up arrow pressed on SCF I$ReadLn with PD.UP enabled 00C6 ( os9.d):01261 E$Dn RMB 1 Down arrow pressed on SCF I$ReadLn with PD.DOWN enabled 00C7 ( os9.d):01262 E$Alias RMB 1 ( os9.d):01263 ( os9.d):01264 ( os9.d):01265 * ( os9.d):01266 * Standard NitrOS-9 Error Codes ( os9.d):01267 * ( os9.d):01268 ORG 200 00C8 ( os9.d):01269 E$PthFul RMB 1 Path Table full 00C9 ( os9.d):01270 E$BPNum RMB 1 Bad Path Number 00CA ( os9.d):01271 E$Poll RMB 1 Polling Table Full 00CB ( os9.d):01272 E$BMode RMB 1 Bad Mode 00CC ( os9.d):01273 E$DevOvf RMB 1 Device Table Overflow 00CD ( os9.d):01274 E$BMID RMB 1 Bad Module ID 00CE ( os9.d):01275 E$DirFul RMB 1 Module Directory Full 00CF ( os9.d):01276 E$MemFul RMB 1 Process Memory Full 00D0 ( os9.d):01277 E$UnkSvc RMB 1 Unknown Service Code 00D1 ( os9.d):01278 E$ModBsy RMB 1 Module Busy 00D2 ( os9.d):01279 E$BPAddr RMB 1 Bad Page Address 00D3 ( os9.d):01280 E$EOF RMB 1 End of File 00D4 ( os9.d):01281 RMB 1 00D5 ( os9.d):01282 E$NES RMB 1 Non-Existing Segment 00D6 ( os9.d):01283 E$FNA RMB 1 File Not Accesible 00D7 ( os9.d):01284 E$BPNam RMB 1 Bad Path Name 00D8 ( os9.d):01285 E$PNNF RMB 1 Path Name Not Found 00D9 ( os9.d):01286 E$SLF RMB 1 Segment List Full 00DA ( os9.d):01287 E$CEF RMB 1 Creating Existing File 00DB ( os9.d):01288 E$IBA RMB 1 Illegal Block Address 00DC ( os9.d):01289 E$HangUp RMB 1 Carrier Detect Lost 00DD ( os9.d):01290 E$MNF RMB 1 Module Not Found 00DE ( os9.d):01291 RMB 1 00DF ( os9.d):01292 E$DelSP RMB 1 Deleting Stack Pointer memory 00E0 ( os9.d):01293 E$IPrcID RMB 1 Illegal Process ID 00E0 ( os9.d):01294 E$BPrcID EQU E$IPrcID Bad Process ID (formerly #238) 00E1 ( os9.d):01295 RMB 1 00E2 ( os9.d):01296 E$NoChld RMB 1 No Children 00E3 ( os9.d):01297 E$ISWI RMB 1 Illegal SWI code 00E4 ( os9.d):01298 E$PrcAbt RMB 1 Process Aborted 00E5 ( os9.d):01299 E$PrcFul RMB 1 Process Table Full 00E6 ( os9.d):01300 E$IForkP RMB 1 Illegal Fork Parameter 00E7 ( os9.d):01301 E$KwnMod RMB 1 Known Module 00E8 ( os9.d):01302 E$BMCRC RMB 1 Bad Module CRC 00E9 ( os9.d):01303 E$USigP RMB 1 Unprocessed Signal Pending 00EA ( os9.d):01304 E$NEMod RMB 1 Non Existing Module 00EB ( os9.d):01305 E$BNam RMB 1 Bad Name 00EC ( os9.d):01306 E$BMHP RMB 1 (bad module header parity) 00ED ( os9.d):01307 E$NoRAM RMB 1 No (System) RAM Available 00EE ( os9.d):01308 E$DNE RMB 1 Directory not empty 00EF ( os9.d):01309 E$NoTask RMB 1 No available Task number ( os9.d):01310 RMB $F0-. reserved 00F0 ( os9.d):01311 E$Unit RMB 1 Illegal Unit (drive) 00F1 ( os9.d):01312 E$Sect RMB 1 Bad Sector number 00F2 ( os9.d):01313 E$WP RMB 1 Write Protect 00F3 ( os9.d):01314 E$CRC RMB 1 Bad Check Sum 00F4 ( os9.d):01315 E$Read RMB 1 Read Error 00F5 ( os9.d):01316 E$Write RMB 1 Write Error 00F6 ( os9.d):01317 E$NotRdy RMB 1 Device Not Ready 00F7 ( os9.d):01318 E$Seek RMB 1 Seek Error 00F8 ( os9.d):01319 E$Full RMB 1 Media Full 00F9 ( os9.d):01320 E$BTyp RMB 1 Bad Type (incompatable) media 00FA ( os9.d):01321 E$DevBsy RMB 1 Device Busy 00FB ( os9.d):01322 E$DIDC RMB 1 Disk ID Change 00FC ( os9.d):01323 E$Lock RMB 1 Record is busy (locked out) 00FD ( os9.d):01324 E$Share RMB 1 Non-sharable file busy 00FE ( os9.d):01325 E$DeadLk RMB 1 I/O Deadlock error ( os9.d):01326 ( os9.d):01327 ( os9.d):01328 IFGT Level-2 ( os9.d):01329 *************************** ( os9.d):01330 * Level 3 Defs ( os9.d):01331 * ( os9.d):01332 * These definitions apply to NitrOS-9 Level 3 ( os9.d):01333 * 00FF ( os9.d):01334 L3.Start EQU $2000 Start off at slot 1 00FF ( os9.d):01335 L3.Size EQU $40 Go for 64 pages: 2 slots total 00FF ( os9.d):01336 L3.Blks EQU L3.Size/$20 Number of slots 00FF ( os9.d):01337 L3.End EQU L3.Start+L3.Size*$0100 end of L3 memory 00FF ( os9.d):01338 L3.SCF EQU $0660 SCF block ptr 00FF ( os9.d):01339 L3.RBF EQU L3.SCF+1 RBF block ptr ( os9.d):01340 ENDC ( os9.d):01341 ( os9.d):01342 ENDC ( defsfile):00002 use scf.d ( scf.d):00001 IFNE SCF.D-1 ( scf.d):00002 0001 ( scf.d):00003 SCF.D SET 1 ( scf.d):00004 ( scf.d):00005 ******************************************************************** ( scf.d):00006 * scf.d - Sequential Character File Manager Definitions ( scf.d):00007 * ( scf.d):00008 * SCF stands for 'Sequential Character Filemanager' and is a package of subroutines ( scf.d):00009 * that define the logical structure of a serial device. ( scf.d):00010 * ( scf.d):00011 * The data structures in this file give SCF its 'personality' and are used ( scf.d):00012 * by SCF itself, as well as applications that will require disk I/O. ( scf.d):00013 * ( scf.d):00014 * Edt/Rev YYYY/MM/DD Modified by ( scf.d):00015 * Comment ( scf.d):00016 * ------------------------------------------------------------------ ( scf.d):00017 * 1984/01/11 YO ( scf.d):00018 * Added V.KANJI, V.KBUF, V.MODADR for new kanji input process. ( scf.d):00019 * ( scf.d):00020 * 1985/04/20 Mark G. Hawkins ( scf.d):00021 * Added V.PDLHd Path Descriptor List Head. ( scf.d):00022 * ( scf.d):00023 * 1985/04/21 Mark G. Hawkins ( scf.d):00024 * Added PD.PLP and PD.PST for modem handling. ( scf.d):00025 * ( scf.d):00026 * 1987/06/23 Kevin K. Darling ( scf.d):00027 * Updated with Dev Desc info. ( scf.d):00028 * ( scf.d):00029 * 1998/10/03 Boisy G. Pitre ( scf.d):00030 * Consolidated L1/L2 scfdefs. ( scf.d):00031 * ( scf.d):00032 * 2003/01/21 Boisy G. Pitre ( scf.d):00033 * Added symbolics for enhanced SCF line editing. ( scf.d):00034 * ( scf.d):00035 * 2003/06/02 Boisy G. Pitre ( scf.d):00036 * Updated comments for clarity. ( scf.d):00037 * ( scf.d):00038 * 2004/05/17 Boisy G. Pitre ( scf.d):00039 * Added higher baud rates. ( scf.d):00040 ( scf.d):00041 NAM scf.d ( scf.d):00042 TTL Sequential File Manager Definitions ( scf.d):00043 ( scf.d):00044 PAG ( scf.d):00045 ******************************* ( scf.d):00046 * SCF Device Descriptor Offsets ( scf.d):00047 * ( scf.d):00048 * These definitions are for SCF device descriptors. ( scf.d):00049 ( scf.d):00050 ORG M$DTyp 0012 ( scf.d):00051 IT.DVC RMB 1 Device type (DT.SCF) 0013 ( scf.d):00052 IT.UPC RMB 1 Uppercase flag 0014 ( scf.d):00053 IT.BSO RMB 1 Backspace behavior 0015 ( scf.d):00054 IT.DLO RMB 1 Delete behavior 0016 ( scf.d):00055 IT.EKO RMB 1 Echo flag 0017 ( scf.d):00056 IT.ALF RMB 1 Auto linefeed flag 0018 ( scf.d):00057 IT.NUL RMB 1 End-of-line null count 0019 ( scf.d):00058 IT.PAU RMB 1 Page pause flag 001A ( scf.d):00059 IT.PAG RMB 1 Number of lines per page 001B ( scf.d):00060 IT.BSP RMB 1 Backspace character 001C ( scf.d):00061 IT.DEL RMB 1 Delete-line character 001D ( scf.d):00062 IT.EOR RMB 1 End-of-record character 001E ( scf.d):00063 IT.EOF RMB 1 End-of-file character 001F ( scf.d):00064 IT.RPR RMB 1 Reprint-line character 0020 ( scf.d):00065 IT.DUP RMB 1 Duplicate-last-line character 0021 ( scf.d):00066 IT.PSC RMB 1 Pause character 0022 ( scf.d):00067 IT.INT RMB 1 Interrupt character 0023 ( scf.d):00068 IT.QUT RMB 1 Quit character 0024 ( scf.d):00069 IT.BSE RMB 1 Backspace echo character 0025 ( scf.d):00070 IT.OVF RMB 1 Bell character 0026 ( scf.d):00071 IT.PAR RMB 1 Parity 0027 ( scf.d):00072 IT.BAU RMB 1 Baud rate 0028 ( scf.d):00073 IT.D2P RMB 2 Attached device name string offset 002A ( scf.d):00074 IT.XON RMB 1 X-ON character 002B ( scf.d):00075 IT.XOFF RMB 1 X-OFF character 002C ( scf.d):00076 IT.COL RMB 1 Number of columns for display 002D ( scf.d):00077 IT.ROW RMB 1 Number of rows for display 002E ( scf.d):00078 IT.XTYP RMB 1 Extended type (added by BRI) ( scf.d):00079 ( scf.d):00080 IFGT Level-1 ( scf.d):00081 * Window Descriptor Additions ( scf.d):00082 * For CoCo window, where IT.PAR = $80 ( scf.d):00083 ORG IT.ROW+1 002F ( scf.d):00084 IT.WND RMB 1 Window number (matches device name) ($2E) 002F ( scf.d):00085 IT.VAL RMB 1 Use defaults on Init (0=no, 1=yes) 002F ( scf.d):00086 IT.STY RMB 1 Screen type default 002F ( scf.d):00087 IT.CPX RMB 1 Column start default 002F ( scf.d):00088 IT.CPY RMB 1 Row start default 002F ( scf.d):00089 IT.FGC RMB 1 Foreground color default 002F ( scf.d):00090 IT.BGC RMB 1 Background color default 002F ( scf.d):00091 IT.BDC RMB 1 Border color default ( scf.d):00092 ENDC ( scf.d):00093 ( scf.d):00094 ( scf.d):00095 PAG ( scf.d):00096 ******************** ( scf.d):00097 * SCF Static Storage ( scf.d):00098 * ( scf.d):00099 * SCF devices must reserve this space for SCF ( scf.d):00100 * ( scf.d):00101 ORG V.USER 0006 ( scf.d):00102 V.TYPE RMB 1 Device type or parity 0007 ( scf.d):00103 V.LINE RMB 1 Lines left until end of page 0008 ( scf.d):00104 V.PAUS RMB 1 Immediate Pause request 0009 ( scf.d):00105 V.DEV2 RMB 2 Attached device's static 000B ( scf.d):00106 V.INTR RMB 1 Interrupt char 000C ( scf.d):00107 V.QUIT RMB 1 Quit char 000D ( scf.d):00108 V.PCHR RMB 1 Pause char 000E ( scf.d):00109 V.ERR RMB 1 Accumulated errors 000F ( scf.d):00110 V.XON RMB 1 X-On char 0010 ( scf.d):00111 V.XOFF RMB 1 X-Off char 0011 ( scf.d):00112 V.KANJI RMB 1 Kanji mode flag 0012 ( scf.d):00113 V.KBUF RMB 2 Kana - Kanji convert routine work address 0014 ( scf.d):00114 V.MODADR RMB 2 Kana - Kanji convert module address 0016 ( scf.d):00115 V.PDLHd RMB 2 Open path descriptor list head pointer 0018 ( scf.d):00116 V.RSV RMB 5 Reserve bytes for future expansion 001D ( scf.d):00117 V.SCF EQU . Total SCF manager static overhead ( scf.d):00118 ( scf.d):00119 ( scf.d):00120 PAG ( scf.d):00121 *********************** ( scf.d):00122 * Character Definitions ( scf.d):00123 * 0000 ( scf.d):00124 C$NULL SET 0 Null char 0001 ( scf.d):00125 C$RPET SET $01 (CTRL-A - SOH) Repeat last input line 0003 ( scf.d):00126 C$INTR SET $03 (CTRL-C - ETX) Keyboard interrupt 0004 ( scf.d):00127 C$RPRT SET $04 (CTRL-D - EOT) Reprint current input line 0005 ( scf.d):00128 C$QUIT SET $05 (CTRL-E - ENQ) Keyboard Abort 0007 ( scf.d):00129 C$BELL SET $07 (CTRL-G - BEL) Line overflow warning 0008 ( scf.d):00130 C$BSP SET $08 (CTRL-H - BS ) Back space 0009 ( scf.d):00131 C$RARR SET $09 Right Arrow 0005 ( scf.d):00132 C$EL SET $05 Erase Line 000A ( scf.d):00133 C$LF SET $0A Line feed 000B ( scf.d):00134 C$HOME SET $0B Home position Code 0015 ( scf.d):00135 C$Clsgr SET $15 Graphic screen clear (use FM-11) 0016 ( scf.d):00136 C$Clsall SET $16 Graphic & character clear (use FM-11) 000D ( scf.d):00137 C$CR SET $0D Carriage return 000C ( scf.d):00138 C$FORM SET $0C (CTRL-L - FF ) Form Feed ... screen clear 000F ( scf.d):00139 C$SI SET $0F Shift IN Code 000E ( scf.d):00140 C$SO SET $0E Shift OUT Code 0010 ( scf.d):00141 C$DELETE SET $10 Delete char (for SCF enhanced line editing) 0011 ( scf.d):00142 C$XON SET $11 (CTRL-Q - DC1) Transmit Enable 0011 ( scf.d):00143 C$INSERT SET C$XON Insert char (for SCF enhanced line editing) 0013 ( scf.d):00144 C$XOFF SET $13 (CTRL-S - DC3) Transmit Disable 0013 ( scf.d):00145 C$PLINE SET C$XOFF Print remaining line (for SCF enhanced line editing) 0017 ( scf.d):00146 C$PAUS SET $17 (CTRL-W - ETB) Pause character 0018 ( scf.d):00147 C$DEL SET $18 (CTRL-X - CAN) Delete line 0019 ( scf.d):00148 C$SHRARR SET $19 Shift Right-Arrow 001B ( scf.d):00149 C$EOF SET $1B (CTRL-[ - ESC) END of file 001C ( scf.d):00150 C$RGT SET $1C Cursor right 001D ( scf.d):00151 C$LFT SET $1D Cursor left 001E ( scf.d):00152 C$UP SET $1E Cursor up 001F ( scf.d):00153 C$DWN SET $1F Cursor down 0020 ( scf.d):00154 C$SPAC SET $20 Space 002E ( scf.d):00155 C$PERD SET '. 002C ( scf.d):00156 C$COMA SET ', ( scf.d):00157 ( scf.d):00158 ( scf.d):00159 PAG ( scf.d):00160 ********************************************* ( scf.d):00161 * Sequential Character Path Descriptor Format ( scf.d):00162 * ( scf.d):00163 * A path descriptor is created for every new path that is open ( scf.d):00164 * via the I$Open system call (processed by IOMan). Process ( scf.d):00165 * descriptors track state information of a path. ( scf.d):00166 * ( scf.d):00167 ORG PD.FST 000A ( scf.d):00168 PD.DV2 RMB 2 Output device table pointer 000C ( scf.d):00169 PD.RAW RMB 1 Read/Write or ReadLn/WritLn mode 000D ( scf.d):00170 PD.MAX RMB 2 ReadLn high byte count 000F ( scf.d):00171 PD.MIN RMB 1 Devices are "mine" if clear 0010 ( scf.d):00172 PD.STS RMB 2 Status routine module addr 0012 ( scf.d):00173 PD.STM RMB 2 Reserved for status routine ( scf.d):00174 ORG PD.OPT 0020 ( scf.d):00175 RMB 1 Device type 0021 ( scf.d):00176 PD.UPC RMB 1 Case (0=both, 1=upper only) 0022 ( scf.d):00177 PD.BSO RMB 1 Backspace (0=BSE, 1=BSE,SP,BSE) 0023 ( scf.d):00178 PD.DLO RMB 1 Delete (0=BSE over line, 1=CRLF) 0024 ( scf.d):00179 PD.EKO RMB 1 Echo (0=No Echo) 0025 ( scf.d):00180 PD.ALF RMB 1 Auto linefeed (0=No auto LF) 0026 ( scf.d):00181 PD.NUL RMB 1 End of Line null count 0027 ( scf.d):00182 PD.PAU RMB 1 Page pause (0=No end of page pause) 0028 ( scf.d):00183 PD.PAG RMB 1 Lines per page 0029 ( scf.d):00184 PD.BSP RMB 1 Backspace character 002A ( scf.d):00185 PD.DEL RMB 1 Delete Line character 002B ( scf.d):00186 PD.EOR RMB 1 End of Record character (read only) 002C ( scf.d):00187 PD.EOF RMB 1 End of File character 002D ( scf.d):00188 PD.RPR RMB 1 Repront Line character 002E ( scf.d):00189 PD.DUP RMB 1 Dup Last Line character 002F ( scf.d):00190 PD.PSC RMB 1 Pause character 0030 ( scf.d):00191 PD.INT RMB 1 Keyboard interrupt character (CTRL-C) 0031 ( scf.d):00192 PD.QUT RMB 1 Keyboard quit character (CTRL-E) 0032 ( scf.d):00193 PD.BSE RMB 1 Backspace echo character 0033 ( scf.d):00194 PD.OVF RMB 1 Line overflow character (BELL) 0034 ( scf.d):00195 PD.PAR RMB 1 Parity code 0035 ( scf.d):00196 PD.BAU RMB 1 ACIA baud rate (Color Computer) 0036 ( scf.d):00197 PD.D2P RMB 2 Offset of DEV2 name 0038 ( scf.d):00198 PD.XON RMB 1 ACIA X-ON character 0039 ( scf.d):00199 PD.XOFF RMB 1 ACIA X-OFF character 001A ( scf.d):00200 OPTCNT EQU .-PD.OPT Total user settable options 003A ( scf.d):00201 PD.ERR RMB 1 Most recent I/O error status 003B ( scf.d):00202 PD.TBL RMB 2 Device table addr (copy) 003D ( scf.d):00203 PD.PLP RMB 2 Path Descriptor List Pointer 003F ( scf.d):00204 PD.PST RMB 1 Current path status ( scf.d):00205 ( scf.d):00206 ( scf.d):00207 * PD.PST values Path Descriptor Status byte ( scf.d):00208 * 0001 ( scf.d):00209 PST.DCD EQU %00000001 Set if DCD is lost on Serial port ( scf.d):00210 ( scf.d):00211 ( scf.d):00212 * PD.PAR definitions ( scf.d):00213 * ( scf.d):00214 * Parity 0000 ( scf.d):00215 PARNONE EQU %00000000 0020 ( scf.d):00216 PARODD EQU %00100000 0060 ( scf.d):00217 PAREVEN EQU %01100000 00A0 ( scf.d):00218 PARMARK EQU %10100000 00E0 ( scf.d):00219 PARSPACE EQU %11100000 00E0 ( scf.d):00220 PARMASK EQU %11100000 ( scf.d):00221 ( scf.d):00222 * PD.BAU definitions ( scf.d):00223 * ( scf.d):00224 * Baud rate 0000 ( scf.d):00225 B110 EQU %00000000 0001 ( scf.d):00226 B300 EQU %00000001 0002 ( scf.d):00227 B600 EQU %00000010 0003 ( scf.d):00228 B1200 EQU %00000011 0004 ( scf.d):00229 B2400 EQU %00000100 0005 ( scf.d):00230 B4800 EQU %00000101 0006 ( scf.d):00231 B9600 EQU %00000110 0007 ( scf.d):00232 B19200 EQU %00000111 0008 ( scf.d):00233 B38400 EQU %00001000 0009 ( scf.d):00234 B57600 EQU %00001001 000A ( scf.d):00235 B115200 EQU %00001010 ( scf.d):00236 * Word size 0000 ( scf.d):00237 WORD8 EQU %00000000 0020 ( scf.d):00238 WORD7 EQU %00100000 ( scf.d):00239 * Stop bits 0000 ( scf.d):00240 STOP1 EQU %00000000 0010 ( scf.d):00241 STOP2 EQU %00010000 ( scf.d):00242 ( scf.d):00243 ENDC (sic09/basic09.asm):00267 endc (sic09/basic09.asm):00268 0000 87CD5A29001B1180 (sic09/basic09.asm):00269 mod eom,name,Prgrm+Objct,ReEnt+0,start,size 4C07752000 (sic09/basic09.asm):00270 0000. (sic09/basic09.asm):00271 u0000 rmb 2 Start of data memory / DP pointer 0002. (sic09/basic09.asm):00272 u0002 rmb 2 Size of Data area (including DP) 0004. (sic09/basic09.asm):00273 u0004 rmb 2 Ptr to list of Modules in BASIC09 workspace ($400) 0006. (sic09/basic09.asm):00274 u0006 rmb 1 ??? NEVER REFERENCED (possibly leftover from RUNB) 0007. (sic09/basic09.asm):00275 u0007 rmb 1 ??? NEVER REFERENCED 0008. (sic09/basic09.asm):00276 u0008 rmb 2 Ptr to start of I-code workspace 000A. (sic09/basic09.asm):00277 u000A rmb 2 # bytes used by all programs for code in user workspace (sic09/basic09.asm):00278 * Data area sizes are taken from module headers Permanent storage size ($B-$C) 000C. (sic09/basic09.asm):00279 u000C rmb 2 Bytes free in BASIC09 workspace for user 000E. (sic09/basic09.asm):00280 u000E rmb 2 Ptr to jump table (L323F only) - Only used from L3D4A 0010. (sic09/basic09.asm):00281 u0010 rmb 2 Inited to L3CB5 (jump table) 0012. (sic09/basic09.asm):00282 u0012 rmb 2 Inited to L3D35 (jump table) 0014. (sic09/basic09.asm):00283 u0014 rmb 1 ??? NEVER REFERENCED 0015. (sic09/basic09.asm):00284 u0015 rmb 1 ??? NEVER REFERENCED 0016. (sic09/basic09.asm):00285 u0016 rmb 1 JMP ($7e) instruction 0017. (sic09/basic09.asm):00286 u0017 rmb 2 Address for above (inited to L3D41) 0019. (sic09/basic09.asm):00287 u0019 rmb 2 Inited to L3C32 (JSR $xxxx set up from the module header 001B. (sic09/basic09.asm):00289 u001B rmb 3 Jump vector #1 (Inited to L00DC) 001E. (sic09/basic09.asm):00290 u001E rmb 3 Jump vector #2 (Inited to L1CA5) 0021. (sic09/basic09.asm):00291 u0021 rmb 3 Jump vector #3 (Inited to L255A) 0024. (sic09/basic09.asm):00292 u0024 rmb 3 Jump vector #4 (Inited to L31E8) 0027. (sic09/basic09.asm):00293 u0027 rmb 3 Jump vector #5 (Inited to L3C09) 002A. (sic09/basic09.asm):00294 u002A rmb 3 Jump vector #6 (Inited to L5084) 002D. (sic09/basic09.asm):00295 u002D rmb 1 Standard Input path # (Inited to 0) 002E. (sic09/basic09.asm):00296 u002E rmb 1 Standard Output path # (inited to 1) 002F. (sic09/basic09.asm):00297 u002F rmb 2 Ptr to start of 'current' module in BASIC09 workspace 0031. (sic09/basic09.asm):00298 u0031 rmb 2 Ptr to start of variable storage 0033. (sic09/basic09.asm):00299 u0033 rmb 1 0034. (sic09/basic09.asm):00300 u0034 rmb 1 Flag: if high bit set, signal has been receieved 0035. (sic09/basic09.asm):00301 u0035 rmb 1 Last signal received 0036. (sic09/basic09.asm):00302 u0036 rmb 1 Error code 0037. (sic09/basic09.asm):00303 u0037 rmb 2 0039. (sic09/basic09.asm):00304 u0039 rmb 1 003A. (sic09/basic09.asm):00305 u003A rmb 1 003B. (sic09/basic09.asm):00306 u003B rmb 1 003C. (sic09/basic09.asm):00307 u003C rmb 1 003D. (sic09/basic09.asm):00308 u003D rmb 1 003E. (sic09/basic09.asm):00309 u003E rmb 1 003F. (sic09/basic09.asm):00310 u003F rmb 1 0040. (sic09/basic09.asm):00311 u0040 rmb 2 0042. (sic09/basic09.asm):00312 u0042 rmb 1 0043. (sic09/basic09.asm):00313 u0043 rmb 1 (sic09/basic09.asm):00314 * Next 2 are variable ptrs of some sort, temporary? Permanent? 0044. (sic09/basic09.asm):00315 u0044 rmb 2 Inited to $300 (some table that is built backwards) 0046. (sic09/basic09.asm):00316 u0046 rmb 2 Inited to $300 0048. (sic09/basic09.asm):00317 u0048 rmb 1 0049. (sic09/basic09.asm):00318 u0049 rmb 1 004A. (sic09/basic09.asm):00319 u004A rmb 2 Ptr to end of currently used I-code workspace+1 004C. (sic09/basic09.asm):00320 u004C rmb 1 004D. (sic09/basic09.asm):00321 u004D rmb 1 004E. (sic09/basic09.asm):00322 u004E rmb 2 0050. (sic09/basic09.asm):00323 u0050 rmb 1 Inited to $0e 0051. (sic09/basic09.asm):00324 u0051 rmb 1 Inited to $12 0052. (sic09/basic09.asm):00325 u0052 rmb 1 Inited to $14 0053. (sic09/basic09.asm):00326 u0053 rmb 1 Inited to $A2 0054. (sic09/basic09.asm):00327 u0054 rmb 1 Inited to $BB 0055. (sic09/basic09.asm):00328 u0055 rmb 1 Inited to $40 0056. (sic09/basic09.asm):00329 u0056 rmb 1 Inited to $E6 0057. (sic09/basic09.asm):00330 u0057 rmb 1 Inited to $2D 0058. (sic09/basic09.asm):00331 u0058 rmb 1 Inited to $36 0059. (sic09/basic09.asm):00332 u0059 rmb 1 Inited to $19 005A. (sic09/basic09.asm):00333 u005A rmb 2 Inited to $62E9 005C. (sic09/basic09.asm):00334 u005C rmb 2 005E. (sic09/basic09.asm):00335 u005E rmb 2 Absolute exec address of basic09 module in memory 0060. (sic09/basic09.asm):00336 u0060 rmb 2 Absolute address of $F offset in basic09 mod in mem 0062. (sic09/basic09.asm):00337 u0062 rmb 2 Absolute address of $D offset in basic09 mod in mem 0064. (sic09/basic09.asm):00338 u0064 rmb 2 ??? Size of module-$D,x in mod hdr + 3 0066. (sic09/basic09.asm):00339 u0066 rmb 1 0067. (sic09/basic09.asm):00340 u0067 rmb 1 0068. (sic09/basic09.asm):00341 u0068 rmb 1 0069. (sic09/basic09.asm):00342 u0069 rmb 1 006A. (sic09/basic09.asm):00343 u006A rmb 1 006B. (sic09/basic09.asm):00344 u006B rmb 1 006C. (sic09/basic09.asm):00345 u006C rmb 1 006D. (sic09/basic09.asm):00346 u006D rmb 1 006E. (sic09/basic09.asm):00347 u006E rmb 1 006F. (sic09/basic09.asm):00348 u006F rmb 1 0070. (sic09/basic09.asm):00349 u0070 rmb 2 0072. (sic09/basic09.asm):00350 u0072 rmb 2 0074. (sic09/basic09.asm):00351 u0074 rmb 1 0075. (sic09/basic09.asm):00352 u0075 rmb 1 0076. (sic09/basic09.asm):00353 u0076 rmb 1 0077. (sic09/basic09.asm):00354 u0077 rmb 1 0078. (sic09/basic09.asm):00355 u0078 rmb 1 0079. (sic09/basic09.asm):00356 u0079 rmb 1 007A. (sic09/basic09.asm):00357 u007A rmb 1 007B. (sic09/basic09.asm):00358 u007B rmb 1 007C. (sic09/basic09.asm):00359 u007C rmb 1 007D. (sic09/basic09.asm):00360 u007D rmb 1 Current # chars active in temp buffer ($100-$1ff) 007E. (sic09/basic09.asm):00361 u007E rmb 1 007F. (sic09/basic09.asm):00362 u007F rmb 1 0080. (sic09/basic09.asm):00363 u0080 rmb 2 Pointer to start of temp buffer ($100) 0082. (sic09/basic09.asm):00364 u0082 rmb 2 Pointer to current position in temp buffer ($100-$1ff) 0084. (sic09/basic09.asm):00365 u0084 rmb 1 (sic09/basic09.asm):00366 * For u0085, the following applies: (sic09/basic09.asm):00367 * 0=Integer, 1=Hex, 2=Real, 3=Exponential, 4=String, 5=Boolean, 6=Tab, (sic09/basic09.asm):00368 * 7=Spaces, 8=Quoted text 0085. (sic09/basic09.asm):00369 u0085 rmb 1 Specifier # for print using 0086. (sic09/basic09.asm):00370 u0086 rmb 1 0087. (sic09/basic09.asm):00371 u0087 rmb 1 0088. (sic09/basic09.asm):00372 u0088 rmb 1 0089. (sic09/basic09.asm):00373 u0089 rmb 1 008A. (sic09/basic09.asm):00374 u008A rmb 1 008B. (sic09/basic09.asm):00375 u008B rmb 1 008C. (sic09/basic09.asm):00376 u008C rmb 2 008E. (sic09/basic09.asm):00377 u008E rmb 2 0090. (sic09/basic09.asm):00378 u0090 rmb 1 0091. (sic09/basic09.asm):00379 u0091 rmb 1 0092. (sic09/basic09.asm):00380 u0092 rmb 2 0094. (sic09/basic09.asm):00381 u0094 rmb 1 0095. (sic09/basic09.asm):00382 u0095 rmb 1 0096. (sic09/basic09.asm):00383 u0096 rmb 1 0097. (sic09/basic09.asm):00384 u0097 rmb 1 0098. (sic09/basic09.asm):00385 u0098 rmb 1 0099. (sic09/basic09.asm):00386 u0099 rmb 1 009A. (sic09/basic09.asm):00387 u009A rmb 1 009B. (sic09/basic09.asm):00388 u009B rmb 1 009C. (sic09/basic09.asm):00389 u009C rmb 1 009D. (sic09/basic09.asm):00390 u009D rmb 1 009E. (sic09/basic09.asm):00391 u009E rmb 2 Ptr to current command table (normally L0140) 00A0. (sic09/basic09.asm):00392 u00A0 rmb 1 ??? Flag of some sort? 00A1. (sic09/basic09.asm):00393 u00A1 rmb 2 00A3. (sic09/basic09.asm):00394 u00A3 rmb 1 Token # from command table 00A4. (sic09/basic09.asm):00395 u00A4 rmb 1 Command type (flags?) from command table 00A5. (sic09/basic09.asm):00396 u00A5 rmb 1 Flag type of name string (2=Non variable) 00A6. (sic09/basic09.asm):00397 u00A6 rmb 1 Size of current string/variable name (includes '$' on strings) 00A7. (sic09/basic09.asm):00398 u00A7 rmb 2 Ptr to end of name string+1 00A9. (sic09/basic09.asm):00399 u00A9 rmb 2 ??? Ptr of some sort 00AB. (sic09/basic09.asm):00400 u00AB rmb 2 Ptr to current line I-code end 00AD. (sic09/basic09.asm):00401 u00AD rmb 2 ??? Dupe of above 00AF. (sic09/basic09.asm):00402 u00AF rmb 2 ??? duped from AB @ L1F90 00B1. (sic09/basic09.asm):00403 u00B1 rmb 2 00B3. (sic09/basic09.asm):00404 u00B3 rmb 2 # steps to do (debug mode from STEP command) 00B5. (sic09/basic09.asm):00405 u00B5 rmb 2 00B7. (sic09/basic09.asm):00406 u00B7 rmb 2 00B9. (sic09/basic09.asm):00407 u00B9 rmb 1 00BA. (sic09/basic09.asm):00408 u00BA rmb 1 00BB. (sic09/basic09.asm):00409 u00BB rmb 1 ??? (inited to 0 at during load process) 00BC. (sic09/basic09.asm):00410 u00BC rmb 1 00BD. (sic09/basic09.asm):00411 u00BD rmb 1 (inited to 0) - Path # of newly opened path 00BE. (sic09/basic09.asm):00412 u00BE rmb 1 I$Dup path # for duplicate of error path 00BF. (sic09/basic09.asm):00413 u00BF rmb 2 00C1. (sic09/basic09.asm):00414 u00C1 rmb 2 00C3. (sic09/basic09.asm):00415 u00C3 rmb 2 00C5. (sic09/basic09.asm):00416 u00C5 rmb 1 00C6. (sic09/basic09.asm):00417 u00C6 rmb 1 00C7. (sic09/basic09.asm):00418 u00C7 rmb 1 00C8. (sic09/basic09.asm):00419 u00C8 rmb 2 00CA. (sic09/basic09.asm):00420 u00CA rmb 1 00CB. (sic09/basic09.asm):00421 u00CB rmb 1 00CC. (sic09/basic09.asm):00422 u00CC rmb 1 00CD. (sic09/basic09.asm):00423 u00CD rmb 1 00CE. (sic09/basic09.asm):00424 u00CE rmb 1 00CF. (sic09/basic09.asm):00425 u00CF rmb 1 00D0. (sic09/basic09.asm):00426 u00D0 rmb 1 00D1. (sic09/basic09.asm):00427 u00D1 rmb 1 Some sort of variable type 00D2. (sic09/basic09.asm):00428 u00D2 rmb 2 00D4. (sic09/basic09.asm):00429 u00D4 rmb 2 00D6. (sic09/basic09.asm):00430 u00D6 rmb 2 Size of var in bytes (from u00D1) 00D8. (sic09/basic09.asm):00431 u00D8 rmb 1 00D9. (sic09/basic09.asm):00432 u00D9 rmb 1 Inited to 1 00DA. (sic09/basic09.asm):00433 u00DA rmb 1 00DB. (sic09/basic09.asm):00434 u00DB rmb 1 00DC. (sic09/basic09.asm):00435 u00DC rmb 1 00DD. (sic09/basic09.asm):00436 u00DD rmb 1 00DE. (sic09/basic09.asm):00437 u00DE rmb 1 00DF. (sic09/basic09.asm):00438 u00DF rmb 1 00E0. (sic09/basic09.asm):00439 u00E0 rmb 1 00E1. (sic09/basic09.asm):00440 u00E1 rmb 1 00E2. (sic09/basic09.asm):00441 u00E2 rmb 2 00E4. (sic09/basic09.asm):00442 u00E4 rmb 1 00E5. (sic09/basic09.asm):00443 u00E5 rmb 1 00E6. (sic09/basic09.asm):00444 u00E6 rmb 2 00E8. (sic09/basic09.asm):00445 u00E8 rmb 2 00EA. (sic09/basic09.asm):00446 u00EA rmb 1 00EB. (sic09/basic09.asm):00447 u00EB rmb 4 00EF. (sic09/basic09.asm):00448 u00EF rmb 3 00F2. (sic09/basic09.asm):00449 u00F2 rmb 1 00F3. (sic09/basic09.asm):00450 u00F3 rmb 6 00F9. (sic09/basic09.asm):00451 u00F9 rmb 1 00FA. (sic09/basic09.asm):00452 u00FA rmb 4 00FE. (sic09/basic09.asm):00453 u00FE rmb 1 00FF. (sic09/basic09.asm):00454 u00FF rmb 1 0100. (sic09/basic09.asm):00455 u0100 rmb $100 256 byte temporary buffer for various things 0200. (sic09/basic09.asm):00456 u0200 rmb $100 ??? ($200-$2ff) built backwards 2 bytes/time 0300. (sic09/basic09.asm):00457 u0300 rmb $100 BASIC09 stack area ($300-$3ff) 0400. (sic09/basic09.asm):00458 u0400 rmb $100 List of module ptrs (modules in BASIC09 workspace) 0500. (sic09/basic09.asm):00459 u0500 rmb $100 I-Code buffer (for running) 0600. (sic09/basic09.asm):00460 u0600 rmb $2000-. Default buffer for BASIC09 programs & data 2000 (sic09/basic09.asm):00461 size equ . (sic09/basic09.asm):00462 (sic09/basic09.asm):00463 * Jump tables installed at $1b in DP: in form of JMP to (address of BASIC09's (sic09/basic09.asm):00464 * header in memory + 2 byte in table). In other words, jump to LXXXX 000D 00DD (sic09/basic09.asm):00465 L000D fdb L00DC $1b jump vector 000F 1C71 (sic09/basic09.asm):00466 fdb L1CA5 $1e jump vector 0011 2517 (sic09/basic09.asm):00467 fdb L255A $21 jump vector 0013 3190 (sic09/basic09.asm):00468 fdb L31E8 $24 jump vector 0015 3B74 (sic09/basic09.asm):00469 fdb L3C09 $27 jump vector 0017 4FE8 (sic09/basic09.asm):00470 fdb L5084 $2A jump vector 0019 0000 (sic09/basic09.asm):00471 fdb $0000 End of jump vector table marker (sic09/basic09.asm):00472 001B 426173696330B9 (sic09/basic09.asm):00473 name fcs /Basic09/ (sic09/basic09.asm):00474 0022 1607 (sic09/basic09.asm):00475 L0022 fdb $1607 Edition #22 ($16) (sic09/basic09.asm):00476 (sic09/basic09.asm):00477 * Intro screen (sic09/basic09.asm):00478 (sic09/basic09.asm):00479 ifne wildbits 0024 (sic09/basic09.asm):00480 L0024 fcb $0A (sic09/basic09.asm):00481 else 0024 0C (sic09/basic09.asm):00482 L0024 fcb $0C 0025 2020202020202020 (sic09/basic09.asm):00483 L0025 fcc ' BASIC09' 2020202042415349 433039 0038 0A (sic09/basic09.asm):00484 fcb $0A (sic09/basic09.asm):00485 ifne H6309 (sic09/basic09.asm):00486 fcc ' 6309 VERSION 0' (sic09/basic09.asm):00487 else 0039 2020202020363830 (sic09/basic09.asm):00488 fcc ' 6809 VERSION 0' 392056455253494F 4E2030 (sic09/basic09.asm):00489 endc 004C 31 (sic09/basic09.asm):00490 fcb B09Vrsn+$30 004D 2E30 (sic09/basic09.asm):00491 fcc '.0' 004F 31 (sic09/basic09.asm):00492 fcb B09Major+$30 0050 2E30 (sic09/basic09.asm):00493 fcc '.0' 0052 30 (sic09/basic09.asm):00494 fcb B09Minor+$30 0053 0A (sic09/basic09.asm):00495 fcb $0A 0054 434F505952494748 (sic09/basic09.asm):00496 fcc 'COPYRIGHT 1980 BY MOTOROLA INC.' 5420313938302042 59204D4F544F524F 4C4120494E432E 0073 0A (sic09/basic09.asm):00497 fcb $0A 0074 2020414E44204D49 (sic09/basic09.asm):00498 fcc ' AND MICROWARE SYSTEMS CORP.' 43524F5741524520 53595354454D5320 434F52502E 0091 0A (sic09/basic09.asm):00499 fcb $0A 0092 202020524550524F (sic09/basic09.asm):00500 fcc ' REPRODUCED UNDER LICENSE' 445543454420554E 444552204C494345 4E5345 00AD 0A (sic09/basic09.asm):00501 fcb $0A 00AE 2020202020202054 (sic09/basic09.asm):00502 fcc ' TO TANDY CORP.' 4F2054414E445920 434F52502E 00C3 0A (sic09/basic09.asm):00503 fcb $0A 00C4 20202020414C4C20 (sic09/basic09.asm):00504 fcc ' ALL RIGHTS RESERVED.' 5249474854532052 455345525645442E (sic09/basic09.asm):00505 endc 00DC 8A (sic09/basic09.asm):00506 fcb $8A (sic09/basic09.asm):00507 (sic09/basic09.asm):00508 * Jump vector @ $1B goes here 00DD 3416 (sic09/basic09.asm):00509 L00DC pshs x,d Preserve regs 00DF E6F804 (sic09/basic09.asm):00510 ldb [<$04,s] Get function offset 00E2 308C08 (sic09/basic09.asm):00511 leax ' greater than 05C0 00 (sic09/basic09.asm):01302 fcb $00 (sic09/basic09.asm):01303 05C1 4B (sic09/basic09.asm):01304 fcb $4B 05C2 3E (sic09/basic09.asm):01305 fcc '>' greater than 05C3 00 (sic09/basic09.asm):01306 fcb $00 (sic09/basic09.asm):01307 05C4 4B (sic09/basic09.asm):01308 fcb $4B 05C5 3E (sic09/basic09.asm):01309 fcc '>' greater than 05C6 00 (sic09/basic09.asm):01310 fcb $00 (sic09/basic09.asm):01311 (sic09/basic09.asm):01312 * 3 - real/integer/string 05C7 4B (sic09/basic09.asm):01313 fcb $4B 05C8 3C (sic09/basic09.asm):01314 fcc '<' less than 05C9 00 (sic09/basic09.asm):01315 fcb $00 (sic09/basic09.asm):01316 05CA 4B (sic09/basic09.asm):01317 fcb $4B 05CB 3C (sic09/basic09.asm):01318 fcc '<' less than 05CC 00 (sic09/basic09.asm):01319 fcb $00 (sic09/basic09.asm):01320 05CD 4B (sic09/basic09.asm):01321 fcb $4B 05CE 3C (sic09/basic09.asm):01322 fcc '<' less than 05CF 00 (sic09/basic09.asm):01323 fcb $00 (sic09/basic09.asm):01324 (sic09/basic09.asm):01325 * 4 - real/integer/string/boolean 05D0 4B (sic09/basic09.asm):01326 fcb $4B 05D1 3C3E (sic09/basic09.asm):01327 fcc '<>' not equal to (sic09/basic09.asm):01328 05D3 4B (sic09/basic09.asm):01329 fcb $4B 05D4 3C3E (sic09/basic09.asm):01330 fcc '<>' not equal to (sic09/basic09.asm):01331 05D6 4B (sic09/basic09.asm):01332 fcb $4B 05D7 3C3E (sic09/basic09.asm):01333 fcc '<>' not equal to (sic09/basic09.asm):01334 05D9 4B (sic09/basic09.asm):01335 fcb $4B 05DA 3C3E (sic09/basic09.asm):01336 fcc '<>' not equal to (sic09/basic09.asm):01337 (sic09/basic09.asm):01338 * 4 - real/integer/string/boolean 05DC 4B (sic09/basic09.asm):01339 fcb $4B 05DD 3D (sic09/basic09.asm):01340 fcc '=' equal to 05DE 00 (sic09/basic09.asm):01341 fcb $00 (sic09/basic09.asm):01342 05DF 4B (sic09/basic09.asm):01343 fcb $4B 05E0 3D (sic09/basic09.asm):01344 fcc '=' equal to 05E1 00 (sic09/basic09.asm):01345 fcb $00 (sic09/basic09.asm):01346 05E2 4B (sic09/basic09.asm):01347 fcb $4B 05E3 3D (sic09/basic09.asm):01348 fcc '=' equal to 05E4 00 (sic09/basic09.asm):01349 fcb $00 (sic09/basic09.asm):01350 05E5 4B (sic09/basic09.asm):01351 fcb $4B 05E6 3D (sic09/basic09.asm):01352 fcc '=' equal to 05E7 00 (sic09/basic09.asm):01353 fcb $00 (sic09/basic09.asm):01354 (sic09/basic09.asm):01355 * 3 - real/integer/string 05E8 4B (sic09/basic09.asm):01356 fcb $4B 05E9 3E3D (sic09/basic09.asm):01357 fcc '>=' greater than or equal to (sic09/basic09.asm):01358 05EB 4B (sic09/basic09.asm):01359 fcb $4B 05EC 3E3D (sic09/basic09.asm):01360 fcc '>=' greater than or equal to (sic09/basic09.asm):01361 05EE 4B (sic09/basic09.asm):01362 fcb $4B 05EF 3E3D (sic09/basic09.asm):01363 fcc '>=' greater than or equal to (sic09/basic09.asm):01364 (sic09/basic09.asm):01365 * 3 - real/integer/string 05F1 4B (sic09/basic09.asm):01366 fcb $4B 05F2 3C3D (sic09/basic09.asm):01367 fcc '<=' less than or equal to (sic09/basic09.asm):01368 05F4 4B (sic09/basic09.asm):01369 fcb $4B 05F5 3C3D (sic09/basic09.asm):01370 fcc '<=' less than or equal to (sic09/basic09.asm):01371 05F7 4B (sic09/basic09.asm):01372 fcb $4B 05F8 3C3D (sic09/basic09.asm):01373 fcc '<=' less than or equal to (sic09/basic09.asm):01374 (sic09/basic09.asm):01375 * 3 - real/integer/string 05FA 4C (sic09/basic09.asm):01376 fcb $4c 05FB 2B (sic09/basic09.asm):01377 fcc '+' plus 05FC 00 (sic09/basic09.asm):01378 fcb $00 (sic09/basic09.asm):01379 05FD 4C (sic09/basic09.asm):01380 fcb $4c 05FE 2B (sic09/basic09.asm):01381 fcc '+' plus 05FF 00 (sic09/basic09.asm):01382 fcb $00 (sic09/basic09.asm):01383 0600 4C (sic09/basic09.asm):01384 fcb $4c 0601 2B (sic09/basic09.asm):01385 fcc '+' plus 0602 00 (sic09/basic09.asm):01386 fcb $00 (sic09/basic09.asm):01387 (sic09/basic09.asm):01388 * 2 - real/integer 0603 4C (sic09/basic09.asm):01389 fcb $4C 0604 2D (sic09/basic09.asm):01390 fcc '-' minus 0605 00 (sic09/basic09.asm):01391 fcb $00 (sic09/basic09.asm):01392 0606 4C (sic09/basic09.asm):01393 fcb $4C 0607 2D (sic09/basic09.asm):01394 fcc '-' minus 0608 00 (sic09/basic09.asm):01395 fcb $00 (sic09/basic09.asm):01396 (sic09/basic09.asm):01397 * 2 - real/integer 0609 4D (sic09/basic09.asm):01398 fcb $4D 060A 2A (sic09/basic09.asm):01399 fcc '*' multiply 060B 00 (sic09/basic09.asm):01400 fcb $00 (sic09/basic09.asm):01401 060C 4D (sic09/basic09.asm):01402 fcb $4D 060D 2A (sic09/basic09.asm):01403 fcc '*' multiply 060E 00 (sic09/basic09.asm):01404 fcb $00 (sic09/basic09.asm):01405 (sic09/basic09.asm):01406 * 2 - real/integer 060F 4D (sic09/basic09.asm):01407 fcb $4D 0610 2F (sic09/basic09.asm):01408 fcc '/' divide 0611 00 (sic09/basic09.asm):01409 fcb $00 (sic09/basic09.asm):01410 0612 4D (sic09/basic09.asm):01411 fcb $4D 0613 2F (sic09/basic09.asm):01412 fcc '/' divide 0614 00 (sic09/basic09.asm):01413 fcb $00 (sic09/basic09.asm):01414 (sic09/basic09.asm):01415 * 1 - real 0615 4E (sic09/basic09.asm):01416 fcb $4E 0616 5E (sic09/basic09.asm):01417 fcc '^' exponent 0617 00 (sic09/basic09.asm):01418 fcb $00 (sic09/basic09.asm):01419 (sic09/basic09.asm):01420 * 1 - real 0618 4E (sic09/basic09.asm):01421 fcb $4E 0619 2A2A (sic09/basic09.asm):01422 fcc '**' exponent (2nd version) (sic09/basic09.asm):01423 061B 20 (sic09/basic09.asm):01424 fcb $20 061C 0D2C (sic09/basic09.asm):01425 fdb L138A-* ??? ($0D3c) (sic09/basic09.asm):01426 061E 21 (sic09/basic09.asm):01427 fcb $21 061F 0D29 (sic09/basic09.asm):01428 fdb L138A-* ??? ($0D39) (sic09/basic09.asm):01429 0621 22 (sic09/basic09.asm):01430 fcb $22 0622 0D26 (sic09/basic09.asm):01431 fdb L138A-* ??? ($0D36) (sic09/basic09.asm):01432 0624 23 (sic09/basic09.asm):01433 fcb $23 0625 0D23 (sic09/basic09.asm):01434 fdb L138A-* ??? ($0D33) (sic09/basic09.asm):01435 0627 20 (sic09/basic09.asm):01436 fcb $20 0628 0D1C (sic09/basic09.asm):01437 fdb L1386-* ??? (Adds period, does 138A) ($0D2C) (sic09/basic09.asm):01438 062A 21 (sic09/basic09.asm):01439 fcb $21 062B 0D19 (sic09/basic09.asm):01440 fdb L1386-* ??? (Adds period, does 138A) ($0D29) (sic09/basic09.asm):01441 062D 22 (sic09/basic09.asm):01442 fcb $22 062E 0D16 (sic09/basic09.asm):01443 fdb L1386-* ??? (Add period, does 138A) ($0D26) (sic09/basic09.asm):01444 0630 23 (sic09/basic09.asm):01445 fcb $23 0631 0D13 (sic09/basic09.asm):01446 fdb L1386-* ??? (Add period, does 138A) ($0D23) (sic09/basic09.asm):01447 (sic09/basic09.asm):01448 * System Mode commands 0633 0002 (sic09/basic09.asm):01449 fdb 2 # commands this table 0635 02 (sic09/basic09.asm):01450 fcb 2 # bytes to first command string 0636 0374 (sic09/basic09.asm):01451 L0668 fdb L09F9-L0668 0638 A4 (sic09/basic09.asm):01452 fcs '$' 0639 02C7 (sic09/basic09.asm):01453 L066B fdb L094F-L066B 063B 8D (sic09/basic09.asm):01454 fcb C$CR+$80 (Carriage return) (sic09/basic09.asm):01455 063C 000E (sic09/basic09.asm):01456 fdb 14 # commands this table 063E 02 (sic09/basic09.asm):01457 fcb 2 # bytes to first command string 063F 07E1 (sic09/basic09.asm):01458 L0671 fdb L0E6D-L0671 0641 4259C5 (sic09/basic09.asm):01459 fcs 'BYE' 0644 02B7 (sic09/basic09.asm):01460 L0676 fdb L094A-L0676 0646 4449D2 (sic09/basic09.asm):01461 fcs 'DIR' 0649 0F05 (sic09/basic09.asm):01462 L067B fdb L1590-L067B 064B 454449D4 (sic09/basic09.asm):01463 fcs 'EDIT' 064F 0EFF (sic09/basic09.asm):01464 L0681 fdb L1590-L0681 0651 C5 (sic09/basic09.asm):01465 fcs 'E' 0652 065D (sic09/basic09.asm):01466 L0684 fdb L0D02-L0684 0654 4C4953D4 (sic09/basic09.asm):01467 fcs 'LIST' 0658 071B (sic09/basic09.asm):01468 L068A fdb L0DC7-L068A 065A 5255CE (sic09/basic09.asm):01469 fcs 'RUN' 065D 07EE (sic09/basic09.asm):01470 L068F fdb L0E98-L068F 065F 4B494CCC (sic09/basic09.asm):01471 fcs 'KILL' 0663 063E (sic09/basic09.asm):01472 L0695 fdb L0CF4-L0695 0665 534156C5 (sic09/basic09.asm):01473 fcs 'SAVE' 0669 040C (sic09/basic09.asm):01474 L069B fdb L0AC3-L069B 066B 4C4F41C4 (sic09/basic09.asm):01475 fcs 'LOAD' 066F 0374 (sic09/basic09.asm):01476 L06A1 fdb L0A32-L06A1 0671 52454E414DC5 (sic09/basic09.asm):01477 fcs 'RENAME' 0677 0489 (sic09/basic09.asm):01478 L06A9 fdb L0B51-L06A9 0679 504143CB (sic09/basic09.asm):01479 fcs 'PACK' 067D 024C (sic09/basic09.asm):01480 L06AF fdb L0918-L06AF 067F 4D45CD (sic09/basic09.asm):01481 fcs 'MEM' 0682 0353 (sic09/basic09.asm):01482 L06B4 fdb L0A24-L06B4 0684 4348C4 (sic09/basic09.asm):01483 fcs 'CHD' 0687 0352 (sic09/basic09.asm):01484 L06B9 fdb L0A28-L06B9 0689 4348D8 (sic09/basic09.asm):01485 fcs 'CHX' (sic09/basic09.asm):01486 (sic09/basic09.asm):01487 * Debug mode commands (offsets done by current base + offset) 068C 0002 (sic09/basic09.asm):01488 fdb 2 # of entries this table (-3,x) 068E 02 (sic09/basic09.asm):01489 fcb 2 # of bytes to start of next entry (-1,x) 068F 031B (sic09/basic09.asm):01490 L06C1 fdb L09F9-L06C1 base ptr goes here (0,x) 0691 A4 (sic09/basic09.asm):01491 fcs '$' base ptr+(-1,x) above points here 0692 09AC (sic09/basic09.asm):01492 L06C4 fdb L108B-L06C4 0694 8D (sic09/basic09.asm):01493 fcb C$CR+$80 (Carriage return) (sic09/basic09.asm):01494 0695 000E (sic09/basic09.asm):01495 L06C7 fdb 14 # of entries this table (but 13?) 0697 02 (sic09/basic09.asm):01496 fcb 2 # bytes to next entry (sic09/basic09.asm):01497 * Debug set #2? 0698 09B5 (sic09/basic09.asm):01498 L06CA fdb L109A-L06CA 069A 434F4ED4 (sic09/basic09.asm):01499 fcs 'CONT' 069E 025D (sic09/basic09.asm):01500 L06D0 fdb L094A-L06D0 06A0 4449D2 (sic09/basic09.asm):01501 fcs 'DIR' 06A3 0979 (sic09/basic09.asm):01502 L06D5 fdb L1068-L06D5 06A5 D1 (sic09/basic09.asm):01503 fcs 'Q' 06A6 09F1 (sic09/basic09.asm):01504 L06D8 fdb L10E4-L06D8 06A8 4C4953D4 (sic09/basic09.asm):01505 fcs 'LIST' 06AC 0A9E (sic09/basic09.asm):01506 L06DE fdb L1195-L06DE 06AE 5052494ED4 (sic09/basic09.asm):01507 fcs 'PRINT' 06B3 0B10 (sic09/basic09.asm):01508 L06E5 fdb L120A-L06E5 06B5 53544154C5 (sic09/basic09.asm):01509 fcs 'STATE' 06BA 0A90 (sic09/basic09.asm):01510 L06EC fdb L1195-L06EC 06BC 54524FCE (sic09/basic09.asm):01511 fcs 'TRON' 06C0 0A8A (sic09/basic09.asm):01512 L06F2 fdb L1195-L06F2 06C2 54524F46C6 (sic09/basic09.asm):01513 fcs 'TROFF' 06C7 0A83 (sic09/basic09.asm):01514 L06F9 fdb L1195-L06F9 06C9 4445C7 (sic09/basic09.asm):01515 fcs 'DEG' 06CC 0A7E (sic09/basic09.asm):01516 L06FE fdb L1195-L06FE 06CE 5241C4 (sic09/basic09.asm):01517 fcs 'RAD' 06D1 0A79 (sic09/basic09.asm):01518 L0703 fdb L1195-L0703 06D3 4C45D4 (sic09/basic09.asm):01519 fcs 'LET' 06D6 0959 (sic09/basic09.asm):01520 L0708 fdb L107C-L0708 06D8 535445D0 (sic09/basic09.asm):01521 fcs 'STEP' 06DC 0B0B (sic09/basic09.asm):01522 L070E fdb L1226-L070E 06DE 42524541CB (sic09/basic09.asm):01523 fcs 'BREAK' (sic09/basic09.asm):01524 * Some edit mode stuff? 06E3 0008 (sic09/basic09.asm):01525 fdb 8 # entries this table 06E5 02 (sic09/basic09.asm):01526 fcb 2 # bytes to start entry 06E6 0F77 (sic09/basic09.asm):01527 L0718 fdb L169E-L0718 06E8 CC (sic09/basic09.asm):01528 fcs 'L' 06E9 0F74 (sic09/basic09.asm):01529 L071B fdb L169E-L071B 06EB EC (sic09/basic09.asm):01530 fcs 'l' 06EC 127A (sic09/basic09.asm):01531 L071E fdb L199A-L071E 06EE C4 (sic09/basic09.asm):01532 fcs 'D' 06EF 1277 (sic09/basic09.asm):01533 L0721 fdb L199A-L0721 06F1 E4 (sic09/basic09.asm):01534 fcs 'd' 06F2 0EB2 (sic09/basic09.asm):01535 L0724 fdb L15E7-L0724 06F4 AB (sic09/basic09.asm):01536 fcs '+' 06F5 0EAF (sic09/basic09.asm):01537 L0727 fdb L15E7-L0727 06F7 AD (sic09/basic09.asm):01538 fcs '-' 06F8 0EAC (sic09/basic09.asm):01539 L072A fdb L15E7-L072A 06FA 8D (sic09/basic09.asm):01540 fcb C$CR+$80 06FB 0EC3 (sic09/basic09.asm):01541 L072D fdb L1601-L072D 06FD A0 (sic09/basic09.asm):01542 fcb C$SPAC+$80 (sic09/basic09.asm):01543 06FE 0004 (sic09/basic09.asm):01544 fdb 4 # entries 0700 02 (sic09/basic09.asm):01545 fcb 2 # bytes to first entry 0701 101B (sic09/basic09.asm):01546 L0733 fdb L175B-L0733 0703 D3 (sic09/basic09.asm):01547 fcs 'S' 0704 101B (sic09/basic09.asm):01548 L0736 fdb L175E-L0736 0706 C3 (sic09/basic09.asm):01549 fcs 'C' 0707 11A3 (sic09/basic09.asm):01550 L0739 fdb L18DF-L0739 0709 D2 (sic09/basic09.asm):01551 fcs 'R' 070A 1255 (sic09/basic09.asm):01552 L073C fdb L1993-L073C 070C D1 (sic09/basic09.asm):01553 fcs 'Q' (sic09/basic09.asm):01554 070D 0E (sic09/basic09.asm):01555 L073F fcb $0E 070E 52656164F9 (sic09/basic09.asm):01556 fcs 'Ready' 0713 57686174BF (sic09/basic09.asm):01557 L0745 fcs 'What?' 0718 20667265E5 (sic09/basic09.asm):01558 L074A fcs ' free' 071D 50726F677261ED (sic09/basic09.asm):01559 L074F fcs 'Program' 0724 50524F4345445552 (sic09/basic09.asm):01560 L0756 fcs 'PROCEDURE' C5 072D 0D (sic09/basic09.asm):01561 fcb C$CR 072E 0A (sic09/basic09.asm):01562 L0760 fcb C$LF 072F 20204E616D652020 (sic09/basic09.asm):01563 fcs ' Name Proc-Size Data-Size' 2020202050726F63 2D53697A65202044 6174612D53697AE5 074F 526577726974653F (sic09/basic09.asm):01564 L0781 fcc 'Rewrite?: ' 3A20 0759 0E (sic09/basic09.asm):01565 L0791 fcb $0E 075A 425245414B3AA0 (sic09/basic09.asm):01566 fcs 'BREAK: ' 0761 6FEB (sic09/basic09.asm):01567 L07A2 fcs 'ok' 0763 44BA (sic09/basic09.asm):01568 L07A4 fcs 'D:' 0765 45BA (sic09/basic09.asm):01569 L07A6 fcs 'E:' 0767 42BA (sic09/basic09.asm):01570 L07A8 fcs 'B:' (sic09/basic09.asm):01571 (sic09/basic09.asm):01572 * F$Icpt routine 0769 A663 (sic09/basic09.asm):01573 L07B5 lda R$DP,s Get DP register from stack 076B 1F8B (sic09/basic09.asm):01574 tfr a,dp Put into real DP 076D D735 (sic09/basic09.asm):01575 stb $100,u Point to end of DP 077B 4F (sic09/basic09.asm):01597 clra Clear all of DP to $00 077C 5F (sic09/basic09.asm):01598 clrb 077D EDC3 (sic09/basic09.asm):01599 L07C9 std ,--u 077F 11A3E4 (sic09/basic09.asm):01600 cmpu ,s 0782 22F9 (sic09/basic09.asm):01601 bhi L07C9 0784 3506 (sic09/basic09.asm):01602 puls d Get start of data mem into D (sic09/basic09.asm):01603 endc (sic09/basic09.asm):01604 0786 3384 (sic09/basic09.asm):01605 leau ,x Point U to Start of parameter area 0788 DD00 (sic09/basic09.asm):01606 std L000D-$d,pc Point to beginning of module header (sic09/basic09.asm):01651 ifne H6309 (sic09/basic09.asm):01652 tfr x,w Move it to W (sic09/basic09.asm):01653 else 07D1 3410 (sic09/basic09.asm):01654 pshs x (sic09/basic09.asm):01655 endc 07D3 9E00 (sic09/basic09.asm):01656 ldx L000D,pc Point to module header extensions 07DC 867E (sic09/basic09.asm):01660 L082E lda #$7E Opcode for JMP Extended instruction 07DE A780 (sic09/basic09.asm):01661 sta ,x+ Store in table 07E0 ECA1 (sic09/basic09.asm):01662 ldd ,y++ Get jump offset from module header extension (sic09/basic09.asm):01663 ifne H6309 (sic09/basic09.asm):01664 addr w,d Add to start of module address (sic09/basic09.asm):01665 else 07E2 E3E4 (sic09/basic09.asm):01666 addd ,s (sic09/basic09.asm):01667 endc 07E4 ED81 (sic09/basic09.asm):01668 std ,x++ Store as destination of JMP 07E6 ECA4 (sic09/basic09.asm):01669 ldd ,y Keep installing JMP tables until 0000 found 07E8 26F2 (sic09/basic09.asm):01670 bne L082E (sic09/basic09.asm):01671 ifeq H6309 07EA 3262 (sic09/basic09.asm):01672 leas 2,s eat X on stack (sic09/basic09.asm):01673 endc 07EC 8D1F (sic09/basic09.asm):01674 bsr L0116 Go init <$50 vars, & some table ptrs 07EE 3520 (sic09/basic09.asm):01675 puls y Get parameter ptr 07F0 308DF91A (sic09/basic09.asm):01676 leax >L0140,pc Point to main command token list 07F4 9F9E (sic09/basic09.asm):01677 stx 1st entry into routine 0820 3540 (sic09/basic09.asm):01704 L0870 puls u Get RTS address 0822 8D25 (sic09/basic09.asm):01705 bsr L0899 Push 2 bytes from L0024,pc Point to intro screen credits 085A 8D24 (sic09/basic09.asm):01732 bsr L08D0 Copy to temp buffer/print to Std error 085C 308DF7BB (sic09/basic09.asm):01733 leax name,pc Point to 'Basic09' 0860 8D1E (sic09/basic09.asm):01734 bsr L08D0 Copy to temp buffer/print to Std error (sic09/basic09.asm):01735 0862 8DB9 (sic09/basic09.asm):01736 L08B2 bsr L086D 0864 308DFEA6 (sic09/basic09.asm):01737 leax >L073F+1,pc Point to 'Ready' 0868 8D16 (sic09/basic09.asm):01738 bsr L08D0 Copy to temp buffer/print to Std error 086A 308DFEF9 (sic09/basic09.asm):01739 leax >L07A8,pc Point to 'B:' prompt 086E 318DFDC4 (sic09/basic09.asm):01740 leay >L0668,pc Point to system mode command table 0872 0F84 (sic09/basic09.asm):01741 clr L0745,pc Point to 'What?' 0880 16099D (sic09/basic09.asm):01748 L08D0 lbra L125F Copy to temp buffer/print to Std error (sic09/basic09.asm):01749 (sic09/basic09.asm):01750 * Get next command from keyboard & execute it (sic09/basic09.asm):01751 * Entry: Y=Ptr to command table (sic09/basic09.asm):01752 * Exit: Carry set if command doesn't exist 0883 3430 (sic09/basic09.asm):01753 L08D3 pshs y,x Preserve command tbl ptr & ptr to prompt (ex B:) 0885 0F35 (sic09/basic09.asm):01754 clr key? 089C 2628 (sic09/basic09.asm):01764 bne L0915 No, exit routine with error (sic09/basic09.asm):01765 ifne H6309 (sic09/basic09.asm):01766 ldq #$6279650d 'bye' (sic09/basic09.asm):01767 stq ,y Stick it in the keyboard buffer (sic09/basic09.asm):01768 else 089E CC6279 (sic09/basic09.asm):01769 ldd #'b*256+'y Stick the word 'bye' into the keybrd buffer 08A1 EDA4 (sic09/basic09.asm):01770 std ,y 08A3 CC650D (sic09/basic09.asm):01771 ldd #'e*256+C$CR ('e' + CR) 08A6 ED22 (sic09/basic09.asm):01772 std 2,y (sic09/basic09.asm):01773 endc (sic09/basic09.asm):01774 * Keyboard line read, no errors from ReadLn 08A8 AE62 (sic09/basic09.asm):01775 L08F8 ldx 2,s Get command tbl ptr back 08AA 8680 (sic09/basic09.asm):01776 lda #$80 Mask to check for end of entry (high bit set) 08AC 8D15 (sic09/basic09.asm):01777 bsr L010A Go parse line, y=ptr to offset in command found 08AE 260D (sic09/basic09.asm):01778 bne L090F '$' or command found, skip ahead 08B0 1701BF (sic09/basic09.asm):01779 lbsr L010D ???Go check for a procedure name, B=size 08B3 2711 (sic09/basic09.asm):01780 beq L0915 None, exit with carry set 08B5 3003 (sic09/basic09.asm):01781 leax $03,x Point to system mode table 2 08B7 8620 (sic09/basic09.asm):01782 lda #C$SPAC ??? 08B9 8D08 (sic09/basic09.asm):01783 bsr L010A Go parse line, y=ptr to offset in command found 08BB 2709 (sic09/basic09.asm):01784 beq L0915 No command found, exit with carry set (sic09/basic09.asm):01785 * Command found in table 08BD EC84 (sic09/basic09.asm):01786 L090F ldd ,x Get offset 08BF 3264 (sic09/basic09.asm):01787 leas 4,s Eat stack 08C1 6E8B (sic09/basic09.asm):01788 jmp d,x Call routine (sic09/basic09.asm):01789 08C3 9D1E (sic09/basic09.asm):01790 L010A jsr 0900 308DFE2A (sic09/basic09.asm):01827 L094F leax >L0760,pc Point to basic09 DIR header 0904 170919 (sic09/basic09.asm):01828 lbsr L125F Print it out to Std err 0907 109E04 (sic09/basic09.asm):01829 ldy L074A,pc Point to 'free' 0958 1708C7 (sic09/basic09.asm):01869 lbsr L1261 Print it out to Std err 095B 1603A0 (sic09/basic09.asm):01870 lbra L0D51 Close std err; Dup path @ $0100,x Bump X up to $3000 097B A3A4 (sic09/basic09.asm):01887 subd ,y Subtract value from table 097D 24F8 (sic09/basic09.asm):01888 bhs L09C6 No underflow, keep subtracting current power of 10 097F E3A1 (sic09/basic09.asm):01889 addd ,y++ Restore to before underflow state 0981 3406 (sic09/basic09.asm):01890 pshs d Preserve remainder of this power 0983 ECA4 (sic09/basic09.asm):01891 ldd ,y Get next lower power of 10 0985 1F10 (sic09/basic09.asm):01892 tfr x,d Promptly overwrite it with X (doesn't chg flags) 0987 270E (sic09/basic09.asm):01893 beq L09E6 If finished table, skip ahead 0989 10833000 (sic09/basic09.asm):01894 cmpd #$3000 Just went through once? 098D 27E3 (sic09/basic09.asm):01895 beq L09C1 Yes, reset X & do again 098F 17099F (sic09/basic09.asm):01896 lbsr L1373 Go save A @ [255 chars 09B8 1F02 (sic09/basic09.asm):01922 tfr d,y Move size of parameter area to Y for Fork 09BA 308DF887 (sic09/basic09.asm):01923 leax >L0277,pc Point to 'SHELL' 09BE 8601 (sic09/basic09.asm):01924 lda #Objct ML program 09C0 5F (sic09/basic09.asm):01925 clrb Size of data area=0 pages 09C1 103F03 (sic09/basic09.asm):01926 os9 F$Fork Fork shell out 09C4 2570 (sic09/basic09.asm):01927 bcs L0A86 Error, deal with it 09C6 3402 (sic09/basic09.asm):01928 pshs a Save process # of shell 09C8 103F04 (sic09/basic09.asm):01929 L0A17 os9 F$Wait Wait for death signal 09CB A1E4 (sic09/basic09.asm):01930 cmpa ,s Was it our shell process? 09CD 26F9 (sic09/basic09.asm):01931 bne L0A17 No, wait for ours 09CF 3261 (sic09/basic09.asm):01932 leas 1,s Yes, eat process # 09D1 5D (sic09/basic09.asm):01933 tstb Error status from child? 09D2 2662 (sic09/basic09.asm):01934 bne L0A86 Yes, deal with it 09D4 39 (sic09/basic09.asm):01935 rts No, return (sic09/basic09.asm):01936 * System Mode - CHD (MOD 93/09/20 - CHANGED FROM UPDAT. TO READ.) 09D5 8681 (sic09/basic09.asm):01937 L0A24 lda #DIR.+READ. Open Data directory in Update mode 09D7 2002 (sic09/basic09.asm):01938 bra L0A2A (sic09/basic09.asm):01939 (sic09/basic09.asm):01940 * System Mode - CHX 09D9 8684 (sic09/basic09.asm):01941 L0A28 lda #DIR.+EXEC. Open Execution Directory 09DB 30A4 (sic09/basic09.asm):01942 L0A2A leax ,y Point to directory we are changing to 09DD 103F86 (sic09/basic09.asm):01943 os9 I$ChgDir Change dir 09E0 2554 (sic09/basic09.asm):01944 bcs L0A86 Error, exit with it 09E2 39 (sic09/basic09.asm):01945 rts No error, return (sic09/basic09.asm):01946 09E3 8D68 (sic09/basic09.asm):01947 L0A32 bsr L0A9D 09E5 170539 (sic09/basic09.asm):01948 lbsr L0F6E 09E8 2552 (sic09/basic09.asm):01949 bcs L0A8C 09EA 3410 (sic09/basic09.asm):01950 pshs x 09EC AE84 (sic09/basic09.asm):01951 ldx ,x 09EE 6D06 (sic09/basic09.asm):01952 tst 6,x 09F0 264A (sic09/basic09.asm):01953 bne L0A8C 09F2 8D4C (sic09/basic09.asm):01954 bsr L0A90 Go check char @ Y for space or comma 09F4 2703 (sic09/basic09.asm):01955 beq L0A48 It is a space or comma, skip ahead 09F6 53 (sic09/basic09.asm):01956 L0A45 comb Set carry, restore X & return 09F7 3590 (sic09/basic09.asm):01957 puls pc,x (sic09/basic09.asm):01958 09F9 8D77 (sic09/basic09.asm):01959 L0A48 bsr L010D Call 0, exit 0A51 109E2F (sic09/basic09.asm):02009 L0AA2 ldy L074F,pc Point Y to 'Program' 0A5F 39 (sic09/basic09.asm):02016 L0AB0 rts (sic09/basic09.asm):02017 0A60 C62B (sic09/basic09.asm):02018 L0AB1 ldb #$2B Unknown procedure error 0A62 2008 (sic09/basic09.asm):02019 bra L0ABD (sic09/basic09.asm):02020 0A64 C620 (sic09/basic09.asm):02021 L0AB5 ldb #$20 Memory full error 0A66 3404 (sic09/basic09.asm):02022 L0AB7 pshs b 0A68 8DC7 (sic09/basic09.asm):02023 bsr L0A81 0A6A 3504 (sic09/basic09.asm):02024 puls b 0A6C C1D3 (sic09/basic09.asm):02025 L0ABD cmpb #E$EOF End of file error? 0A6E 27C9 (sic09/basic09.asm):02026 beq L0A89 Yes, special case 0A70 20C4 (sic09/basic09.asm):02027 bra L0A86 Exit with it (sic09/basic09.asm):02028 0A72 9D1E (sic09/basic09.asm):02029 L010D jsr L0756,pc Point to 'PROCEDURE' 0AF2 A680 (sic09/basic09.asm):02098 L0B43 lda ,x+ Get byte from 'procedure' 0AF4 A8A0 (sic09/basic09.asm):02099 eora ,y+ Check (with case conversion) if it matches buffer 0AF6 84DF (sic09/basic09.asm):02100 anda #$DF 0AF8 2605 (sic09/basic09.asm):02101 bne L0B50 No, exit (sic09/basic09.asm):02102 * NOTE: SHOULD MAKE LDA -1,X SINCE FASTER 0AFA 6D1F (sic09/basic09.asm):02103 tst -1,x Was that the last letter of 'procedure'? 0AFC 2AF4 (sic09/basic09.asm):02104 bpl L0B43 No, keep checking 0AFE 4F (sic09/basic09.asm):02105 clra Yes, no error & return 0AFF 39 (sic09/basic09.asm):02106 L0B50 rts (sic09/basic09.asm):02107 0B00 17012D (sic09/basic09.asm):02108 L0B51 lbsr L0C83 0B03 DE46 (sic09/basic09.asm):02109 ldu 256 bytes free for user? 0CA3 10270275 (sic09/basic09.asm):02312 lbeq L0F69 No, exit with Memory Full error 0CA7 8680 (sic09/basic09.asm):02313 lda #$80 Set hi-bit flag 0CA9 9784 (sic09/basic09.asm):02314 sta L0781,pc Point to 'Rewrite?:' 0D37 108E000A (sic09/basic09.asm):02385 ldy #10 Size of rewrite string 0D3B 96BE (sic09/basic09.asm):02386 lda 0 chars that qualify as name, skip ahead 0D78 3420 (sic09/basic09.asm):02423 pshs y Save ptr to string name in question (sic09/basic09.asm):02424 * NOTE: MAY WANT TO CHANGE ENTRY POINT, SINCE L0A9D CALLS L010D AGAIN 0D7A 17FCD0 (sic09/basic09.asm):02425 lbsr L0A9D Get ptr & size of name, or use current (or 'Program') 0D7D AEE4 (sic09/basic09.asm):02426 ldx ,s Get ptr to string name in question again 0D7F A6A0 (sic09/basic09.asm):02427 L0DD3 lda ,y+ Get char from name we _will_ use 0D81 A780 (sic09/basic09.asm):02428 sta ,x+ Save over top of string name in question 0D83 2AFA (sic09/basic09.asm):02429 bpl L0DD3 Copy whole string (including last hi-bit byte) 0D85 860D (sic09/basic09.asm):02430 lda #C$CR Append CR to end 0D87 A784 (sic09/basic09.asm):02431 sta ,x 0D89 3520 (sic09/basic09.asm):02432 puls y Point to beginning of new string 0D8B 1701B6 (sic09/basic09.asm):02433 L0DDF lbsr L0F91 Y=Ptr to end of string+1, X=Ptr to module ptr entry 0D8E 1025FCAA (sic09/basic09.asm):02434 lbcs L0A8C Module not in workspace, exit with Unknown Procedure 0D92 AE84 (sic09/basic09.asm):02435 ldx ,x Get ptr to module 0D94 9F2F (sic09/basic09.asm):02436 stx $0102,s Eat 258 bytes from stack ??? 0DDE DC00 (sic09/basic09.asm):02476 ldd 1, skip ahead 0FF0 2B0D (sic09/basic09.asm):02818 bmi L104E Was 0 or lower, skip ahead 0FF2 17FD72 (sic09/basic09.asm):02819 L1041 lbsr L0DBB 0FF5 308DF760 (sic09/basic09.asm):02820 leax >L0791,pc Force to Alpha mode (if VDG window) & print BREAK 0FF9 17031C (sic09/basic09.asm):02821 lbsr L135A 0FFC 17020F (sic09/basic09.asm):02822 lbsr L124D (sic09/basic09.asm):02823 * Debug mode command loop 0FFF 308DF760 (sic09/basic09.asm):02824 L104E leax >L07A4,pc Point to 'D:' 1003 318DF688 (sic09/basic09.asm):02825 leay >L06C1,pc Point to start of debug command table 1007 17F879 (sic09/basic09.asm):02826 lbsr L08D3 Go process debug mode command 100A 24F3 (sic09/basic09.asm):02827 bcc L104E Legit cmd executed, get next debug mode cmd 100C 9635 (sic09/basic09.asm):02828 lda - signal? 101A 26D6 (sic09/basic09.asm):02837 bne L1041 No, enter debug mode (sic09/basic09.asm):02838 * Debug 'Q' command (quite debug) 101C 8DF7 (sic09/basic09.asm):02839 L1068 bsr L0134 101E 8603 (sic09/basic09.asm):02840 lda #$03 Error path #3 we will check for 1020 91BE (sic09/basic09.asm):02841 L106D cmpa goes here (single step) 103E 5F (sic09/basic09.asm):02860 L108B clrb 103F 2002 (sic09/basic09.asm):02861 bra L1090 (sic09/basic09.asm):02862 1041 C601 (sic09/basic09.asm):02863 L108E ldb #1 Step rate of 1 1043 4F (sic09/basic09.asm):02864 L1090 clra 1044 DDB3 (sic09/basic09.asm):02865 L1091 std L02EB,pc Point to 'ERR' in basic09 commands 1135 1700F4 (sic09/basic09.asm):02982 lbsr L126B Print it out?? 1138 17FC2C (sic09/basic09.asm):02983 L1183 lbsr L0DBB 113B 170952 (sic09/basic09.asm):02984 lbsr L1AC6 113E 17010B (sic09/basic09.asm):02985 lbsr L128B 1141 8D4B (sic09/basic09.asm):02986 bsr L11D5 1143 0A83 (sic09/basic09.asm):02987 dec L0756,pc Point to 'PROCEDURE' 11CA 8D0F (sic09/basic09.asm):03058 L1211 bsr L1223 11CC 170149 (sic09/basic09.asm):03059 lbsr L135A 11CF AE23 (sic09/basic09.asm):03060 ldx 3,y 11D1 8D44 (sic09/basic09.asm):03061 bsr L1256 11D3 308C08 (sic09/basic09.asm):03062 leax L07A2,pc Point to 'ok' 1208 2016 (sic09/basic09.asm):03085 bra L125F (sic09/basic09.asm):03086 120A 43 (sic09/basic09.asm):03087 L1249 coma 120B 39 (sic09/basic09.asm):03088 rts (sic09/basic09.asm):03089 120C 8DCD (sic09/basic09.asm):03090 L124B bsr L1223 120E 308DF512 (sic09/basic09.asm):03091 L124D leax >L0756,pc Point to 'PROCEDURE' 1212 170103 (sic09/basic09.asm):03092 lbsr L135A 1215 9E2F (sic09/basic09.asm):03093 ldx 32k, restore regs & exit 1239 1F02 (sic09/basic09.asm):03114 tfr d,y Move size to proper reg for WritLn 123B 9E80 (sic09/basic09.asm):03115 ldx L03F5,pc Point to 3 byte packets for L0203,pc Point to 'GOSUB' 1388 2004 (sic09/basic09.asm):03306 bra L13CD (sic09/basic09.asm):03307 138A 308DEE3D (sic09/basic09.asm):03308 L13C9 leax >L01FD,pc Point to 'GOTO' 138E 8D86 (sic09/basic09.asm):03309 L13CD bsr L1358 1390 ECA1 (sic09/basic09.asm):03310 L13CF ldd ,y++ 1392 3420 (sic09/basic09.asm):03311 L13D1 pshs y 1394 109E44 (sic09/basic09.asm):03312 ldy L027E,pc Point to 'BASE' 13C5 17FF50 (sic09/basic09.asm):03339 lbsr L135A 13C8 A63F (sic09/basic09.asm):03340 lda -1,y 13CA 8BFB (sic09/basic09.asm):03341 adda #$FB 13CC 20E5 (sic09/basic09.asm):03342 bra L13F3 (sic09/basic09.asm):03343 13CE 308DEE06 (sic09/basic09.asm):03344 L140F leax >L020A,pc Point to 'RUN' 13D2 17FF43 (sic09/basic09.asm):03345 L1413 lbsr L135A 13D5 16FF70 (sic09/basic09.asm):03346 lbra L138A (sic09/basic09.asm):03347 13D8 308DED9E (sic09/basic09.asm):03348 L1419 leax >L01AC,pc Point to 'NEXT' 13DC 3121 (sic09/basic09.asm):03349 leay 1,y 13DE 8DF2 (sic09/basic09.asm):03350 bsr L1413 13E0 3126 (sic09/basic09.asm):03351 leay 6,y 13E2 39 (sic09/basic09.asm):03352 rts (sic09/basic09.asm):03353 13E3 308DEE9B (sic09/basic09.asm):03354 L1424 leax >L02B4,pc Point to 'THEN' 13E7 17FF2C (sic09/basic09.asm):03355 lbsr L1358 13EA A6A4 (sic09/basic09.asm):03356 lda ,y 13EC 813A (sic09/basic09.asm):03357 cmpa #$3A 13EE 2702 (sic09/basic09.asm):03358 beq L1433 13F0 0C74 (sic09/basic09.asm):03359 inc L0284,pc Point to 'REM' 13FE 17FF17 (sic09/basic09.asm):03368 L1440 lbsr L135A 1401 E6A0 (sic09/basic09.asm):03369 L1443 ldb ,y+ 1403 5A (sic09/basic09.asm):03370 L1445 decb 1404 27EC (sic09/basic09.asm):03371 beq L1433 1406 A6A0 (sic09/basic09.asm):03372 lda ,y+ 1408 8DA9 (sic09/basic09.asm):03373 bsr L13F3 140A 20F7 (sic09/basic09.asm):03374 bra L1445 (sic09/basic09.asm):03375 (sic09/basic09.asm):03376 * File opening mode table: 3 bytes per entry (sic09/basic09.asm):03377 * Byte 1 : Actual mode bit pattern (sic09/basic09.asm):03378 * Bytes 2&3: Offset (from itself) to keyword describing mode (sic09/basic09.asm):03379 * NOTE: keywords are high bit terminated 140C 03 (sic09/basic09.asm):03380 L144E fcb UPDAT. 140D EFA5 (sic09/basic09.asm):03381 L144F fdb L03E4-* Points to 'Update' string 140F 01 (sic09/basic09.asm):03382 L1451 fcb READ. 1410 EDFF (sic09/basic09.asm):03383 L1452 fdb L0241-* Points to 'Read' string 1412 02 (sic09/basic09.asm):03384 L1454 fcb WRITE. 1413 EE02 (sic09/basic09.asm):03385 L1455 fdb L0247-* Points to 'Write' string 1415 04 (sic09/basic09.asm):03386 L1457 fcb EXEC. 1416 EFA4 (sic09/basic09.asm):03387 L1458 fdb L03EC-* Points to 'Exec' string 1418 80 (sic09/basic09.asm):03388 L145A fcb DIR. 1419 EFA7 (sic09/basic09.asm):03389 L145B fdb L03F2-* Points to 'Dir' string 141B 00 (sic09/basic09.asm):03390 L145D fcb $00 End of table marker (sic09/basic09.asm):03391 141C A6A0 (sic09/basic09.asm):03392 L145E lda ,y+ Get requested file access mode 141E 3402 (sic09/basic09.asm):03393 pshs a Preserve on stack 1420 863A (sic09/basic09.asm):03394 lda #': Separator that starts modes 1422 8D8F (sic09/basic09.asm):03395 L1464 bsr L13F3 Parse for char? 1424 308CE3 (sic09/basic09.asm):03396 leax -? 156C 2603 (sic09/basic09.asm):03566 bne L15B3 No, skip ahead 156E 1703EE (sic09/basic09.asm):03567 lbsr L1993 Yes, ??? 1571 308DF1F0 (sic09/basic09.asm):03568 L15B3 leax >L07A6,pc Point to 'E:' 1575 318DF16D (sic09/basic09.asm):03569 leay >L0718,pc Point to EDIT mode command table 1579 17F307 (sic09/basic09.asm):03570 lbsr L08D3 Get next command from keyboard & execute it 157C 24EA (sic09/basic09.asm):03571 bcc L15AA Legit command done, get next one 157E 0D35 (sic09/basic09.asm):03572 tst 0, return with carry clear 1717 43 (sic09/basic09.asm):03786 L1759 coma Set carry & return 1718 39 (sic09/basic09.asm):03787 L175A rts (sic09/basic09.asm):03788 1719 9D2A (sic09/basic09.asm):03789 L013A jsr L1BD5,pc Point to some sort of table 1A87 E68B (sic09/basic09.asm):04215 ldb d,x Get entry 1A89 54 (sic09/basic09.asm):04216 lsrb Divide by 16 1A8A 54 (sic09/basic09.asm):04217 lsrb 1A8B 54 (sic09/basic09.asm):04218 lsrb 1A8C 54 (sic09/basic09.asm):04219 lsrb 1A8D 1700B2 (sic09/basic09.asm):04220 lbsr L1B75 1A90 109C60 (sic09/basic09.asm):04221 L1AC6 cmpy L1ACC,pc Point to vector offset table 1B46 E685 (sic09/basic09.asm):04339 ldb b,x Point to routine that is close 1B48 6E85 (sic09/basic09.asm):04340 jmp b,x Go do it (sic09/basic09.asm):04341 1B4A 3440 (sic09/basic09.asm):04342 L1B7D pshs u Preserve U 1B4C E6A0 (sic09/basic09.asm):04343 ldb ,y+ Get byte 1B4E E1C0 (sic09/basic09.asm):04344 L1B81 cmpb ,u+ If higher than byte in table, keep going 1B50 22FC (sic09/basic09.asm):04345 bhi L1B81 1B52 3540 (sic09/basic09.asm):04346 puls u Get U back 1B54 2708 (sic09/basic09.asm):04347 beq L1B91 If byte matches table entry, return 1B56 8DDD (sic09/basic09.asm):04348 bsr L1B68 If not, go somewhere else (sic09/basic09.asm):04349 1B58 109C60 (sic09/basic09.asm):04350 L1B8B cmpy $1E calls have there function byte after (sic09/basic09.asm):04425 * the JMP containing the offset to which of these entries to uses) 1C81 02DC (sic09/basic09.asm):04426 L1CB5 fdb L1F9E-L1CB5 $00 function 1C83 076C (sic09/basic09.asm):04427 fdb L2430-L1CB5 $02 function 1C85 0866 (sic09/basic09.asm):04428 fdb L252A-L1CB5 $04 function 1C87 0844 (sic09/basic09.asm):04429 fdb L2508-L1CB5 $06 function 1C89 07F9 (sic09/basic09.asm):04430 fdb L24BD-L1CB5 $08 function 1C8B 016A (sic09/basic09.asm):04431 fdb L1E29-L1CB5 $0A function (sic09/basic09.asm):04432 (sic09/basic09.asm):04433 * Data of some sort: Appears to be special symbols 1C8D 0021 (sic09/basic09.asm):04434 L1CD0 fdb 33 (# of entries-33) 1C8F 03 (sic09/basic09.asm):04435 fcb $03 (# bytes to skip to start of next?) (sic09/basic09.asm):04436 1C90 FA (sic09/basic09.asm):04437 L1CD3 fcb L2368-L239D 1C91 D90A (sic09/basic09.asm):04438 fcb $d9,$0a (token & type of operator???) 1C93 3CBE (sic09/basic09.asm):04439 fcs '<>' (sic09/basic09.asm):04440 1C95 FA (sic09/basic09.asm):04441 fcb L2368-L239D 1C96 D90A (sic09/basic09.asm):04442 fcb $d9,$0a 1C98 3EBC (sic09/basic09.asm):04443 fcs '><' (sic09/basic09.asm):04444 1C9A FA (sic09/basic09.asm):04445 fcb L2368-L239D 1C9B E40A (sic09/basic09.asm):04446 fcb $e4,$0a 1C9D 3CBD (sic09/basic09.asm):04447 fcs '<=' (sic09/basic09.asm):04448 1C9F FA (sic09/basic09.asm):04449 fcb L2368-L239D 1CA0 E40A (sic09/basic09.asm):04450 fcb $e4,$0a 1CA2 3DBC (sic09/basic09.asm):04451 fcs '=<' (sic09/basic09.asm):04452 1CA4 FA (sic09/basic09.asm):04453 fcb L2368-L239D 1CA5 E10A (sic09/basic09.asm):04454 fcb $e1,$0a 1CA7 3EBD (sic09/basic09.asm):04455 fcs '>=' (sic09/basic09.asm):04456 1CA9 FA (sic09/basic09.asm):04457 fcb L2368-L239D 1CAA E10A (sic09/basic09.asm):04458 fcb $e1,$0a 1CAC 3DBE (sic09/basic09.asm):04459 fcs '=>' (sic09/basic09.asm):04460 1CAE FA (sic09/basic09.asm):04461 fcb L2368-L239D 1CAF 5208 (sic09/basic09.asm):04462 fcb $52,$08 1CB1 3ABD (sic09/basic09.asm):04463 fcs ':=' (sic09/basic09.asm):04464 1CB3 FA (sic09/basic09.asm):04465 fcb L2368-L239D 1CB4 F105 (sic09/basic09.asm):04466 fcb $f1,$05 1CB6 2AAA (sic09/basic09.asm):04467 fcs '**' (sic09/basic09.asm):04468 1CB8 FA (sic09/basic09.asm):04469 fcb L2368-L239D 1CB9 3801 (sic09/basic09.asm):04470 fcb $38,$01 1CBB 28AA (sic09/basic09.asm):04471 fcs '(*' (sic09/basic09.asm):04472 1CBD FA (sic09/basic09.asm):04473 fcb L2368-L239D 1CBE 3E02 (sic09/basic09.asm):04474 fcb $3e,$02 1CC0 DC (sic09/basic09.asm):04475 fcs '\' (sic09/basic09.asm):04476 1CC1 FA (sic09/basic09.asm):04477 fcb L2368-L239D 1CC2 D30A (sic09/basic09.asm):04478 fcb $d3,$0a 1CC4 BE (sic09/basic09.asm):04479 fcs '>' (sic09/basic09.asm):04480 1CC5 FA (sic09/basic09.asm):04481 fcb L2368-L239D 1CC6 D60A (sic09/basic09.asm):04482 fcb $d6,$0a 1CC8 BC (sic09/basic09.asm):04483 fcs '<' (sic09/basic09.asm):04484 1CC9 FA (sic09/basic09.asm):04485 fcb L2368-L239D 1CCA DD09 (sic09/basic09.asm):04486 fcb $dd,$09 1CCC BD (sic09/basic09.asm):04487 fcs '=' (sic09/basic09.asm):04488 1CCD FA (sic09/basic09.asm):04489 fcb L2368-L239D 1CCE E705 (sic09/basic09.asm):04490 fcb $e7,$05 1CD0 AB (sic09/basic09.asm):04491 fcs '+' (sic09/basic09.asm):04492 1CD1 FA (sic09/basic09.asm):04493 fcb L2368-L239D 1CD2 EA05 (sic09/basic09.asm):04494 fcb $ea,$05 1CD4 AD (sic09/basic09.asm):04495 fcs '-' (sic09/basic09.asm):04496 1CD5 FA (sic09/basic09.asm):04497 fcb L2368-L239D 1CD6 EC05 (sic09/basic09.asm):04498 fcb $ec,$05 1CD8 AA (sic09/basic09.asm):04499 fcs '*' (sic09/basic09.asm):04500 1CD9 FA (sic09/basic09.asm):04501 fcb L2368-L239D 1CDA EE05 (sic09/basic09.asm):04502 fcb $ee,$05 1CDC AF (sic09/basic09.asm):04503 fcs '/' (sic09/basic09.asm):04504 1CDD FA (sic09/basic09.asm):04505 fcb L2368-L239D 1CDE F005 (sic09/basic09.asm):04506 fcb $f0,$05 1CE0 DE (sic09/basic09.asm):04507 fcs '^' (sic09/basic09.asm):04508 1CE1 FA (sic09/basic09.asm):04509 fcb L2368-L239D 1CE2 4C0C (sic09/basic09.asm):04510 fcb $4c,$0c 1CE4 BA (sic09/basic09.asm):04511 fcs ':' (sic09/basic09.asm):04512 1CE5 FA (sic09/basic09.asm):04513 fcb L2368-L239D 1CE6 4F0C (sic09/basic09.asm):04514 fcb $4f,$0c 1CE8 DB (sic09/basic09.asm):04515 fcs '[' (sic09/basic09.asm):04516 1CE9 FA (sic09/basic09.asm):04517 fcb L2368-L239D 1CEA 500C (sic09/basic09.asm):04518 fcb $50,$0c 1CEC DD (sic09/basic09.asm):04519 fcs ']' (sic09/basic09.asm):04520 1CED FA (sic09/basic09.asm):04521 fcb L2368-L239D 1CEE 510C (sic09/basic09.asm):04522 fcb $51,$0c 1CF0 BB (sic09/basic09.asm):04523 fcs ';' (sic09/basic09.asm):04524 1CF1 FA (sic09/basic09.asm):04525 fcb L2368-L239D 1CF2 540B (sic09/basic09.asm):04526 fcb $54,$0b 1CF4 A3 (sic09/basic09.asm):04527 fcs '#' (sic09/basic09.asm):04528 1CF5 FA (sic09/basic09.asm):04529 fcb L2368-L239D 1CF6 2601 (sic09/basic09.asm):04530 fcb $26,$01 1CF8 BF (sic09/basic09.asm):04531 fcs '?' (sic09/basic09.asm):04532 1CF9 FA (sic09/basic09.asm):04533 fcb L2368-L239D 1CFA 3701 (sic09/basic09.asm):04534 fcb $37,$01 1CFC A1 (sic09/basic09.asm):04535 fcs '!' (sic09/basic09.asm):04536 1CFD A4 (sic09/basic09.asm):04537 fcb L233E-L239D Recurse to the search routine again (eat LF) 1CFE 000C (sic09/basic09.asm):04538 fcb $00,$0c 1D00 8A (sic09/basic09.asm):04539 fcb $80+C$LF Line feed (sic09/basic09.asm):04540 1D01 FA (sic09/basic09.asm):04541 fcb L2368-L239D 1D02 4B0C (sic09/basic09.asm):04542 fcb $4b,$0c 1D04 AC (sic09/basic09.asm):04543 fcs ',' (sic09/basic09.asm):04544 1D05 FA (sic09/basic09.asm):04545 fcb L2368-L239D 1D06 4D0C (sic09/basic09.asm):04546 fcb $4d,$0c 1D08 A8 (sic09/basic09.asm):04547 fcs '(' (sic09/basic09.asm):04548 1D09 FA (sic09/basic09.asm):04549 fcb L2368-L239D 1D0A 4E0C (sic09/basic09.asm):04550 fcb $4e,$0c 1D0C A9 (sic09/basic09.asm):04551 fcs ')' (sic09/basic09.asm):04552 1D0D CE (sic09/basic09.asm):04553 fcb L2371-L239D 1D0E 890C (sic09/basic09.asm):04554 fcb $89,$0c 1D10 AE (sic09/basic09.asm):04555 fcs '.' (sic09/basic09.asm):04556 1D11 23 (sic09/basic09.asm):04557 fcb L23BE-L239D 1D12 9006 (sic09/basic09.asm):04558 fcb $90,$06 1D14 A2 (sic09/basic09.asm):04559 fcs '"' (sic09/basic09.asm):04560 1D15 00 (sic09/basic09.asm):04561 fcb L239D-L239D 1D16 9106 (sic09/basic09.asm):04562 fcb $91,$06 1D18 A4 (sic09/basic09.asm):04563 fcs '$' (sic09/basic09.asm):04564 1D19 FA (sic09/basic09.asm):04565 fcb L2368-L239D 1D1A 3F02 (sic09/basic09.asm):04566 fcb $3f,$02 1D1C 8D (sic09/basic09.asm):04567 fcb $80+C$CR Carriage return (sic09/basic09.asm):04568 (sic09/basic09.asm):04569 * Jump table for type 1 commands (see L0140) (sic09/basic09.asm):04570 * Command Token 1D1D 03BA (sic09/basic09.asm):04571 L1D60 fdb L211B-L1D60 ??? 0 Illegal statement construction error 1D1F 0126 (sic09/basic09.asm):04572 fdb L1E82-L1D60 PARAM 1 1D21 0116 (sic09/basic09.asm):04573 fdb L1E72-L1D60 TYPE 2 1D23 0126 (sic09/basic09.asm):04574 fdb L1E82-L1D60 DIM 3 1D25 0175 (sic09/basic09.asm):04575 fdb L1ED3-L1D60 DATA 4 1D27 02CA (sic09/basic09.asm):04576 fdb L2029-L1D60 STOP 5 1D29 03AC (sic09/basic09.asm):04577 fdb L210B-L1D60 BYE 6 1D2B 03AC (sic09/basic09.asm):04578 fdb L210B-L1D60 TRON 7 1D2D 03AC (sic09/basic09.asm):04579 fdb L210B-L1D60 TROFF 8 1D2F 02CA (sic09/basic09.asm):04580 fdb L2029-L1D60 PAUSE 9 1D31 03AC (sic09/basic09.asm):04581 fdb L210B-L1D60 DEG A 1D33 03AC (sic09/basic09.asm):04582 fdb L210B-L1D60 RAD B 1D35 03AC (sic09/basic09.asm):04583 fdb L210B-L1D60 RETURN C 1D37 03C2 (sic09/basic09.asm):04584 fdb L2123-L1D60 LET D 1D39 03BA (sic09/basic09.asm):04585 fdb L211B-L1D60 ??? E Illegal Statement Construction err 1D3B 0183 (sic09/basic09.asm):04586 fdb L1EE1-L1D60 POKE F 1D3D 018C (sic09/basic09.asm):04587 fdb L1EEA-L1D60 IF 10 1D3F 01A1 (sic09/basic09.asm):04588 fdb L1EFF-L1D60 ELSE 11 1D41 03AC (sic09/basic09.asm):04589 fdb L210B-L1D60 ENDIF 12 1D43 01A5 (sic09/basic09.asm):04590 fdb L1F03-L1D60 FOR 13 1D45 01C6 (sic09/basic09.asm):04591 fdb L1F24-L1D60 NEXT 14 1D47 01D0 (sic09/basic09.asm):04592 fdb L1F2E-L1D60 WHILE 15 1D49 01DF (sic09/basic09.asm):04593 fdb L1F3D-L1D60 ENDWHILE 16 1D4B 03AC (sic09/basic09.asm):04594 fdb L210B-L1D60 REPEAT 17 1D4D 01DB (sic09/basic09.asm):04595 fdb L1F39-L1D60 UNTIL 18 1D4F 03AC (sic09/basic09.asm):04596 fdb L210B-L1D60 LOOP 19 1D51 01DF (sic09/basic09.asm):04597 fdb L1F3D-L1D60 ENDLOOP 1A 1D53 01E3 (sic09/basic09.asm):04598 fdb L1F41-L1D60 EXITIF 1B 1D55 01DF (sic09/basic09.asm):04599 fdb L1F3D-L1D60 ENDEXIT 1C 1D57 01EE (sic09/basic09.asm):04600 fdb L1F4C-L1D60 ON 1D 1D59 03DB (sic09/basic09.asm):04601 fdb L213C-L1D60 ERROR 1E 1D5B 0229 (sic09/basic09.asm):04602 fdb L1F87-L1D60 GOTO 1F 1D5D 03BA (sic09/basic09.asm):04603 fdb L211B-L1D60 ??? 20 Illegal Statement Construction err 1D5F 0229 (sic09/basic09.asm):04604 fdb L1F87-L1D60 GOSUB 21 1D61 03BA (sic09/basic09.asm):04605 fdb L211B-L1D60 ??? 22 Illegal Statement Construction err 1D63 0256 (sic09/basic09.asm):04606 fdb L1FB4-L1D60 RUN 23 1D65 03DB (sic09/basic09.asm):04607 fdb L213C-L1D60 KILL 24 1D67 0297 (sic09/basic09.asm):04608 fdb L1FF6-L1D60 INPUT 25 1D69 02CA (sic09/basic09.asm):04609 fdb L2029-L1D60 PRINT 26 (Also '?') 1D6B 03DB (sic09/basic09.asm):04610 fdb L213C-L1D60 CHD 27 1D6D 03DB (sic09/basic09.asm):04611 fdb L213C-L1D60 CHX 28 1D6F 0334 (sic09/basic09.asm):04612 fdb L2093-L1D60 CREATE 29 1D71 0334 (sic09/basic09.asm):04613 fdb L2093-L1D60 OPEN 2A 1D73 0324 (sic09/basic09.asm):04614 fdb L2083-L1D60 SEEK 2B 1D75 02FB (sic09/basic09.asm):04615 fdb L205A-L1D60 READ 2C 1D77 0308 (sic09/basic09.asm):04616 fdb L2067-L1D60 WRITE 2D 1D79 0312 (sic09/basic09.asm):04617 fdb L2071-L1D60 GET 2E 1D7B 0312 (sic09/basic09.asm):04618 fdb L2071-L1D60 PUT 2F 1D7D 0373 (sic09/basic09.asm):04619 fdb L20D2-L1D60 CLOSE 30 1D7F 037D (sic09/basic09.asm):04620 fdb L20DC-L1D60 RESTORE 31 1D81 03DB (sic09/basic09.asm):04621 fdb L213C-L1D60 DELETE 32 1D83 03DB (sic09/basic09.asm):04622 fdb L213C-L1D60 CHAIN 33 1D85 03DB (sic09/basic09.asm):04623 fdb L213C-L1D60 SHELL 34 1D87 0381 (sic09/basic09.asm):04624 fdb L20E0-L1D60 BASE 35 1D89 0381 (sic09/basic09.asm):04625 fdb L20E0-L1D60 ??? 36 1D8B 0399 (sic09/basic09.asm):04626 fdb L20F8-L1D60 REM 37 (Also '!') 1D8D 0399 (sic09/basic09.asm):04627 fdb L20F8-L1D60 (* 38 1D8F 02CA (sic09/basic09.asm):04628 fdb L2029-L1D60 END 39 (sic09/basic09.asm):04629 1D91 960B (sic09/basic09.asm):04630 L1DD4 lda L1D60,pc Point to Basic09 COMMANDS vector table 1E1F EC8B (sic09/basic09.asm):04707 ldd d,x Get offset 1E21 6E8B (sic09/basic09.asm):04708 jmp d,x Execute command's routine (sic09/basic09.asm):04709 1E23 8102 (sic09/basic09.asm):04710 L1E62 cmpa #$02 Command type 2? 1E25 102602B9 (sic09/basic09.asm):04711 lbne L2126 No, go process functions, etc. (sic09/basic09.asm):04712 * Command type 2 goes here 1E29 3410 (sic09/basic09.asm):04713 L1E68 pshs x 1E2B 9EAB (sic09/basic09.asm):04714 ldx 2 go here 20E2 8DEF (sic09/basic09.asm):05072 L2126 bsr L2115 20E4 0CBC (sic09/basic09.asm):05073 inc L1CD0+3,pc No, point to Operator's table 2317 8680 (sic09/basic09.asm):05377 lda #$80 Get high bit mask to check for end of entry 2319 1701CB (sic09/basic09.asm):05378 lbsr L252A Go find entry 231C 27D9 (sic09/basic09.asm):05379 beq L233A None, exit with Unrecognized symbol error 231E E684 (sic09/basic09.asm):05380 ldb ,x Get offset 2320 338C34 (sic09/basic09.asm):05381 leau L2581,pc Point to table 2644 E6A0 (sic09/basic09.asm):05800 ldb ,y+ Get byte 2646 2A05 (sic09/basic09.asm):05801 bpl L269F If high bit off, go get offset from table 2648 CC03D5 (sic09/basic09.asm):05802 ldd #L2952-L2581 Otherwise force to use L2952 offset 264B 200A (sic09/basic09.asm):05803 bra L26A9 Skip ahead (sic09/basic09.asm):05804 264D 58 (sic09/basic09.asm):05805 L269F lslb Multiply by 2 264E 4F (sic09/basic09.asm):05806 clra 16 bit offset required 264F EC8B (sic09/basic09.asm):05807 ldd d,x Get offset 2651 108303D5 (sic09/basic09.asm):05808 cmpd #L2952-L2581 Is it the special case one? 2655 2516 (sic09/basic09.asm):05809 blo L26BF If it or any lower offset, go execute it 2657 0DC7 (sic09/basic09.asm):05810 L26A9 tst 9 up to A-F for Hex 26C8 A780 (sic09/basic09.asm):05874 L2715 sta ,x+ Save Hex ASCII version & return 26CA 39 (sic09/basic09.asm):05875 rts (sic09/basic09.asm):05876 26CB E6A4 (sic09/basic09.asm):05877 L2718 ldb ,y Get char(?) 26CD 8D05 (sic09/basic09.asm):05878 bsr L2721 Check if it is $3E or $3F > or ? 26CF 2602 (sic09/basic09.asm):05879 bne L2720 Neither, return 26D1 3121 (sic09/basic09.asm):05880 L271E leay 1,y Yes, bump Y up & return 26D3 39 (sic09/basic09.asm):05881 L2720 rts (sic09/basic09.asm):05882 26D4 C13F (sic09/basic09.asm):05883 L2721 cmpb #$3F 26D6 2702 (sic09/basic09.asm):05884 beq L2727 26D8 C13E (sic09/basic09.asm):05885 cmpb #$3E 26DA 39 (sic09/basic09.asm):05886 L2727 rts (sic09/basic09.asm):05887 26DB 170810 (sic09/basic09.asm):05888 L2728 lbsr L2F43 26DE D6CF (sic09/basic09.asm):05889 ldb L307E,pc Point to 5 single bytes table 2A94 E686 (sic09/basic09.asm):06389 ldb a,x Get value 2A96 4F (sic09/basic09.asm):06390 clra D=value 2A97 D3C1 (sic09/basic09.asm):06391 addd =$96 goes here 2CDD C1F2 (sic09/basic09.asm):06696 L2D2C cmpb #$F2 If >=$F2, skip ahead 2CDF 1024F999 (sic09/basic09.asm):06697 lbhs L308D 2CE3 C096 (sic09/basic09.asm):06698 subb #$96 Drop B to $00 - $5B 2CE5 308DF8C6 (sic09/basic09.asm):06699 leax >L2601,pc Point to data table 2CE9 3A (sic09/basic09.asm):06700 abx Point to entry we want 2CEA E684 (sic09/basic09.asm):06701 ldb ,x Get it 2CEC 1027F98C (sic09/basic09.asm):06702 lbeq L308D If nothing, skip ahead 2CF0 C41F (sic09/basic09.asm):06703 andb #$1F 2CF2 2706 (sic09/basic09.asm):06704 beq L2D4A 2CF4 338C5B (sic09/basic09.asm):06705 leau 1 3389 EC84 (sic09/basic09.asm):07648 L341E ldd ,x Y=ptr to current FOR/NEXT INTEGER value 338B 31CB (sic09/basic09.asm):07649 leay d,u 338D EC04 (sic09/basic09.asm):07650 ldd 4,x Get STEP value 338F ECCB (sic09/basic09.asm):07651 ldd d,u Get current FOR/NEXT counter (sic09/basic09.asm):07652 ifne H6309 (sic09/basic09.asm):07653 tfr a,e Preserve Hi byte (for sign) (sic09/basic09.asm):07654 else 3391 3402 (sic09/basic09.asm):07655 pshs a (sic09/basic09.asm):07656 endc 3393 E3A4 (sic09/basic09.asm):07657 addd ,y Add increment value 3395 EDA4 (sic09/basic09.asm):07658 std ,y Save new current value (sic09/basic09.asm):07659 ifne H6309 (sic09/basic09.asm):07660 tste Was STEP negative value? (sic09/basic09.asm):07661 else 3397 6DE0 (sic09/basic09.asm):07662 tst ,s+ (sic09/basic09.asm):07663 endc 3399 2AE0 (sic09/basic09.asm):07664 bpl L3410 No, go use normal compare routine 339B EC02 (sic09/basic09.asm):07665 L3430 ldd 2,x Get offset to TO value 339D 3006 (sic09/basic09.asm):07666 leax 6,x Eat temp var 339F ECCB (sic09/basic09.asm):07667 ldd d,u Get TO value 33A1 10A3A4 (sic09/basic09.asm):07668 cmpd ,y Hit TO value yet? 33A4 2F9A (sic09/basic09.asm):07669 ble L33CC Yes, do X=[,x]+[u005E] & return 33A6 3003 (sic09/basic09.asm):07670 leax 3,x Eat 3 bytes from X & return 33A8 39 (sic09/basic09.asm):07671 rts (sic09/basic09.asm):07672 33A9 109E46 (sic09/basic09.asm):07673 L343E ldy 1 33C7 08 (sic09/basic09.asm):07695 fcb L345A-L33DF Real STEP 1 33C8 51 (sic09/basic09.asm):07696 fcb L34A5-L33DF Real STEP <>1 (sic09/basic09.asm):07697 (sic09/basic09.asm):07698 * Jump table for FOR (relative to L34E5) (change to 8 bit if possible) 33C9 (sic09/basic09.asm):07699 L34E5 equ * 33C9 95 (sic09/basic09.asm):07700 fcb L33F3-L34E5 $ff0e INT step 1 33CA 9B (sic09/basic09.asm):07701 fcb L33F9-L34E5 $ff14 INT step <>1 33CB E0 (sic09/basic09.asm):07702 fcb L343E-L34E5 $ff59 REAL step 1 33CC E8 (sic09/basic09.asm):07703 fcb L3446-L34E5 $ff61 REAL step <>1 (sic09/basic09.asm):07704 (sic09/basic09.asm):07705 * REAL NEXT STEP 1 33CD 109E46 (sic09/basic09.asm):07706 L345A ldy L34E5,pc Point to table 346D 16FEE6 (sic09/basic09.asm):07804 lbra L33EA (sic09/basic09.asm):07805 3470 EC81 (sic09/basic09.asm):07806 L3508 ldd ,x++ 3472 D331 (sic09/basic09.asm):07807 addd L32CB,pc Point to 'STOP encountered' 354C 17016D (sic09/basic09.asm):07936 lbsr L375F 354F 16E886 (sic09/basic09.asm):07937 lbra L1CC7 (sic09/basic09.asm):07938 3552 170261 (sic09/basic09.asm):07939 L35F3 lbsr L3856 3555 9D1B (sic09/basic09.asm):07940 L3233 jsr L3B5B,pc Point to 4 entry, 1 byte table 389B E686 (sic09/basic09.asm):08392 ldb a,x 389D 4F (sic09/basic09.asm):08393 clra 389E 1F02 (sic09/basic09.asm):08394 tfr d,y Y=table entry 38A0 2002 (sic09/basic09.asm):08395 bra L3945 (sic09/basic09.asm):08396 38A2 3520 (sic09/basic09.asm):08397 L3943 puls y 38A4 3510 (sic09/basic09.asm):08398 L3945 puls x 38A6 967F (sic09/basic09.asm):08399 lda L32DD,pc Point to routine 3A7B AD8B (sic09/basic09.asm):08683 jsr d,x Call ML subroutine module 3A7D DE31 (sic09/basic09.asm):08684 ldu L323F,pc Point to huge jump table 3B6E 9F0E (sic09/basic09.asm):08818 stx : Integer/Byte relational 3BBC 0790 (sic09/basic09.asm):08863 fdb L4443-L3CB5 > : Real relational 3BBE 071F (sic09/basic09.asm):08864 fdb L43D1-L3CB5 > : String relational 3BC0 0725 (sic09/basic09.asm):08865 fdb L43D7-L3CB5 < : Integer/Byte relational 3BC2 0772 (sic09/basic09.asm):08866 fdb L4425-L3CB5 < : Real relational 3BC4 0701 (sic09/basic09.asm):08867 fdb L43B3-L3CB5 < : String relational 3BC6 0735 (sic09/basic09.asm):08868 fdb L43E7-L3CB5 <> or >< : Integer/Byte relational 3BC8 077E (sic09/basic09.asm):08869 fdb L4431-L3CB5 <> or >< : Real relational 3BCA 0713 (sic09/basic09.asm):08870 fdb L43C5-L3CB5 <> or >< : String relational 3BCC 076A (sic09/basic09.asm):08871 fdb L441D-L3CB5 <> or >< : Boolean relational 3BCE 073D (sic09/basic09.asm):08872 fdb L43EF-L3CB5 = : Integer/Byte relational 3BD0 0784 (sic09/basic09.asm):08873 fdb L4437-L3CB5 = : Real relational 3BD2 070D (sic09/basic09.asm):08874 fdb L43BF-L3CB5 = : String relational 3BD4 0762 (sic09/basic09.asm):08875 fdb L4415-L3CB5 = : Boolean relational 3BD6 0745 (sic09/basic09.asm):08876 fdb L43F7-L3CB5 >= or => : Integer/Byte relational 3BD8 078A (sic09/basic09.asm):08877 fdb L443D-L3CB5 >= or => : Real relational 3BDA 0719 (sic09/basic09.asm):08878 fdb L43CB-L3CB5 >= or => : String Relational 3BDC 072D (sic09/basic09.asm):08879 fdb L43DF-L3CB5 <= or =< : Integer/Byte relational 3BDE 0778 (sic09/basic09.asm):08880 fdb L442B-L3CB5 <= or =< : Real relational 3BE0 0707 (sic09/basic09.asm):08881 fdb L43B9-L3CB5 <= or =< : String Relational 3BE2 01FA (sic09/basic09.asm):08882 fdb L3EAF-L3CB5 Integer - Add 3BE4 0303 (sic09/basic09.asm):08883 fdb L3FB1-L3CB5 Real - Add 3BE6 0832 (sic09/basic09.asm):08884 fdb L44E5-L3CB5 String add 3BE8 0203 (sic09/basic09.asm):08885 fdb L3EB8-L3CB5 Integer - Subtract 3BEA 02FD (sic09/basic09.asm):08886 fdb L3FAB-L3CB5 Real - Subtract 3BEC 020C (sic09/basic09.asm):08887 fdb L3EC1-L3CB5 Integer - Multiply 3BEE 041A (sic09/basic09.asm):08888 fdb L40CC-L3CB5 Real Multiply 3BF0 026E (sic09/basic09.asm):08889 fdb L3F1C-L3CB5 Integer - Divide 3BF2 057A (sic09/basic09.asm):08890 fdb L422D-L3CB5 Real Divide 3BF4 0684 (sic09/basic09.asm):08891 fdb L4336-L3CB5 Real Exponent\ Probably for both ^ & ** 3BF6 0684 (sic09/basic09.asm):08892 fdb L4336-L3CB5 Real Exponent/ Hard coding for 0^x & x^1 3BF8 00B7 (sic09/basic09.asm):08893 fdb L3D6C-L3CB5 DIM 3BFA 00B7 (sic09/basic09.asm):08894 fdb L3D6C-L3CB5 DIM 3BFC 00B7 (sic09/basic09.asm):08895 fdb L3D6C-L3CB5 DIM 3BFE 00B7 (sic09/basic09.asm):08896 fdb L3D6C-L3CB5 DIM 3C00 00BD (sic09/basic09.asm):08897 fdb L3D72-L3CB5 PARAM 3C02 00BD (sic09/basic09.asm):08898 fdb L3D72-L3CB5 PARAM 3C04 00BD (sic09/basic09.asm):08899 fdb L3D72-L3CB5 PARAM 3C06 00BD (sic09/basic09.asm):08900 fdb L3D72-L3CB5 PARAM 3C08 0000 (sic09/basic09.asm):08901 fdb $0000 Unused function entries (maybe use for LONGINT?) 3C0A 0000 (sic09/basic09.asm):08902 fdb $0000 3C0C 0000 (sic09/basic09.asm):08903 fdb $0000 3C0E 0000 (sic09/basic09.asm):08904 fdb $0000 3C10 0000 (sic09/basic09.asm):08905 fdb $0000 3C12 0000 (sic09/basic09.asm):08906 fdb $0000 (sic09/basic09.asm):08907 (sic09/basic09.asm):08908 * Jump table (base is L3CB5) 3C14 01CC (sic09/basic09.asm):08909 L3CB5 fdb L3E81-L3CB5 Copy BYTE var to temp pool 3C16 01E2 (sic09/basic09.asm):08910 fdb L3E97-L3CB5 Copy INTEGER var to temp pool 3C18 02DF (sic09/basic09.asm):08911 fdb L3F8D-L3CB5 Copy REAL var to temp pool 3C1A 06BC (sic09/basic09.asm):08912 fdb L436E-L3CB5 Copy BOOLEAN var to temp pool 3C1C 0814 (sic09/basic09.asm):08913 fdb L44C7-L3CB5 Copy STRING var to temp pool (max 256 chars) 3C1E 00A4 (sic09/basic09.asm):08914 fdb L3D59-L3CB5 Copy DIM array 3C20 00A4 (sic09/basic09.asm):08915 fdb L3D59-L3CB5 Copy DIM array 3C22 00A4 (sic09/basic09.asm):08916 fdb L3D59-L3CB5 Copy DIM array 3C24 00A4 (sic09/basic09.asm):08917 fdb L3D59-L3CB5 Copy DIM array 3C26 00B3 (sic09/basic09.asm):08918 fdb L3D68-L3CB5 Copy PARAM array 3C28 00B3 (sic09/basic09.asm):08919 fdb L3D68-L3CB5 Copy PARAM array 3C2A 00B3 (sic09/basic09.asm):08920 fdb L3D68-L3CB5 Copy PARAM array 3C2C 00B3 (sic09/basic09.asm):08921 fdb L3D68-L3CB5 Copy PARAM array 3C2E 01C8 (sic09/basic09.asm):08922 fdb L3E7D-L3CB5 Copy BYTE constant to temp pool - CHECK IF USED 3C30 01DE (sic09/basic09.asm):08923 fdb L3E93-L3CB5 Copy INTEGER constant to temp pool 3C32 02CE (sic09/basic09.asm):08924 fdb L3F7C-L3CB5 Copy REAL constant to temp pool 3C34 07E4 (sic09/basic09.asm):08925 fdb L4497-L3CB5 Copy STRING constant to temp pool 3C36 01DE (sic09/basic09.asm):08926 fdb L3E93-L3CB5 Copy INTEGER constant to temp pool 3C38 0A84 (sic09/basic09.asm):08927 fdb L473F-L3CB5 ADDR 3C3A 0A84 (sic09/basic09.asm):08928 fdb L473F-L3CB5 ADDR 3C3C 0A96 (sic09/basic09.asm):08929 fdb L4751-L3CB5 SIZE 3C3E 0A96 (sic09/basic09.asm):08930 fdb L4751-L3CB5 SIZE 3C40 093E (sic09/basic09.asm):08931 fdb L45F1-L3CB5 POS 3C42 0930 (sic09/basic09.asm):08932 fdb L45E3-L3CB5 ERR 3C44 0248 (sic09/basic09.asm):08933 fdb L46A2-L3CB5 MOD for Integer #'s 3C46 09EF (sic09/basic09.asm):08934 fdb L46AA-L3CB5 MOD for Real #'s 3C48 1119 (sic09/basic09.asm):08935 fdb L4DDA-L3CB5 RND 3C4A 0E45 (sic09/basic09.asm):08936 fdb L4B03-L3CB5 PI 3C4C 12B6 (sic09/basic09.asm):08937 fdb L4F77-L3CB5 SUBSTR 3C4E 0922 (sic09/basic09.asm):08938 fdb L45D5-L3CB5 SGN for Integer 3C50 0914 (sic09/basic09.asm):08939 fdb L45C7-L3CB5 SGN for Real 3C52 0DC4 (sic09/basic09.asm):08940 fdb L4A82-L3CB5 Transcendental ??? 3C54 0DF1 (sic09/basic09.asm):08941 fdb L4AAF-L3CB5 Transcendental ??? 3C56 0DFF (sic09/basic09.asm):08942 fdb L4ABD-L3CB5 Transcendental ??? 3C58 0C69 (sic09/basic09.asm):08943 fdb L4927-L3CB5 Transcendental ??? 3C5A 0CAA (sic09/basic09.asm):08944 fdb L4968-L3CB5 Transcendental ??? 3C5C 0D45 (sic09/basic09.asm):08945 fdb L4A03-L3CB5 Transcendental ??? 3C5E 0BA6 (sic09/basic09.asm):08946 fdb L4864-L3CB5 EXP 3C60 0902 (sic09/basic09.asm):08947 fdb L45B5-L3CB5 ABS for Integer #'s 3C62 08FB (sic09/basic09.asm):08948 fdb L45AE-L3CB5 ABS for Real #'s 3C64 0AEE (sic09/basic09.asm):08949 fdb L47AB-L3CB5 LOG 3C66 0AE3 (sic09/basic09.asm):08950 fdb L479F-L3CB5 LOG10 3C68 0942 (sic09/basic09.asm):08951 fdb L45F5-L3CB5 SQR \ Square root 3C6A 0942 (sic09/basic09.asm):08952 fdb L45F5-L3CB5 SQRT/ 3C6C 0850 (sic09/basic09.asm):08953 fdb L4503-L3CB5 FLOAT 3C6E 0A0B (sic09/basic09.asm):08954 fdb L46C6-L3CB5 INT (of real #) 3C70 093D (sic09/basic09.asm):08955 fdb L45F0-L3CB5 ??? RTS 3C72 0888 (sic09/basic09.asm):08956 fdb L453B-L3CB5 FIX 3C74 0850 (sic09/basic09.asm):08957 fdb L4503-L3CB5 FLOAT 3C76 093D (sic09/basic09.asm):08958 fdb L45F0-L3CB5 ??? RTS 3C78 0A4A (sic09/basic09.asm):08959 fdb L4705-L3CB5 SQuare of integer 3C7A 0A53 (sic09/basic09.asm):08960 fdb L470E-L3CB5 SQuare of real 3C7C 090D (sic09/basic09.asm):08961 fdb L45C0-L3CB5 PEEK 3C7E 0ABE (sic09/basic09.asm):08962 fdb L477A-L3CB5 LNOT of Integer 3C80 0A64 (sic09/basic09.asm):08963 fdb L471F-L3CB5 VAL 3C82 11EA (sic09/basic09.asm):08964 fdb L4EAB-L3CB5 LEN 3C84 11FC (sic09/basic09.asm):08965 fdb L4EBD-L3CB5 ASC 3C86 0AC3 (sic09/basic09.asm):08966 fdb L477F-L3CB5 LAND of Integer 3C88 0AD3 (sic09/basic09.asm):08967 fdb L478F-L3CB5 LOR of Integer 3C8A 0ACB (sic09/basic09.asm):08968 fdb L4787-L3CB5 LXOR of Integer 3C8C 0AAD (sic09/basic09.asm):08969 fdb L4769-L3CB5 Force Boolean to TRUE 3C8E 0AB2 (sic09/basic09.asm):08970 fdb L476E-L3CB5 Force Boolean to FALSE 3C90 1384 (sic09/basic09.asm):08971 fdb L5035-L3CB5 EOF 3C92 129E (sic09/basic09.asm):08972 fdb L4F5F-L3CB5 TRIM$ (sic09/basic09.asm):08973 (sic09/basic09.asm):08974 * Jump table, base is L3D35 3C94 0152 (sic09/basic09.asm):08975 L3D35 fdb L3E87-L3D35 Convert Byte to Int (into temp var) 3C96 0168 (sic09/basic09.asm):08976 fdb L3E9D-L3D35 Copy Int var into temp var 3C98 0265 (sic09/basic09.asm):08977 fdb L3F93-L3D35 Copy Real var into temp var 3C9A 0642 (sic09/basic09.asm):08978 fdb L4374-L3D35 ??? Copy Boolean into temp var 3C9C 07A4 (sic09/basic09.asm):08979 fdb L44D7-L3D35 ??? Copy string to expression stack 3C9E 07C3 (sic09/basic09.asm):08980 fdb L44F6-L3D35 ??? Copy D&U regs into temp var type 5 (sic09/basic09.asm):08981 3CA0 109E46 (sic09/basic09.asm):08982 L3D41 ldy 0, go do divide (sic09/basic09.asm):09276 ldb #$2D =0, Divide by 0 error (sic09/basic09.asm):09277 jsr 0, skip ahead 3E98 C62D (sic09/basic09.asm):09348 ldb #$2D =0, Divide by 0 error 3E9A 9D24 (sic09/basic09.asm):09349 jsr 256? 3EA7 2608 (sic09/basic09.asm):09363 bne L3F4B Yes, skip ahead 3EA9 1E89 (sic09/basic09.asm):09364 exg a,b Swap LSB/MSB of dividend 3EAB ED27 (sic09/basic09.asm):09365 std 7,y Save it 3EAD C608 (sic09/basic09.asm):09366 ldb #8 # of powers of 2 shifts for 8 bit dividend 3EAF 2002 (sic09/basic09.asm):09367 bra L3F4D (sic09/basic09.asm):09368 3EB1 C610 (sic09/basic09.asm):09369 L3F4B ldb #16 # of powers of 2 shifts for 16 bit dividend 3EB3 E723 (sic09/basic09.asm):09370 L3F4D stb 3,y Save # shifts required 3EB5 4F (sic09/basic09.asm):09371 clra 3EB6 5F (sic09/basic09.asm):09372 clrb (sic09/basic09.asm):09373 * Main powers of 2 subtract loop for divide 3EB7 6828 (sic09/basic09.asm):09374 L3F51 lsl 8,y Multiply dividend by 2 3EB9 6927 (sic09/basic09.asm):09375 rol 7,y 3EBB 59 (sic09/basic09.asm):09376 rolb Rotate into D 3EBC 49 (sic09/basic09.asm):09377 rola 3EBD A321 (sic09/basic09.asm):09378 subd 1,y Subtract that power of 2 from divisor 3EBF 2B04 (sic09/basic09.asm):09379 bmi L3F5F If wraps, add it back in 3EC1 6C28 (sic09/basic09.asm):09380 inc 8,y 3EC3 2002 (sic09/basic09.asm):09381 bra L3F61 (sic09/basic09.asm):09382 3EC5 E321 (sic09/basic09.asm):09383 L3F5F addd 1,y 3EC7 6A23 (sic09/basic09.asm):09384 L3F61 dec 3,y Dec # shift/subtracts left to do 3EC9 26EC (sic09/basic09.asm):09385 bne L3F51 Still more, continue 3ECB ED29 (sic09/basic09.asm):09386 L3F65 std 9,y Save remainder 3ECD 6DA4 (sic09/basic09.asm):09387 tst ,y Positive result? 3ECF 2A0E (sic09/basic09.asm):09388 bpl L3F79 Yes, eat temp var & return 3ED1 40 (sic09/basic09.asm):09389 nega NEGD 3ED2 50 (sic09/basic09.asm):09390 negb 3ED3 8200 (sic09/basic09.asm):09391 sbca #$00 3ED5 ED29 (sic09/basic09.asm):09392 std 9,y Save negative remainder 3ED7 EC27 (sic09/basic09.asm):09393 ldd 7,y Get actual divide result 3ED9 40 (sic09/basic09.asm):09394 nega NEGD 3EDA 50 (sic09/basic09.asm):09395 negb 3EDB 8200 (sic09/basic09.asm):09396 sbca #$00 3EDD ED27 (sic09/basic09.asm):09397 std 7,y Save signed result 3EDF 3126 (sic09/basic09.asm):09398 L3F79 leay 6,y Eat temp var & return 3EE1 39 (sic09/basic09.asm):09399 rts (sic09/basic09.asm):09400 endc (sic09/basic09.asm):09401 (sic09/basic09.asm):09402 * Copy REAL # from X (moving X to after real number) to temp var 3EE2 313A (sic09/basic09.asm):09403 L3F7C leay -6,y Make room for temp var 3EE4 E680 (sic09/basic09.asm):09404 ldb ,x+ Get hi-byte of real value 3EE6 8602 (sic09/basic09.asm):09405 lda #2 Force var type to REAL 3EE8 EDA4 (sic09/basic09.asm):09406 std ,y Save in temp var (sic09/basic09.asm):09407 ifne H6309 (sic09/basic09.asm):09408 ldq ,x Copy mantissa to temp var (sic09/basic09.asm):09409 stq 2,y (sic09/basic09.asm):09410 ldb #4 Bump X up to past end of var (sic09/basic09.asm):09411 abx (sic09/basic09.asm):09412 else 3EEA EC81 (sic09/basic09.asm):09413 ldd ,x++ Copy rest of real # to temp var & return 3EEC ED22 (sic09/basic09.asm):09414 std 2,y 3EEE EC81 (sic09/basic09.asm):09415 ldd ,x++ 3EF0 ED24 (sic09/basic09.asm):09416 std 4,y (sic09/basic09.asm):09417 endc 3EF2 39 (sic09/basic09.asm):09418 rts (sic09/basic09.asm):09419 (sic09/basic09.asm):09420 * Copy REAL # from variable pool (pointed to by X) into temp var 3EF3 EC81 (sic09/basic09.asm):09421 L3F8D ldd ,x++ Get offset into var space for REAL var 3EF5 D331 (sic09/basic09.asm):09422 addd 2^31, out of range so eat temp var & return (9.real.add.68.asm):00028 3F43 81E1 (9.real.add.68.asm):00029 L3FDD cmpa #-31 Difference of exponents within -1 to -31? 3F45 2DDA (9.real.add.68.asm):00030 blt L3FBB <2^-31, out of range so copy temp to answer 3F47 E621 (9.real.add.68.asm):00031 ldb 1,y ???Since negative difference, copy temp exponent 3F49 E727 (9.real.add.68.asm):00032 stb 7,y overtop destination exponent? (9.real.add.68.asm):00033 * As of this point, exponent in temp var no longer needed (A=difference in exp 3F4B E62B (9.real.add.68.asm):00034 L3FE5 ldb $B,y Get sign of dest. var 3F4D C401 (9.real.add.68.asm):00035 andb #$01 Keep sign bit only 3F4F E7A4 (9.real.add.68.asm):00036 stb ,y Save copy over var type 3F51 E825 (9.real.add.68.asm):00037 eorb 5,y EOR with sign bit of temp var 3F53 C401 (9.real.add.68.asm):00038 andb #$01 Keep only merged sign bit 3F55 E721 (9.real.add.68.asm):00039 stb 1,y Save what resulting sign should be 3F57 E62B (9.real.add.68.asm):00040 ldb $B,y 3F59 C4FE (9.real.add.68.asm):00041 andb #$FE 3F5B E72B (9.real.add.68.asm):00042 stb $B,y 3F5D E625 (9.real.add.68.asm):00043 ldb 5,y 3F5F C4FE (9.real.add.68.asm):00044 andb #$FE 3F61 E725 (9.real.add.68.asm):00045 stb 5,y 3F63 4D (9.real.add.68.asm):00046 tsta Are exponents exactly the same? 3F64 2731 (9.real.add.68.asm):00047 beq L4031 Yes, skip ahead 3F66 2A27 (9.real.add.68.asm):00048 bpl L4029 Exponent difference positive, go process (9.real.add.68.asm):00049 * Exponent difference is a negative value 3F68 40 (9.real.add.68.asm):00050 nega Force to positive 3F69 3026 (9.real.add.68.asm):00051 leax 6,y Point X to dest. var 3F6B 8D7B (9.real.add.68.asm):00052 bsr L4082 Shift mantissa to match other value (into X:D) 3F6D 6D21 (9.real.add.68.asm):00053 tst 1,y Result going to be positive? 3F6F 272E (9.real.add.68.asm):00054 beq L4039 Yes, skip ahead 3F71 A324 (9.real.add.68.asm):00055 L400B subd 4,y Essentially, X:D=X:D-(2,y) 3F73 1E01 (9.real.add.68.asm):00056 exg d,x (9.real.add.68.asm):00057 * This is essentially a sign reverse on 32 bit #? 3F75 E223 (9.real.add.68.asm):00058 sbcb 3,y 3F77 A222 (9.real.add.68.asm):00059 sbca 2,y 3F79 2438 (9.real.add.68.asm):00060 bcc L404D No borrow required, skip ahead 3F7B 43 (9.real.add.68.asm):00061 coma Compliment all 4 bytes 3F7C 53 (9.real.add.68.asm):00062 comb 3F7D 1E01 (9.real.add.68.asm):00063 exg d,x 3F7F 43 (9.real.add.68.asm):00064 coma 3F80 53 (9.real.add.68.asm):00065 comb 3F81 C30001 (9.real.add.68.asm):00066 addd #1 +1 3F84 1E01 (9.real.add.68.asm):00067 exg d,x 3F86 2403 (9.real.add.68.asm):00068 bcc L4025 If no carry, skip ahead 3F88 C30001 (9.real.add.68.asm):00069 addd #1 +1 to rest of 32 bit # 3F8B 6AA4 (9.real.add.68.asm):00070 L4025 dec ,y Drop exponent by 1 3F8D 2024 (9.real.add.68.asm):00071 bra L404D (9.real.add.68.asm):00072 (9.real.add.68.asm):00073 * Exponent difference is positive value 3F8F 30A4 (9.real.add.68.asm):00074 L4029 leax ,y Point X to temp var 3F91 8D55 (9.real.add.68.asm):00075 bsr L4082 Shift mantissa to match other value (into X:D) 3F93 AF22 (9.real.add.68.asm):00076 stx 2,y 3F95 ED24 (9.real.add.68.asm):00077 std 4,y (9.real.add.68.asm):00078 * Equal exponents come here 3F97 AE28 (9.real.add.68.asm):00079 L4031 ldx 8,y Get mantissa of dest var into X:D 3F99 EC2A (9.real.add.68.asm):00080 ldd $A,y 3F9B 6D21 (9.real.add.68.asm):00081 tst 1,y Check exponent of temp var 3F9D 26D2 (9.real.add.68.asm):00082 bne L400B <>0, go process 3F9F E324 (9.real.add.68.asm):00083 L4039 addd 4,y 32 bit add of X:D + [2,y] 3FA1 1E01 (9.real.add.68.asm):00084 exg d,x 3FA3 E923 (9.real.add.68.asm):00085 adcb 3,y 3FA5 A922 (9.real.add.68.asm):00086 adca 2,y 3FA7 240A (9.real.add.68.asm):00087 bcc L404D No overflow carry after add, skip ahead 3FA9 46 (9.real.add.68.asm):00088 rora Overflow, divide 32 bit mantissa by 2 3FAA 56 (9.real.add.68.asm):00089 rorb 3FAB 1E01 (9.real.add.68.asm):00090 exg d,x 3FAD 46 (9.real.add.68.asm):00091 rora 3FAE 56 (9.real.add.68.asm):00092 rorb 3FAF 6C27 (9.real.add.68.asm):00093 inc 7,y Bump up exponent of dest var by 1 3FB1 1E01 (9.real.add.68.asm):00094 exg d,x 3FB3 4D (9.real.add.68.asm):00095 L404D tsta 3FB4 2B10 (9.real.add.68.asm):00096 bmi L4060 3FB6 6A27 (9.real.add.68.asm):00097 L4050 dec 7,y 3FB8 10290084 (9.real.add.68.asm):00098 lbvs L40DD 3FBC 1E01 (9.real.add.68.asm):00099 exg d,x 3FBE 58 (9.real.add.68.asm):00100 lslb 3FBF 49 (9.real.add.68.asm):00101 rola 3FC0 1E01 (9.real.add.68.asm):00102 exg d,x 3FC2 59 (9.real.add.68.asm):00103 rolb 3FC3 49 (9.real.add.68.asm):00104 rola 3FC4 2AF0 (9.real.add.68.asm):00105 bpl L4050 3FC6 1E01 (9.real.add.68.asm):00106 L4060 exg d,x 3FC8 C30001 (9.real.add.68.asm):00107 addd #1 3FCB 1E01 (9.real.add.68.asm):00108 exg d,x 3FCD 2408 (9.real.add.68.asm):00109 bcc L4071 3FCF C30001 (9.real.add.68.asm):00110 addd #1 3FD2 2403 (9.real.add.68.asm):00111 bcc L4071 3FD4 46 (9.real.add.68.asm):00112 rora 3FD5 6C27 (9.real.add.68.asm):00113 inc 7,y 3FD7 ED28 (9.real.add.68.asm):00114 L4071 std 8,y 3FD9 1F10 (9.real.add.68.asm):00115 tfr x,d 3FDB C4FE (9.real.add.68.asm):00116 andb #$FE Mask out sign bit in mantissa (force to positive) 3FDD 6DA4 (9.real.add.68.asm):00117 tst ,y Result supposed to be negative? 3FDF 2701 (9.real.add.68.asm):00118 beq L407C No, leave it alone 3FE1 5C (9.real.add.68.asm):00119 incb Set sign bit (negative result) 3FE2 ED2A (9.real.add.68.asm):00120 L407C std $A,y Save LSW of mantissa 3FE4 3126 (9.real.add.68.asm):00121 leay 6,y Eat temp var 3FE6 3590 (9.real.add.68.asm):00122 puls pc,x Restore X & return (9.real.add.68.asm):00123 (9.real.add.68.asm):00124 * Entry: A=ABS(difference between exponents) (9.real.add.68.asm):00125 * Y=Ptr to temp var packet\ These could be swapped depending on whether (9.real.add.68.asm):00126 * X=Ptr to dest var packet/ exponent difference is positive or negative (9.real.add.68.asm):00127 * Exit: X:D is 32 bit shifted mantissa 3FE8 8010 (9.real.add.68.asm):00128 L4082 suba #16 Subtract 16 from exponent difference (2 byte shift 3FEA 2519 (9.real.add.68.asm):00129 blo L40A0 Wrapped to negative, skip ahead 3FEC 8008 (9.real.add.68.asm):00130 suba #8 Try subtracting 8 from it 3FEE 2507 (9.real.add.68.asm):00131 blo L4091 Wrapped, go add it back in (9.real.add.68.asm):00132 * 3 byte minimum shift 3FF0 9714 (9.real.add.68.asm):00133 sta or >< 4327 8DD1 (sic09/basic09.asm):09584 L43C5 bsr L4398 4329 263C (sic09/basic09.asm):09585 bne L4405 432B 203E (sic09/basic09.asm):09586 bra L4409 (sic09/basic09.asm):09587 (sic09/basic09.asm):09588 * String compare: >= or => (?) 432D 8DCB (sic09/basic09.asm):09589 L43CB bsr L4398 432F 2436 (sic09/basic09.asm):09590 bhs L4405 4331 2038 (sic09/basic09.asm):09591 bra L4409 (sic09/basic09.asm):09592 (sic09/basic09.asm):09593 * String compare: > (?) 4333 8DC5 (sic09/basic09.asm):09594 L43D1 bsr L4398 4335 2230 (sic09/basic09.asm):09595 bhi L4405 4337 2032 (sic09/basic09.asm):09596 bra L4409 (sic09/basic09.asm):09597 (sic09/basic09.asm):09598 * For Integer/Byte compares below: Works for signed Integer as well (sic09/basic09.asm):09599 * as unsigned Byte (sic09/basic09.asm):09600 * Integer/Byte compare: < 4339 EC27 (sic09/basic09.asm):09601 L43D7 ldd 7,y 433B A321 (sic09/basic09.asm):09602 subd 1,y NOTE: SUBD is faster than CMPD 433D 2D28 (sic09/basic09.asm):09603 blt L4405 433F 202A (sic09/basic09.asm):09604 bra L4409 (sic09/basic09.asm):09605 (sic09/basic09.asm):09606 * Integer/Byte compare: <= or =< 4341 EC27 (sic09/basic09.asm):09607 L43DF ldd 7,y 4343 A321 (sic09/basic09.asm):09608 subd 1,y 4345 2F20 (sic09/basic09.asm):09609 ble L4405 4347 2022 (sic09/basic09.asm):09610 bra L4409 (sic09/basic09.asm):09611 (sic09/basic09.asm):09612 * Integer/Byte compare: <> or >< 4349 EC27 (sic09/basic09.asm):09613 L43E7 ldd 7,y 434B A321 (sic09/basic09.asm):09614 subd 1,y 434D 2618 (sic09/basic09.asm):09615 bne L4405 434F 201A (sic09/basic09.asm):09616 bra L4409 (sic09/basic09.asm):09617 (sic09/basic09.asm):09618 * Integer/Byte compare: = 4351 EC27 (sic09/basic09.asm):09619 L43EF ldd 7,y 4353 A321 (sic09/basic09.asm):09620 subd 1,y 4355 2710 (sic09/basic09.asm):09621 beq L4405 4357 2012 (sic09/basic09.asm):09622 bra L4409 (sic09/basic09.asm):09623 (sic09/basic09.asm):09624 * Integer/Byte compare: >= or => 4359 EC27 (sic09/basic09.asm):09625 L43F7 ldd 7,y 435B A321 (sic09/basic09.asm):09626 subd 1,y 435D 2C08 (sic09/basic09.asm):09627 bge L4405 435F 200A (sic09/basic09.asm):09628 bra L4409 (sic09/basic09.asm):09629 (sic09/basic09.asm):09630 * Integer/Byte compare: > 4361 EC27 (sic09/basic09.asm):09631 L43FF ldd 7,y Get original var 4363 A321 (sic09/basic09.asm):09632 subd 1,y > than compare var? 4365 2F04 (sic09/basic09.asm):09633 ble L4409 No, boolean result=FALSE 4367 C6FF (sic09/basic09.asm):09634 L4405 ldb #$FF Boolean result=TRUE 4369 2001 (sic09/basic09.asm):09635 bra L440B (sic09/basic09.asm):09636 436B 5F (sic09/basic09.asm):09637 L4409 clrb Boolean result=FALSE 436C 4F (sic09/basic09.asm):09638 L440B clra Clear hi byte (since result is 1 byte boolean) 436D 3126 (sic09/basic09.asm):09639 leay 6,y Eat temp var packet 436F ED21 (sic09/basic09.asm):09640 std 1,y Save result in original var packet 4371 8603 (sic09/basic09.asm):09641 lda #3 Save var type as Boolean 4373 A7A4 (sic09/basic09.asm):09642 sta ,y 4375 39 (sic09/basic09.asm):09643 rts (sic09/basic09.asm):09644 (sic09/basic09.asm):09645 * BOOLEAN = compare 4376 E628 (sic09/basic09.asm):09646 L4415 ldb 8,y Get original BOOLEAN value 4378 E122 (sic09/basic09.asm):09647 cmpb 2,y Same as comparitive BOOLEAN value? 437A 27EB (sic09/basic09.asm):09648 beq L4405 Yes, result=TRUE 437C 20ED (sic09/basic09.asm):09649 bra L4409 No, result=FALSE (sic09/basic09.asm):09650 (sic09/basic09.asm):09651 * BOOLEAN <> or >< compare 437E E628 (sic09/basic09.asm):09652 L441D ldb 8,y Get original BOOLEAN value 4380 E122 (sic09/basic09.asm):09653 cmpb 2,y Same as comparitive BOOLEAN value? 4382 26E3 (sic09/basic09.asm):09654 bne L4405 No, result=TRUE 4384 20E5 (sic09/basic09.asm):09655 bra L4409 Yes, result=FALSE (sic09/basic09.asm):09656 (sic09/basic09.asm):09657 * Real < compare 4386 8D22 (sic09/basic09.asm):09658 L4425 bsr L4449 Go compute flags between real #'s 4388 2DDD (sic09/basic09.asm):09659 blt L4405 If < then, result=TRUE 438A 20DF (sic09/basic09.asm):09660 bra L4409 Otherwise, result=FALSE (sic09/basic09.asm):09661 (sic09/basic09.asm):09662 * Real <= or =< compare 438C 8D1C (sic09/basic09.asm):09663 L442B bsr L4449 438E 2FD7 (sic09/basic09.asm):09664 ble L4405 4390 20D9 (sic09/basic09.asm):09665 bra L4409 (sic09/basic09.asm):09666 (sic09/basic09.asm):09667 * Real <> or >< compare 4392 8D16 (sic09/basic09.asm):09668 L4431 bsr L4449 4394 26D1 (sic09/basic09.asm):09669 bne L4405 4396 20D3 (sic09/basic09.asm):09670 bra L4409 (sic09/basic09.asm):09671 (sic09/basic09.asm):09672 * Real = compare 4398 8D10 (sic09/basic09.asm):09673 L4437 bsr L4449 439A 27CB (sic09/basic09.asm):09674 beq L4405 439C 20CD (sic09/basic09.asm):09675 bra L4409 (sic09/basic09.asm):09676 (sic09/basic09.asm):09677 * Real >= or => compare 439E 8D0A (sic09/basic09.asm):09678 L443D bsr L4449 43A0 2CC5 (sic09/basic09.asm):09679 bge L4405 43A2 20C7 (sic09/basic09.asm):09680 bra L4409 (sic09/basic09.asm):09681 (sic09/basic09.asm):09682 * Real > compare 43A4 8D04 (sic09/basic09.asm):09683 L4443 bsr L4449 43A6 2EBF (sic09/basic09.asm):09684 bgt L4405 43A8 20C1 (sic09/basic09.asm):09685 bra L4409 (sic09/basic09.asm):09686 (sic09/basic09.asm):09687 * Set flags for Real comparison 43AA 3420 (sic09/basic09.asm):09688 L4449 pshs y Preserve Y 43AC 1CF0 (sic09/basic09.asm):09689 andcc #$F0 Clear out Negative, Zero, Overflow & Carry bits 43AE A628 (sic09/basic09.asm):09690 lda 8,y Is original REAL var=0? 43B0 2610 (sic09/basic09.asm):09691 bne L4461 No, skip ahead 43B2 A622 (sic09/basic09.asm):09692 lda 2,y Is comparitive REAL var=0? 43B4 270A (sic09/basic09.asm):09693 beq L445F Yes, they are equal so return 43B6 A625 (sic09/basic09.asm):09694 L4455 lda 5,y Get last byte of Mantissa with sign bit 43B8 8401 (sic09/basic09.asm):09695 L4457 anda #$01 Ditch everything but sign bit 43BA 2604 (sic09/basic09.asm):09696 bne L445F Sign bit set, negative value, return 43BC 1CF0 (sic09/basic09.asm):09697 L445B andcc #$F0 Clear out Negative, Zero, Overflow & carry bits 43BE 1A08 (sic09/basic09.asm):09698 orcc #%00001000 Set Negative flag 43C0 35A0 (sic09/basic09.asm):09699 L445F puls pc,y (sic09/basic09.asm):09700 43C2 A622 (sic09/basic09.asm):09701 L4461 lda 2,y Is comparitive REAL var=0? 43C4 2606 (sic09/basic09.asm):09702 bne L446B No, go deal with whole exponent/mantissa mess 43C6 A62B (sic09/basic09.asm):09703 lda $B,y Get sign bit of original var 43C8 8801 (sic09/basic09.asm):09704 eora #$01 Invert sign flag 43CA 20EC (sic09/basic09.asm):09705 bra L4457 Go set Negative bit appropriately (sic09/basic09.asm):09706 (sic09/basic09.asm):09707 * No zero values in REAL compare-deal with exponent & mantissa 43CC A62B (sic09/basic09.asm):09708 L446B lda $B,y Get sign bit byte from original var 43CE A825 (sic09/basic09.asm):09709 eora 5,y Calculate resulting sign from it with temp var 43D0 8401 (sic09/basic09.asm):09710 anda #$01 Only keep sign bit 43D2 26E2 (sic09/basic09.asm):09711 bne L4455 One of the #'s is neg, other pos, go deal with it 43D4 3326 (sic09/basic09.asm):09712 leau 6,y Both same sign, point U to original var 43D6 A625 (sic09/basic09.asm):09713 lda 5,y Get sign byte from temp var 43D8 8401 (sic09/basic09.asm):09714 anda #$01 Just keep sign bit 43DA 2702 (sic09/basic09.asm):09715 beq L447D If positive, skip ahead 43DC 1E32 (sic09/basic09.asm):09716 exg u,y If negative, swap ptrs to the 2 vars (sic09/basic09.asm):09717 * POSSIBLE 6309 MOD: DO LDA 1,U / CMPA 1,Y FOR EXPONENT, THEN LDQ / CMPD / (sic09/basic09.asm):09718 * CMPW FOR MANTISSA 43DE EC41 (sic09/basic09.asm):09719 L447D ldd 1,u Get exponent & 1st mantissa bytes 43E0 10A321 (sic09/basic09.asm):09720 cmpd 1,y Compare 43E3 26DB (sic09/basic09.asm):09721 bne L445F Not equal, exit with appropriate flags set 43E5 EC43 (sic09/basic09.asm):09722 ldd 3,u Match so far, compare 2nd & 3rd mantissa bytes 43E7 10A323 (sic09/basic09.asm):09723 cmpd 3,y 43EA 2606 (sic09/basic09.asm):09724 bne L4491 Not equal, exit with flags 43EC A645 (sic09/basic09.asm):09725 lda 5,u Compare last byte of mantissa 43EE A125 (sic09/basic09.asm):09726 cmpa 5,y 43F0 27CE (sic09/basic09.asm):09727 beq L445F 2 #'s are equal, exit 43F2 25C8 (sic09/basic09.asm):09728 L4491 blo L445B If below, set negative flag & exit 43F4 1CF0 (sic09/basic09.asm):09729 andcc #$F0 Clear negative, zero, overflow & carry bits 43F6 35A0 (sic09/basic09.asm):09730 puls pc,y Restore Y & return (sic09/basic09.asm):09731 (sic09/basic09.asm):09732 *??? Copy string var of some sort <=256 chars max 43F8 5F (sic09/basic09.asm):09733 L4497 clrb Max size of string copy=256 43F9 D73E (sic09/basic09.asm):09734 stb 0, skip ahead 4482 CE0208 (sic09/basic09.asm):09817 ldu #$0208 ??? If exponent=0, 522 4485 1E89 (sic09/basic09.asm):09818 exg a,b 4487 4D (sic09/basic09.asm):09819 L4526 tsta 4488 2B06 (sic09/basic09.asm):09820 bmi L452F 448A 335F (sic09/basic09.asm):09821 L4529 leau -1,u Drop down U counter 448C 58 (sic09/basic09.asm):09822 lslb LSLD 448D 49 (sic09/basic09.asm):09823 rola 448E 2AFA (sic09/basic09.asm):09824 bpl L4529 Do until hi bit is set 4490 ED22 (sic09/basic09.asm):09825 L452F std 2,y 4492 EFA4 (sic09/basic09.asm):09826 stu ,y 4494 39 (sic09/basic09.asm):09827 rts (sic09/basic09.asm):09828 4495 3126 (sic09/basic09.asm):09829 L4534 leay 6,y Eat temp var 4497 8DCB (sic09/basic09.asm):09830 bsr L4503 ??? Something with reals 4499 313A (sic09/basic09.asm):09831 leay -6,y Make room for temp var & return 449B 39 (sic09/basic09.asm):09832 rts (sic09/basic09.asm):09833 449C E621 (sic09/basic09.asm):09834 L453B ldb 1,y Get exponent 449E 2E0F (sic09/basic09.asm):09835 bgt L454E If exponent >0, skip ahead 44A0 2B09 (sic09/basic09.asm):09836 bmi L454A If exponent <0, skip ahead 44A2 A622 (sic09/basic09.asm):09837 lda 2,y Exponent=0, get 1st byte of mantissa 44A4 2A05 (sic09/basic09.asm):09838 bpl L454A If high bit not set, integer result=0 44A6 CC0001 (sic09/basic09.asm):09839 ldd #$0001 High bit set, Integer result=1 44A9 2047 (sic09/basic09.asm):09840 bra L4591 Go adjust sign if necessary (sic09/basic09.asm):09841 44AB 4F (sic09/basic09.asm):09842 L454A clra Integer result=0 44AC 5F (sic09/basic09.asm):09843 clrb 44AD 204B (sic09/basic09.asm):09844 bra L4599 Save integer & return (sic09/basic09.asm):09845 44AF C010 (sic09/basic09.asm):09846 L454E subb #$10 Subtract 16 from exponent 44B1 223A (sic09/basic09.asm):09847 bhi L458C 44B3 2612 (sic09/basic09.asm):09848 bne L4566 44B5 EC22 (sic09/basic09.asm):09849 ldd 2,y 44B7 6625 (sic09/basic09.asm):09850 ror 5,y 44B9 243F (sic09/basic09.asm):09851 bcc L4599 44BB 10838000 (sic09/basic09.asm):09852 cmpd #$8000 44BF 262C (sic09/basic09.asm):09853 bne L458C 44C1 6D24 (sic09/basic09.asm):09854 tst 4,y 44C3 2A35 (sic09/basic09.asm):09855 bpl L4599 44C5 2026 (sic09/basic09.asm):09856 bra L458C (sic09/basic09.asm):09857 44C7 C1F8 (sic09/basic09.asm):09858 L4566 cmpb #$F8 44C9 220E (sic09/basic09.asm):09859 bhi L4578 44CB 3404 (sic09/basic09.asm):09860 pshs b 44CD EC22 (sic09/basic09.asm):09861 ldd 2,y 44CF ED23 (sic09/basic09.asm):09862 std 3,y 44D1 6F22 (sic09/basic09.asm):09863 clr 2,y 44D3 3504 (sic09/basic09.asm):09864 puls b 44D5 CB08 (sic09/basic09.asm):09865 addb #$08 44D7 2709 (sic09/basic09.asm):09866 beq L4581 44D9 6422 (sic09/basic09.asm):09867 L4578 lsr 2,y 44DB 6623 (sic09/basic09.asm):09868 ror 3,y 44DD 6624 (sic09/basic09.asm):09869 ror 4,y 44DF 5C (sic09/basic09.asm):09870 incb 44E0 26F7 (sic09/basic09.asm):09871 bne L4578 44E2 EC22 (sic09/basic09.asm):09872 L4581 ldd 2,y 44E4 6D24 (sic09/basic09.asm):09873 tst 4,y 44E6 2A0A (sic09/basic09.asm):09874 bpl L4591 44E8 C30001 (sic09/basic09.asm):09875 addd #$0001 44EB 2805 (sic09/basic09.asm):09876 bvc L4591 44ED C634 (sic09/basic09.asm):09877 L458C ldb #$34 Value out of Range for Destination error 44EF 9D24 (sic09/basic09.asm):09878 jsr L4C7F,pc Point to routine 4734 AFA819 (sic09/basic09.asm):10231 stx <$19,y 4737 170125 (sic09/basic09.asm):10232 lbsr L4909 473A 30A814 (sic09/basic09.asm):10233 leax <$14,y 473D 33A81B (sic09/basic09.asm):10234 leau <$1B,y 4740 1703DC (sic09/basic09.asm):10235 lbsr L4BCC 4743 1704EE (sic09/basic09.asm):10236 lbsr L4CE1 4746 31A81A (sic09/basic09.asm):10237 leay <$1A,y 4749 C602 (sic09/basic09.asm):10238 ldb #$02 474B E7A4 (sic09/basic09.asm):10239 stb ,y 474D E625 (sic09/basic09.asm):10240 ldb $05,y 474F CA01 (sic09/basic09.asm):10241 orb #$01 4751 E725 (sic09/basic09.asm):10242 stb $05,y 4753 3504 (sic09/basic09.asm):10243 puls b 4755 8D0A (sic09/basic09.asm):10244 bsr L480A 4757 3510 (sic09/basic09.asm):10245 puls x 4759 16F7BB (sic09/basic09.asm):10246 lbra L3FB1 (sic09/basic09.asm):10247 475C 00B17217F8 (sic09/basic09.asm):10248 L4805 fcb $00,$b1,$72,$17,$f8 (.693147181) LOG(2) in REAL format (sic09/basic09.asm):10249 4761 1D (sic09/basic09.asm):10250 L480A sex Convert to 16 bit number 4762 2A01 (sic09/basic09.asm):10251 bpl L480E If positive, skip ahead 4764 50 (sic09/basic09.asm):10252 negb Invert sign on LSB 4765 8401 (sic09/basic09.asm):10253 L480E anda #$01 4767 3406 (sic09/basic09.asm):10254 pshs d 4769 338CF0 (sic09/basic09.asm):10255 L4812 leau L4805,pc Point to LOG(2) in REAL format 4815 17F6E1 (sic09/basic09.asm):10347 lbsr L3F93 4818 17F6FC (sic09/basic09.asm):10348 lbsr L3FB1 481B 6AE4 (sic09/basic09.asm):10349 dec ,s 481D E625 (sic09/basic09.asm):10350 ldb 5,y 481F C401 (sic09/basic09.asm):10351 andb #$01 4821 26EE (sic09/basic09.asm):10352 bne L48BB 4823 31A8E6 (sic09/basic09.asm):10353 L48CD leay <-$1A,y 4826 30A81B (sic09/basic09.asm):10354 leax <$1B,y 4829 33A814 (sic09/basic09.asm):10355 leau <$14,y 482C 1702F0 (sic09/basic09.asm):10356 lbsr L4BCC 482F 1703E8 (sic09/basic09.asm):10357 lbsr L4CC7 4832 CC1000 (sic09/basic09.asm):10358 ldd #$1000 4835 EDA4 (sic09/basic09.asm):10359 std ,y 4837 4F (sic09/basic09.asm):10360 clra 4838 ED22 (sic09/basic09.asm):10361 std $02,y 483A A724 (sic09/basic09.asm):10362 sta $04,y 483C 308D0374 (sic09/basic09.asm):10363 leax >L4C61,pc 4840 AFA819 (sic09/basic09.asm):10364 stx <$19,y 4843 8D1A (sic09/basic09.asm):10365 bsr L4909 4845 30A4 (sic09/basic09.asm):10366 leax ,y 4847 33A81B (sic09/basic09.asm):10367 leau <$1B,y 484A 1702D2 (sic09/basic09.asm):10368 lbsr L4BCC 484D 1703E4 (sic09/basic09.asm):10369 lbsr L4CE1 4850 31A81A (sic09/basic09.asm):10370 leay <$1A,y 4853 3504 (sic09/basic09.asm):10371 puls b 4855 EB21 (sic09/basic09.asm):10372 addb $01,y 4857 2919 (sic09/basic09.asm):10373 bvs L491C 4859 8602 (sic09/basic09.asm):10374 lda #$02 485B EDA4 (sic09/basic09.asm):10375 std ,y 485D 3590 (sic09/basic09.asm):10376 puls pc,x (sic09/basic09.asm):10377 485F 8601 (sic09/basic09.asm):10378 L4909 lda #$01 4861 979A (sic09/basic09.asm):10379 sta L4D6F,pc 4867 9F95 (sic09/basic09.asm):10381 stx $005F,x 486D 9F97 (sic09/basic09.asm):10383 stx L4C2C,pc 49AB AFA819 (sic09/basic09.asm):10534 stx <$19,y 49AE 17012C (sic09/basic09.asm):10535 lbsr L4B89 49B1 30A814 (sic09/basic09.asm):10536 leax <$14,y 49B4 33A81B (sic09/basic09.asm):10537 leau <$1B,y 49B7 170165 (sic09/basic09.asm):10538 lbsr L4BCC 49BA 170277 (sic09/basic09.asm):10539 lbsr L4CE1 49BD 31A81A (sic09/basic09.asm):10540 leay <$1A,y 49C0 A625 (sic09/basic09.asm):10541 L4A6A lda $05,y 49C2 9A6D (sic09/basic09.asm):10542 ora L4AFE,pc 49D0 17F526 (sic09/basic09.asm):10548 lbsr L3F93 49D3 17F658 (sic09/basic09.asm):10549 lbsr L40CC 49D6 200F (sic09/basic09.asm):10550 bra L4A91 (sic09/basic09.asm):10551 49D8 3410 (sic09/basic09.asm):10552 L4A82 pshs x 49DA 170082 (sic09/basic09.asm):10553 lbsr L4B0A 49DD 302A (sic09/basic09.asm):10554 leax $0A,y 49DF 8D0C (sic09/basic09.asm):10555 bsr L4A97 49E1 A625 (sic09/basic09.asm):10556 lda $05,y 49E3 989C (sic09/basic09.asm):10557 L4A8D eora L4D6A,pc Point to a table of Real #'s 49FD 3321 (sic09/basic09.asm):10568 leau 1,y 49FF 17011D (sic09/basic09.asm):10569 lbsr L4BCC 4A02 16F629 (sic09/basic09.asm):10570 lbra L40CC (sic09/basic09.asm):10571 4A05 3410 (sic09/basic09.asm):10572 L4AAF pshs x 4A07 8D56 (sic09/basic09.asm):10573 bsr L4B0A 4A09 30A4 (sic09/basic09.asm):10574 leax ,y 4A0B 8DE0 (sic09/basic09.asm):10575 bsr L4A97 4A0D A625 (sic09/basic09.asm):10576 lda $05,y 4A0F 989B (sic09/basic09.asm):10577 eora L4C33,pc 4ABF AFA819 (sic09/basic09.asm):10658 stx <$19,y 4AC2 30A81B (sic09/basic09.asm):10659 leax <$1B,y 4AC5 33A814 (sic09/basic09.asm):10660 leau <$14,y 4AC8 8D55 (sic09/basic09.asm):10661 bsr L4BCC 4ACA 17014D (sic09/basic09.asm):10662 lbsr L4CC7 4ACD CC1000 (sic09/basic09.asm):10663 ldd #$1000 4AD0 EDA4 (sic09/basic09.asm):10664 std ,y 4AD2 4F (sic09/basic09.asm):10665 clra 4AD3 ED22 (sic09/basic09.asm):10666 std $02,y 4AD5 A724 (sic09/basic09.asm):10667 sta $04,y 4AD7 ED2A (sic09/basic09.asm):10668 std $0A,y 4AD9 ED2C (sic09/basic09.asm):10669 std $0C,y 4ADB A72E (sic09/basic09.asm):10670 sta $0E,y 4ADD 308D019B (sic09/basic09.asm):10671 L4B89 leax >L4D29,pc Point to some real # table 4AE1 9F95 (sic09/basic09.asm):10672 stx L4DCE,pc Point to table 4FC0 EC81 (sic09/basic09.asm):11318 L505E ldd ,x++ Get 2 bytes 4FC2 EDA1 (sic09/basic09.asm):11319 std ,y++ Move into DP 4FC4 6AE4 (sic09/basic09.asm):11320 dec ,s Do all 6 4FC6 26F8 (sic09/basic09.asm):11321 bne L505E Until done 4FC8 308DEC48 (sic09/basic09.asm):11322 leax >L3CB5,pc Point to jump table 4FCC 9F10 (sic09/basic09.asm):11323 stx L3D35,pc Point to another jump table 4FD2 9F12 (sic09/basic09.asm):11325 stx xxxx 4FD6 9716 (sic09/basic09.asm):11327 sta L3D41,pc Point to routine 4FDC 9F17 (sic09/basic09.asm):11329 stx L513E,pc 51D1 8D26 (sic09/basic09.asm):11582 bsr L529B 51D3 3504 (sic09/basic09.asm):11583 puls b 51D5 1025FF5F (sic09/basic09.asm):11584 lbcs L51DA 51D9 5A (sic09/basic09.asm):11585 L527B decb 51DA 8605 (sic09/basic09.asm):11586 lda #5 51DC 3D (sic09/basic09.asm):11587 mul 51DD 338DFE61 (sic09/basic09.asm):11588 leau >L50E4,pc 51E1 33C5 (sic09/basic09.asm):11589 leau b,u 51E3 8D14 (sic09/basic09.asm):11590 bsr L529B 51E5 1025FF4F (sic09/basic09.asm):11591 lbcs L51DA 51E9 A625 (sic09/basic09.asm):11592 L528B lda 5,y 51EB 84FE (sic09/basic09.asm):11593 anda #$FE 51ED 9A78 (sic09/basic09.asm):11594 ora L50DA,pc 5323 0F7A (sic09/basic09.asm):11770 L53C5 clr L513E,pc 53A1 17FE55 (sic09/basic09.asm):11838 lbsr L529B 53A4 3502 (sic09/basic09.asm):11839 puls a 53A6 8013 (sic09/basic09.asm):11840 suba #$13 53A8 338DFC96 (sic09/basic09.asm):11841 L544A leau >L50E4,pc 53AC 4A (sic09/basic09.asm):11842 deca 53AD C605 (sic09/basic09.asm):11843 ldb #$05 53AF 3D (sic09/basic09.asm):11844 mul 53B0 33CB (sic09/basic09.asm):11845 leau d,u 53B2 17FE44 (sic09/basic09.asm):11846 lbsr L529B 53B5 EC22 (sic09/basic09.asm):11847 L5457 ldd 2,y 53B7 6D21 (sic09/basic09.asm):11848 tst 1,y 53B9 2726 (sic09/basic09.asm):11849 beq L5483 53BB 2A10 (sic09/basic09.asm):11850 bpl L546F 53BD 44 (sic09/basic09.asm):11851 L545F lsra 53BE 56 (sic09/basic09.asm):11852 rorb 53BF 6624 (sic09/basic09.asm):11853 ror $04,y 53C1 6625 (sic09/basic09.asm):11854 ror $05,y 53C3 067C (sic09/basic09.asm):11855 ror L5143,pc 55C9 A622 (sic09/basic09.asm):12147 lda 2,y 55CB 26F1 (sic09/basic09.asm):12148 bne L5660 55CD 308DFAD5 (sic09/basic09.asm):12149 leax >L5148,pc 55D1 20EB (sic09/basic09.asm):12150 bra L5660 (sic09/basic09.asm):12151 55D3 3450 (sic09/basic09.asm):12152 L5675 pshs u,x 55D5 327B (sic09/basic09.asm):12153 leas -5,s 55D7 30E4 (sic09/basic09.asm):12154 leax ,s 55D9 17FD2C (sic09/basic09.asm):12155 lbsr L53AA 55DC 8DC3 (sic09/basic09.asm):12156 bsr L5643 55DE 9676 (sic09/basic09.asm):12157 lda L5143,pc Point to 'True' 586D C604 (sic09/basic09.asm):12541 ldb #4 Size of 'True' 586F A622 (sic09/basic09.asm):12542 lda 2,y Get boolean value 5871 261C (sic09/basic09.asm):12543 bne L5932 $FF is true, so skip ahead 5873 308DF82F (sic09/basic09.asm):12544 leax >L5148,pc Point to 'False' 5877 C605 (sic09/basic09.asm):12545 ldb #5 Size of 'False' 5879 2014 (sic09/basic09.asm):12546 bra L5932 Go deal with it (sic09/basic09.asm):12547 587B 9D16 (sic09/basic09.asm):12548 L591E jsr