[ 53280,0:53281,0:646,(162):"":" USE LYNX TO DISSOLVE THIS FILE":10 1 *LYNX BY CBMCONVERT 2.0* 3 LACKOUT 2 59 P 146 DOCUMENTATION 24 P 209 Ġ 47 P 255 Blackout 2Y:PRG formatted GEOS file V1.0AWrite Image V2.0geoWrite V2.0= 2Z0\ 8 5*,), k" k"d +# k" t k"U ŠMCQ k" k"1%Pi@(L *** L@Blackout 2L *** by Jim HollowayL *** This is the source file for BLACKOUT 2. *** It is written for the SPRINGBOARD Assembler, also by Jim Holloway. *** EQUATES from "THE OFFICIAL GEOS PROGRAMMER'S REFERENCE GUIDE" *** Documented GEOS Kernal Routines *** Icons @hDoIcns equ $c15a DoIcons, p.28 *** Text in GEOS PutStr equ $c148 PutString, p.108 i_PtSt equ $c1ae i_PutString, p.108 PutDec equ $c184 PutDecimal, p.109 GetStr equ $c1ba GetString, p.111 *** Character Level Routines GtNxtC equ $c2a7 GetNextChar, p.119 InitTP equ $c1c0 InitTextPrompt, p.120 PrmpOn equ $c29b PromptOn, p.121 PrmpOf equ $c29e PromptOff, p.122 Putchr equ $c145 Putchar, p.123 GrRlSz equ $c1b1 GetRealSize, p.125 @h0LGtChWd equ $c1c9 GetCharWidth, p.126 LdChSt equ $c1cc LoadCharSet, p.132 SysFnt equ $c14b UseSystemFont, p.133 *** Input Driver InitMs equ $fe80 InitMouse, p.138 SlowMs equ $fe83 SlowMouse, p.142 UpdtMs equ $fe86 UpdateMouse, pp.144,145 StMsMd equ $c14e StartMouseMode, p.149 MseOff equ $c18d MouseOff, p.150 MseUp equ $c18a MouseUp, p.151 IsMsRg equ $c2b3 IsMseInRegion, p.153 *** Sprite Support DrawSp equ $c1c6 DrawSprite, p.172 PosSpr equ $c1cf PosSprite, p.173 EnblSp equ $c1d2 EnablSprite, p.174 DsblSp equ $c1d5 DisablSprite, p.175 *** Process Support InitPr equ $c103 InitProcesses, p.180 RstrtP equ $c106 RestsrtProcess, p.181 BlckPr equ $c10c BlockProcess, p.182 UblkPr equ $c10f UnblockProcess, p.182 FrezPr equ $c112 FreezeProcess, p.183 UnfrzP equ $c115 UnfreezeProcess, p.183 Sleep equ $c199 Sleep, pp.184,185 EnblPr equ $c109 EnableProcess, p.186 *** Math Library DShftL equ $c15d DShiftLeft, p.188 DShftR equ $c262 DShiftRight, p.189 BBMult equ $c160 BBMult, p.190 BMult equ $c163 BMult, p.191 DMult equ $c166 DMult, p.192 Ddiv equ $c169 Ddiv, p.193 DSdiv equ $c16c DSdiv, p.194 Dabs equ $c16f Dabs, p.195 Dnegat equ $c172 Dnegate, p.196 Ddec equ $c175 Ddec, p.197 GtRndm equ $c187 GetRandom, p.198 *** General Library Routines CpyStr equ $c265 CopyString, p.200 CpyFSt equ $c268 CopyFString, p. 201 CmpStr equ $c26b CmpString, p.202 CmpFSt equ $c26e CmpFString, p.203 Panic equ $c2c2 Panic - Roll Over and Die, p.204 MovDat equ $c17e MoveData, p.205 i_MvDt equ $c1b7 i_MoveData, p.205 @h0LClrRam equ $c178 ClearRam, p.206 FilRam equ $c17b FillRam, p.207 i_FlRm equ $c1b4 i_FillRam, p.207 InitRm equ $c181 InitRam, pp.208,209 CalRtn equ $c1d8 CallRoutine, p.210 GtSrNm equ $c196 GetSerialNumber, p.211 TBasic equ $c241 ToBasic, p.212 FrstIn equ $c271 FirstInit, p.213 CRC equ $c20e CRC, p.214 ChngDD equ $c2bc ChangeDiskDevice, p.215 *** Dialog Boxes DDlgBx equ $c256 DoDlgBox, p.231 RstrFD equ $c2bf RstrFrmDialog, p.232 *** High-Level File Routines SetDvc equ $c2b0 SetDevice, p.252 OpnDsk equ $c2a1 OpenDisk, p.253 GtPCDN equ $c298 GetPtrCurDkNm, p.254 SGEOSD equ $c1ea SetGEOSDisk, p.255 ChkDkG equ $c1de ChkDkGEOS, p.256 FndFTp equ $c23b FindFTypes, pp.257,258 GetFil equ $c208 GetFile, pp.259-262 FndFil equ $c20b FindFile, p.263 SavFil equ $c1ed SaveFile, pp.264,265 DelFil equ $c238 DeleteFile, pp.266,267 RnmFil equ $c259 RenameFile, p.268 EDskTp equ $c22c EnterDeskTop, p.269 ClcBFr equ $c1db CalcBlksFree, p.270 *** Intermediate Level GetBlk equ $c1e4 GetBlock, pp.272,273 PutBlk equ $c1e7 PutBlock, pp.274,275 GtFHIn equ $c229 GetFHdrInfo, p.276 ReadFl equ $c1ff ReadFile, p.277 WriteF equ $c1f9 WriteFile, pp.278,279 ReadBt equ $c2b6 ReadByte, p.280 GtDrHd equ $c247 GetDirHead, p.281 PtDrHd equ $c24a PutDirHead, p.282 NewDsk equ $c1e1 NewDisk, p.283 LdAplc equ $c21d LdApplic - Load Application File, pp.284-286 LdFile equ $c211 LdFile - Load File, pp.287,288 GtFrDB equ $c1f6 GetFreeDirBlk - Get Free Directory Block, pp.289,290 BlkAlc equ $c1fc BlkAlloc, pp.291,292 NxtBlA equ $c24d NxtBlkAlloc, pp.293,294 StNxtF equ $c292 SetNextFree, p.295 FndBBt equ $c2ad FindBAMBit, p.296 FreBlk equ $c2b9 FreeBlock, p.297 StGDrE equ $c1f0 SetGDirEntry, pp.298,299 BldGDE equ $c1f3 BldGDirEntry - Build GEOS Directory Entry, pp.300,301 @h0LFlwChn equ $c205 FollowChain, p.301 FstDlF equ $c244 FastDelFile, pp.302,303 FreFil equ $c226 FreeFile, p.304 *** Primitive Routines InitIO equ $c25c InitForIO, p.306 DoneIO equ $c25f DoneWithIO, p.307 PrgTrb equ $c235 PurgeTurbo, p.308 EntTrb equ $c214 EnterTurbo, p.309 ReadBk equ $c21a ReadBlock, pp.310,311 WriteB equ $c220 WriteBlock, p.312 *** VLIR Files OpenRF equ $c274 OpenRecordFile, p.318 ClseRF equ $c277 CloseRecordFile, p.319 UpdtRF equ $c295 UpdateRecordFile, p.320 PrevRc equ $c27d PreviousRecord, p.321 NxtRec equ $c27a NextRecord, p.321 PntRec equ $c280 PointRecord, p.321 DelRec equ $c283 DeleteRecord, p.322 WriteR equ $c28f WriteRecord, p.323 ReadRc equ $c28c ReadRecord, p.324 *** Printer Drivers InitFP equ $7900 InitForPrint, p.335 GetDim equ $790c GetDimensions, p.336 StPrnt equ $7903 StartPrint, p.337 PrntBf equ $7906 PrintBuffer, p.338 StopPr equ $7909 StopPrint, p.339 StASCI equ $7912 StartASCII, p.340 PrASCI equ $790f PrintASCII, p.341 *** Undocumented GEOS Kernal Routines BootG equ $c000 ReHndl equ $c003 IntrpM equ $c100 RcvrMn equ $c154 RcvrAM equ $c157 ClrMsM equ $c19c MainLp equ $c1c3 SmlPCh equ $c202 LdDskA equ $c217 VrWrtB equ $c223 StrtAp equ $c22f ExitTb equ $c232 RstrAp equ $c23e InsrtR equ $c286 ApndRc equ $c289 DoIlRt equ $c2a4 StashR equ $c2c8 @h0LFetchR equ $c2cb SwapR equ $c2ce VerfyR equ $c2d1 DoROp equ $c2d4 *** Constants EOF equ 0 NULL equ 0 BS equ 8 TAB equ 9 FW equ 9 LF equ 10 HOME equ 11 UP equ 12 PB equ 12 CR equ 13 UN equ 14 UO equ 15 ESC_GR equ 16 ESC_RL equ 17 RN equ 18 RF equ 19 GTX equ 20 GTY equ 21 GTXY equ 22 NC equ 23 BN equ 24 IN equ 25 ON equ 26 PT equ 27 INVLD equ 31 Fn1 equ 1 Fn2 equ 2 Fn3 equ 3 Fn4 equ 4 Fn5 equ 5 Fn6 equ 6 Fn7 equ 14 Fn8 equ 15 CrsrU equ 16 CrsrD equ 17 HomKey equ 18 ClrKey equ 19 LftArw equ 20 UpArw equ 21 StopKy equ 22 RunKey equ 23 PndKey equ 24 CrsrL equ 8 CrsrR equ 30 @h0LDelKey equ 29 InstKy equ 28 ! equ 33 " equ !+1 Nmbr equ "+1 # Dllr equ Nmbr+1 $ Prcnt equ $25 % & equ $26 ' equ &+1 ( equ '+1 ) equ (+1 - equ $2d . equ -+1 / equ .+1 : equ $3a ; equ :+1 < equ ;+1 = equ <+1 > equ =+1 ? equ >+1 A equ $41 B equ A+1 C equ B+1 D equ C+1 E equ D+1 F equ E+1 G equ F+1 H equ G+1 I equ H+1 J equ I+1 K equ J+1 L equ K+1 M equ L+1 N equ M+1 O equ N+1 P equ O+1 Q equ P+1 R equ Q+1 S equ R+1 T equ S+1 U equ T+1 V equ U+1 W equ V+1 X equ W+1 Y equ X+1 Z equ Y+1 [ equ Z+1 \ equ [+1 @h0L] equ \+1 ^ equ ]+1 _ equ ^+1 ` equ $60 a equ `+1 b equ a+1 c equ b+1 d equ c+1 e equ d+1 f equ e+1 g equ f+1 h equ g+1 i equ h+1 j equ i+1 k equ j+1 l equ k+1 m equ l+1 n equ m+1 o equ n+1 p equ o+1 q equ p+1 r equ q+1 s equ r+1 t equ s+1 u equ t+1 v equ u+1 w equ v+1 x equ w+1 y equ x+1 z equ y+1 { equ z+1 | equ {+1 } equ |+1 ~ equ }+1 *** Variables r0l equ 2 r0h equ 3 r1l equ 4 r1h equ 5 r2l equ 6 r2h equ 7 r3l equ 8 r3h equ 9 r4l equ 10 r4h equ 11 r5l equ 12 r5h equ 13 r6l equ 14 r6h equ 15 @h0Lr7l equ 16 r7h equ 17 r8l equ 18 r8h equ 19 r9l equ 20 r9h equ 21 r10l equ 22 r10h equ 23 r11l equ 24 r11h equ 25 r12l equ 26 r12h equ 27 r13l equ 28 r13H equ 29 r14l equ 30 r14h equ 31 r15l equ 32 r15h equ 33 a0l equ $fb a0h equ $fc a1l equ $fd a1h equ $fe a2l equ $70 a2h equ $71 a3l equ $72 a3h equ $73 a4l equ $74 a4h equ $75 a5l equ $76 a5h equ $77 a6l equ $78 a6h equ $79 a7l equ $7a a7h equ $7b a8l equ $7c a8h equ $7d a9l equ $7e a9h equ $7f dskBBf equ $8000 flHead equ $8100 DirHd equ $8200 TrScTb equ $8400 EntrBf equ $8500 curDrv equ $8489 dskOpF equ $848a kyData equ $8504 msData equ $8505 @h0L X *** LBlackout 2L *** Code starts here. begin jmp start jump past variables, tables, etc... scrcol mem 1 storage for screen colors bordrc mem 1 storage for border color pointp wrd procss pointer to process table Xahdpnt wrd ahead pointer to position in FillRam table that indicates screen colors Xdatapt wrd spdata pointer to sprite data xplace wrd 160 initial xpos of sprite yplace byt 90 initial ypos of sprite procss wrd prrtn1,1 process table: two processes wrd prrtn2,1 prrtn1 lda kyData process 1: check for "r" key... cmp #$72 "L@rL" = L@rLestart, or L@rLeset, or whatever bne notyet r hit? lda #0 yes, restore colors... sta kyData clear keyData input jsr InitIO get access to VIC chip lda bordrc sta 53280 restore old border color jsr DoneIO restore GEOS memory configuration X lda ahdpnt set a0 to point to table position for screen colors... X sta a0l lda ahdpnt+1 sta a0h lda scrcol get old screen colors ldy #0 sta (a0l),y set color to be stored in color memory jsr i_FlRm i_FillRam wrd 1000 1000 locations wrd $8c00 starting at beginning of color memory ahead mem 1 colors to use will go here jmp EDskTp EnterDeskTop, done notyet rts "r" was not hit, do nothing prrtn2 lda #2 process 2: move sprite... sta r3l sprite #2 lda xplace set sprite xpos... sta r4l lda xplace+1 sta r4h lda yplace set sprite ypos... sta r5l jsr PosSpr PosSprite (position sprite) X0L lda xplace find new x and y positions... cmp #60 60 + 1*256 is at right edge bne onemor low byte 60? lda xplace+1 yes, test high byte... beq onemor high byte 1? lda #0 yes, put xpos at left edge... sta xplace sta xplace+1 lda yplace move ypos down... cmp #178 178 is at bottom bne down1 ypos already at bottom? lda #2 yes, put ypos at top... sta yplace rts done down1 inc yplace no, move ypos down four scan lines... inc yplace inc yplace inc yplace rts done onemor lda xplace not at right edge, move right by two... clc adc #2 sta xplace bcc zzyzx over horizontal "seam"? inc xplace+1 yes, increment high byte zzyzx rts done X0L *** This is the initialization code. *** It blanks the screen, saving the old screen colors. *** It then displays the "ACTIVE" sprite *** and starts the two processes. L start jsr NewDsk NewDisk jsr MseOff MouseOff (blanks mouse) lda $8c00 representative color byte from matrix sta scrcol save it for restoring colors later jsr i_FlRm i_FillRam wrd 1000 number of bytes of color memory wrd $8c00 color memory starts here byt 0 foreground & background both 0 (black) jsr InitIO get access to VIC chip lda 53280 get border color sta bordrc save it for restoring color later lda #0 0 = black sta 53280 make border black lda #11 11 = dark grey sta 53289 make "ACTIVE" sprite (#2) dark grey jsr DoneIO restore GEOS memory configuration lda #2 draw sprite #2... sta r3l lda datapt set pointer to picture... sta r4l lda datapt+1 sta r4h jsr DrawSp DrawSprite lda #2 turn on sprite #2... sta r3l jsr EnblSp EnablSprite lda pointp set pointer to process table... sta r0l lda pointp+1 sta r0h lda #2 2 processes jsr InitPr InitProcesses ldx #0 process 1 jsr RstrtP RestartProcess (activate process 1) ldx #1 process 2 jsr RstrtP LRestartProcess (activate process 2)L X0 rts done X0L spdata byt 0,%01111110,0 data for "ACTIVE" sprite picture... byt 1,%11100011,128 byt 3,%10100111,%11000000 byt 7,%00111110,%11100000 byt 7,0,%11100000 byt 15,1,%11110000 byt 15,1,%11110000 byt 15,%10011011,%11110000 byt 15,%10111101,%11110000 byt 15,%10111111,%11110000 byt 15,%10001111,%11110000 byt 7,7,%11100000 byt 7,%10000111,%11100000 byt 3,%11001111,%11000000 byt 1,%11101111,128 byt 0,%01101110,0 byt %01100011,%01110101,%00010111 byt %10010100,%00100101,%00010100 byt %11110100,%00100101,%00010110 byt %10010100,%00100100,%10100100 byt %10010011,%00100100,%01000111 byt 0 place holder byte SB documentationXPRG formatted GEOS file V1.0AWrite Image V2.0geoWrite V1.1@ K. 9* t9```8Fe 897 E* H E8 8 (888888 8(@888888  Springboard Assembler V1.9 Documentation @ 8(8888888 by Jim Holloway  Please send $5.00 to the author at:  @Eigenmann Hall 1456 Bloomington, IN 47406 to help support this and future projects. OPERATION: The Springboard Assembler takes geoWrite files (any version), and uses them as 6502 assembly source files. It can assemble up to sixteen files into a sixteen-module GEOS application. There is no need for a linker. The assembler converts the source files directly into GEOS application format. The assembler can also produce a printer listing of the object code, along with any errors, symbol table, and error count. Two disk drives can be used as follows: If the assembler is opened on Drive A, then all source files must also be on Drive A, as will the object file (application). If the assembler is opened on Drive B, then the source files must still be on Drive A, but the object file (application) will be assembled onto Drive B. This works well with a RAM disk, if you have a REU. The Springboard is a two-pass assembler. On the first pass, it will construct a symbol table. If any errors are encountered during pass one, the assembler will not continue to pass two, and no object file will be produced (for safety's sake). SYMBOLS: Symbols, or "labels",  @must start on the first character of a line . No tabs, spaces, or any other character may be placed before a label. A label can contain up to six ASCII characters. The assembler allows some forward referencing of yet-undefined labels. Any instruction that is a constant number of bytes (e.g.: JMP, BEQ, etc.) can use forward referencing. However, instructions that can be two or three bytes long depending on the size of their operand (zero-page vs. absolute), like LDA, STA, INC, etc., cannot use forward-referenced labels. Their operands must have already been defined in the file. MNEMONICS: The Springboard Assembler supports all standard 6502 mnemonics and addressing modes. Accumulator addressing is performed with an at-sign (@) and not an "A", however. For example: ROR @, LSR @. This is so "A" or "a" can be used as a label.  @Mnemonics must be preceded by a space or tab. DIRECTIVES: There are five assembly directives that are recognized by the assembler: ADR, MEM, EQU, BYT, and WRD.  @Directives must be preceded by a space or tab. ADR changes the beginning assembly address of a file (module). It must be the first instruction of a file (besides comments or EQUates). This directive should be used only when assembling a multi-module application - at the beginning of each module. The address should be set to wherever the module will load into memory. The first module will always default to $400 (standard for applications). ADR is for the assembler's use and does not become part of the object file. [ADR mod1, ADR $3000] 8(8888888 EQU  must be preceded by a label. It will then set this label equal to the value of its operand. Again, no memory is used by this directive. [seven EQU 7, A EQU $40+1] MEM is used to set aside a specific number of bytes for later use by the application. These bytes will initially contain 0's. [MEM 256, MEM block+1000] BYT is used to store byte data. The data must be separated by commas, and cannot contain spaces or tabs. [BYT 0,1,2,3,4,5,255 , BYT H,e,l,l,o,32,t,h,e,r,e,0] WRD is used to store word data. As with the BYT directive, the data must be saperated by commas, and cannot contain spaces or tabs. [WRD left,right , WRD $4800,20,700] COMMENTS: A comment may be placed after the last operand (if any) on a line. It must be separated from the last operand by a space or tab. [start LDX #50  @start counter , DEX  @counter-1 ] An entire line may be declared as a comment by beginning the line with an asterisk (*). [* Main routine starts here.] OFFSETS: An offset may be added to any operand (except @ in accumulator addressing). This is useful setting address pointers. For example: LDA point, STA r0l,  @LDA point+1 , STA r0h. NUMBER TYPES: The assembler accepts decimal (1, 0, 792, 65535), binary (%01001, %1011, %11110000, %10101001001011), and hexadecimal ($45, $a, $7CAE) numbers as operands. ASCII STRINGS: The assembler does not directly support ASCII strings or characters. However, a one-character label may be defined with an EQU directive that equates the character with its ASCII value. [a EQU $61, b EQU a+1, etc.] Then the BYT directive can be used to construct string of these values. [ BYT H,e,l,l,o,32,t,h,e,r,e,!,0] ADDRESS POINTERS: Again, the assembler does not provide access to the low and high bytes of an address directly, but there is still a simple way to do it. Just define a "pointer word" that points to the desired address and access the low and high bytes from the pointer word. For example: block MEM 256 bpoint WRD block ... LDA bpoint STA a0l LDA bpoint+1 STA a0h (this moves the address of "block" into a0l/h). EXAMPLE FILE: See "springboard.ex" for an example source file. SPRINGBOARDY.PRG formatted GEOS file V1.0?uY!}}9xeeyAssembler V1.9Jim Holloway Takes geoWrite files and assembles them into GEOS applications.  },L,L # a PAGE 2AAABBBBBBBBBBCCCCCCCDDDEIIIJJLLLLNOPPPPRRRRSSSSSSSTTTTTTEMBWADNSCCEIMNPRVVLLLLMPPEEEONNNMSDDDSORHHLLOOTTBEEETTTAASXXYQEYRDCDLCSQTIELKCSCDIVPXYCXYRCXYPRAXYRPAAPAPLRISCCDIAXYXYXASAUMTDRL͉` ` !4CRbr!<L^r (8<GP_ctx| P#   l" $  44+&Error(s) = Z'/(  9 R z Module:Another Source File? (Zx6 (Zx6 2Please send $5.00 to the author at: ?Eigenmann Hall 1456 IBloomington, IN 47406 Vto help support this and future projects.`  © 9 ? 9 #6 #6 Springboard Assembler by Jim Holloway (C) 1988 by Jim Holloway    Z 2BEGIN BCANCEL   V©  L,¥      V¥L,¥i    V¥ L `d (  8   L,© 9L,( $ KKMake Listing File? @  _  0  KK *x `Write Image ViL iL iL `` n  x`iL ȱ`v`wv n03v-vivwvޥwxآv h­xx`wvix88 ~v h­vȭv` L ` `H P^ ȩ   Lf_` y  A' y y y    `h   `  ȩ   `O   UU ULL i0 ʈ  `82u34 5`=ڭ2*`. ,,\<... rsr$`%0 L`:A [a{rsLsurttut,)``xy`x01``x0`:`AGagLx0`:`80  `` rxsyx%h$L1 +L # #x+# xtyu  #Lp`   `x   ` ZL =8nLp   `x    ` Zx  LL =            Lp x   + ` Zx L = .L "L L  L    i L idL( iiL? ii'LYx+xt yu``   +`x   + ` Zx Lxtyu = 4L (L L L `   i  id ii ii'mm`xyx@  `#  `(L> x , )-L` xXxL x) ` x,L ` xYyL ` x,L> ` xXxYy` ` `? ? ? ?   !x"yx  L `okNot Enough BlocksInvalid TrackInsufficient SpaceFull DirectoryFile Not FoundBad BAMUnopened VLIR FileInvalid RecordOut Of RecordsStruct MismatchBuffer OverflowCancel ErrorDevice Not FoundSymbol Multiply DefinedSymbol Table OverflowSymbol Not FoundForeward ReferenceCan't Change Address HereBranch Out Of RangeNumber Too LargeIllegal Directive/MnemonicIllegal OperandLine Not CompleteIllegal Symbol NameImproper Use of a PrefixIllegal Addressing ModeQuotes Disallowed HereField Too LongCan't Find Printer DriverRan Off End of Line???Hdr Blk Not ThereNo SyncData Blk Not ThereData Chksum Err???Wr Ver ErrWr Pr OnHdr Chksum Err???Disk ID Mismatch????????????Byte Decode Err5 xEy fyfx`  ``yixy8xxyyx0``x`    L$`  LG` x x x234` # L`   `` ` 2 L`  L`  L>`2` 23` 34` 4`xx# xxxx2 xx xx xL xx xL ` `  `r , rsL`     ` L L L L "./;GHIJKUZ_ijku   mei}yaqu-%)=9!15 ,$0PpXʈMEI]YAQULl JNF^V  Hh(*.&>6jnf~v@`8x5 TxUy x95<84 0 ` `` ` `xyexxyeyy ʊxʈm m `JJJJi0:i )i0:i JJJJi0:i )i0:i   *4= '  '  ' `x x` 'xL]" '  'xL]" `  Š`! !    `! ! iii ~8  J©`   ! " VL,Unrecoverable Error:# `ɀ`#,#`  m ` xx xx `# `## Š` ȱ  ` Š` L?$   ` J©`   V i?L, ѥ Š L/#`Please insert into Drive A a disk containing: `Γ     `## Š` ȭ ȭ ȭ ȭ ȭ ȭ ``  i`i`` x` e ŠL/# y    `   # # V i?L,­#ϭ## Š`l" @& ( 6Please input Object File name: x`yxx xxixyLo&x`yrx?  r x 'x '       L&   r r ' ' `~JJJJi0:i ~)i0:i `    ` `#?<<<<<?<<<<Springboard Program / %  %L_( % (    b& yL,­ 3'L/# (Ll(`    ` ( P A S S  1  L) ( P A S S  2  L)`   #L/# # $   tŠ   yL/# ˜ w­  $iL) =٩(   ŠLb) ~%  )L) S- LQ) , #*   `L)2   ( L*L*59L*8L*<L+:L+;L,2*L) , L*  ) } h  (  L*L*   (L*  !m iL) ! "L/#L) h :  !L+ !mmL)L)|}|}| ! "L/#|ҥ}L) hL*r, rsL+rrsr, L* h  rrУsL+ (L+r, 蝀rsL,%rrsr, 蝀L* h "蝀 rL*rІsL, (Ld,5 O KGC?;73/!+#'$#%&)*,- .2`` bvwrs   `  $ `  $ ^ `  $ ` < G` ,#B*L. g# .L-   .L-x .L- 12L. iL.59L.8L.<L/:LF/;Lc/2*L. , L.   L.iL. } hU5[WSOKGC?;73/+ '"#'(+/01  L. .L. # `LS-     ` h .L.mmL.vwL. h .L.vȭvL.$ h .L.L.  L. #8m#iL. ### miL.