Mercurial > hg > Members > kono > nitros9-code
view 3rdparty/packages/rof/rescue.asm @ 1357:0de024ea86cd
Added new style comments
author | boisy |
---|---|
date | Wed, 17 Sep 2003 21:56:49 +0000 |
parents | 35d038fa4f85 |
children |
line wrap: on
line source
******************************************************************** * Rescue - Rescue On Fractalus Program * * $Id$ * * NOTE: This code assembles to the EXACT same object code found on * the original Rescue on Fractalus disk. * * Header for : RESCUE * Module size: $5B18 #23320 * Module CRC : $C4EB06 (Good) * Hdr parity : $6B * Exec. off : $0013 #19 * Data size : $6000 #24576 * Edition : $30 #48 * Ty/La At/Rv: $11 $81 * Prog mod, 6809 Obj, re-ent, R/O * * Edt/Rev YYYY/MM/DD Modified by * Comment * ------------------------------------------------------------------ * 1995/07/23 Boisy G. Pitre * Disassembled at 10:11:57. nam Rescue ttl Rescue On Fractalus Program ifp1 use defsfile endc * standard paths stdin equ 0 stdout equ 1 stderr equ 2 *** data layout *** ccpals set $537 palettes palstr set $547 temporary spot to write palette cmds. button set $59e joystick button value (latest) joyx set $59f joystick X value (latest) joyy set $5a0 joystick Y value (latest) joyxold set $5a1 old joystick X value joyyold set $5a2 old joystick Y value oldecho set $cbb original echo state of path options oldpause set $cbc original pause state of path options scrnnum set $cbd screen number of screen via SS.AScrn scrnaddr set $cbf screen address of screen via SS.AScrn mtype set $cc9 monitor type (1 == RGB, 0 = CMP) * path options tmppath set $ccb pathopts set $ccc echoflg set $cd0 pauseflg set $cd3 * rofvbuf set $0f43 scorebuf set $121c panelbuf set $154f bodybuf set $1761 headsbuf set $1af9 larmsbuf set $21eb lipsbuf set $2b00 tylg set Prgrm+Objct atrv set ReEnt+rev rev set $01 mod eom,name,tylg,atrv,start,size u0000 rmb 1 u0001 rmb 1 u0002 rmb 1 u0003 rmb 1 u0004 rmb 1 u0005 rmb 1 u0006 rmb 1 u0007 rmb 1 u0008 rmb 1 u0009 rmb 1 u000A rmb 1 u000B rmb 1 u000C rmb 1 u000D rmb 1 u000E rmb 1 u000F rmb 1 u0010 rmb 1 u0011 rmb 1 u0012 rmb 1 u0013 rmb 1 u0014 rmb 1 u0015 rmb 2 u0017 rmb 1 u0018 rmb 1 u0019 rmb 2 u001B rmb 1 u001C rmb 1 u001D rmb 1 u001E rmb 1 u001F rmb 1 u0020 rmb 1 u0021 rmb 1 u0022 rmb 1 u0023 rmb 1 u0024 rmb 1 u0025 rmb 1 u0026 rmb 1 u0027 rmb 1 u0028 rmb 1 u0029 rmb 3 u002C rmb 2 u002E rmb 2 u0030 rmb 1 u0031 rmb 1 u0032 rmb 1 u0033 rmb 1 u0034 rmb 1 u0035 rmb 1 u0036 rmb 1 u0037 rmb 1 u0038 rmb 1 u0039 rmb 1 u003A rmb 1 u003B rmb 1 u003C rmb 1 u003D rmb 1 u003E rmb 1 u003F rmb 1 u0040 rmb 1 u0041 rmb 1 u0042 rmb 1 u0043 rmb 1 u0044 rmb 1 u0045 rmb 1 u0046 rmb 1 u0047 rmb 1 u0048 rmb 1 u0049 rmb 1 u004A rmb 1 u004B rmb 1 u004C rmb 1 u004D rmb 1 u004E rmb 1 u004F rmb 1 u0050 rmb 1 u0051 rmb 1 u0052 rmb 1 u0053 rmb 1 u0054 rmb 1 u0055 rmb 1 u0056 rmb 1 u0057 rmb 1 u0058 rmb 1 u0059 rmb 1 u005A rmb 1 u005B rmb 1 u005C rmb 1 u005D rmb 1 u005E rmb 1 u005F rmb 1 u0060 rmb 1 u0061 rmb 1 u0062 rmb 1 u0063 rmb 1 u0064 rmb 1 u0065 rmb 1 u0066 rmb 1 u0067 rmb 1 u0068 rmb 1 u0069 rmb 1 u006A rmb 1 u006B rmb 1 u006C rmb 1 u006D rmb 2 u006F rmb 1 u0070 rmb 1 u0071 rmb 1 u0072 rmb 1 u0073 rmb 1 u0074 rmb 3 u0077 rmb 1 u0078 rmb 1 u0079 rmb 1 u007A rmb 1 u007B rmb 1 u007C rmb 1 u007D rmb 1 u007E rmb 1 u007F rmb 1 u0080 rmb 1 u0081 rmb 1 u0082 rmb 1 u0083 rmb 1 u0084 rmb 1 u0085 rmb 1 u0086 rmb 1 u0087 rmb 2 u0089 rmb 3 u008C rmb 10 u0096 rmb 3 u0099 rmb 2 u009B rmb 3 u009E rmb 1 u009F rmb 1 u00A0 rmb 1 u00A1 rmb 1 u00A2 rmb 1 u00A3 rmb 1 u00A4 rmb 1 u00A5 rmb 1 u00A6 rmb 1 u00A7 rmb 1 u00A8 rmb 3 u00AB rmb 3 u00AE rmb 1 u00AF rmb 1 u00B0 rmb 1 u00B1 rmb 1 u00B2 rmb 1 u00B3 rmb 1 u00B4 rmb 2 u00B6 rmb 2 u00B8 rmb 1 u00B9 rmb 1 u00BA rmb 1 u00BB rmb 1 u00BC rmb 1 u00BD rmb 1 u00BE rmb 1 u00BF rmb 1 u00C0 rmb 1 u00C1 rmb 1 u00C2 rmb 1 u00C3 rmb 1 u00C4 rmb 1 u00C5 rmb 1 u00C6 rmb 1 u00C7 rmb 1 u00C8 rmb 2 u00CA rmb 1 u00CB rmb 1 u00CC rmb 1 u00CD rmb 1 u00CE rmb 2 u00D0 rmb 2 u00D2 rmb 1 u00D3 rmb 1 u00D4 rmb 3 u00D7 rmb 1 u00D8 rmb 1 u00D9 rmb 1 u00DA rmb 1 u00DB rmb 1 u00DC rmb 2 u00DE rmb 1 u00DF rmb 1 u00E0 rmb 2 u00E2 rmb 2 u00E4 rmb 2 u00E6 rmb 1 u00E7 rmb 1 u00E8 rmb 1 u00E9 rmb 1 u00EA rmb 1 u00EB rmb 1 u00EC rmb 1 u00ED rmb 1 u00EE rmb 1 u00EF rmb 1 u00F0 rmb 1 u00F1 rmb 1 u00F2 rmb 1 u00F3 rmb 1 u00F4 rmb 1 u00F5 rmb 1 u00F6 rmb 1 u00F7 rmb 1 u00F8 rmb 1 u00F9 rmb 1 u00FA rmb 1 u00FB rmb 1 u00FC rmb 1 u00FD rmb 1 u00FE rmb 1 u00FF rmb 58 u0139 rmb 2 u013B rmb 6 u0141 rmb 2 u0143 rmb 2 u0145 rmb 68 u0189 rmb 2 u018B rmb 2 u018D rmb 4 u0191 rmb 2 u0193 rmb 2 u0195 rmb 68 u01D9 rmb 2 u01DB rmb 2 u01DD rmb 323 u0320 rmb 356 u0484 rmb 771 u0787 rmb 634 u0A01 rmb 92 u0A5D rmb 1 u0A5E rmb 225 u0B3F rmb 1 u0B40 rmb 91 u0B9B rmb 1 u0B9C rmb 587 u0DE7 rmb 1276 u12E3 rmb 80 u1333 rmb 404 u14C7 rmb 4618 u26D1 rmb 38 u26F7 rmb 779 u2A02 rmb 2974 u35A0 rmb 556 u37CC rmb 10292 size equ . name fcs /RESCUE/ * Genesis! start equ * * install our signal handler leax >sighand,pcr point to the signal handler routine ldu #$0000 clear U os9 F$Icpt install the signal handler orcc #IntMasks mask interrupts (to load S, apparently) lds #$5E23 load stack pointer andcc #^IntMasks unmask interrupts * read a character rdloop lda #$04 read one character lbsr routines do read routine bcc rdloop ...until we get something * welcome the user to ROF and get monitor type lbsr Welcome do welcome message and monitor type * set the monitor type lda #stdout to standard out ldb #SS.Montr ldx >mtype get value of montype flag os9 I$SetStt set it! * following code section needs to open a window and get address in 68K * get a 160x192x16 game screen using SS.AScrn lda #stdout to standard out ldb #SS.AScrn SS.AScrn is the man! ldx #$0002 160x192x16 (16k) os9 I$SetStt set it! lbcs Rtn3 if error, exit stx >scrnaddr save off screen address sty >scrnnum save off screen number * save old pause/echo options then turn them off lda #stdin from standard input clrb SS.Opt ldx #pathopts to this address (NR) os9 I$GetStt get it! lda >echoflg get echo state sta >oldecho save it lda >pauseflg get pause state sta >$0CBC save it clr >echoflg we don't want no echo! clr >pauseflg we don't want no pause! lda #$01 ...to standard output clrb SS.Opt * NOTE! d1 should still be set to SS.Opt here ldx #pathopts to this address (NR) * NOTE! a0 should still be set to $CCC(a6) here os9 I$SetStt set it man! * read in the rtitle.c file into memory ldu #$1000 address to store title (NR) leax >rtitle,pcr file to open (title) lda #$01 routine to perform (1) lbsr routines perform it! * copy the title into actual display memory lbsr copyscr * the following code needs to do a select to the new window * now display the title on the screen ldy >scrnnum get screen number lda #stdout to standard out ldb #SS.DScrn display screen os9 I$SetStt show it! lbcs Rtn3 say bye-bye if error * now let's set up the palettes ldy #ccpals address to store palettes ldd #$FF0F A = FF (white), B = offset palloop sta b,y store A at B,Y decb decrement B bpl palloop until B < 0 leay >pals1,pcr point to new palettes lbsr setpal set 'em! clr >$0CFE clr >$0CFF clr >$0D00 clr >$0D01 clr >$05F8 L00B2 clr >$0CF4 lda #$07 sta >$0CF1 ldd #$3D9A std >$0CF2 * read in 'rship' file ldu #$1000 at this address (NR) leax >rship,pcr this file lda #$01 routine 1 lbsr routines do it! pshs y no. of bytes read lda #$30 sta >$0CEC lbsr getjoyxy joystick routine tst >$05F8 bne L00DF clra lbsr L3600 L00DF lbsr L019E puls y lbsr copyscr * read the contents of the 'rofvar' file into memory ldu #rofvbuf address to store data ldy #$3002 no. of bytes to read leax >rofvar,pcr file to open clra routine to perform (0) lbsr routines perform it! * read the contents of the 'panel1' file into memory ldu #panelbuf address to store data ldy #$0212 no. of bytes to read leax >panel1,pcr file to open clra routine to perform (0) lbsr routines perform it! lbsr L252D * read the contents of the 'body' file into memory ldu #bodybuf address to store data ldy #$0398 no. of bytes to read leax >body,pcr file to open clra routine to perform (0) lbsr routines perform it! * read the contents of the 'heads' file into memory ldu #headsbuf address to store data ldy #$06F2 no. of bytes to read leax >heads,pcr file to open clra routine to perform (0) lbsr routines perform it! * read the contents of the 'larms' file into memory ldu #larmsbuf address to store data ldy #$0915 no. of bytes to read leax >larms,pcr file to open clra routine to perform (0) lbsr routines perform it! * read the contents of the 'lips' file into memory ldu #lipsbuf address to store data ldy #$0190 no. of bytes to read leax >lips,pcr file to open clra routine to perform (0) lbsr routines perform it! * read the contents of the 'scores' file into memory leax >scores,pcr file to open ldu #scorebuf address to store data ldy #$00B9 no. of bytes to read clra routine to perform (0) lbsr routines perform it! lda >$12D4 A = last byte of scores file sta >$0D02 save A ldu #$2C90 ldx #$0007 ldy #headsbuf heads buffer L0163 sty ,u++ ldd ,y++ mul leay d,y leax -$01,x bne L0163 ldu #$2C9E ldx #$0005 ldy #larmsbuf larms buffer L0179 sty ,u++ ldd ,y++ mul leay d,y leax -$01,x bne L0179 ldu #$2CA8 ldx #$0005 ldy #lipsbuf lips buffer L018F sty ,u++ ldd ,y++ mul leay d,y leax -$01,x bne L018F lbra L030B L019E leay >pals2,pcr lda >$0CCA ldb #$10 mul leay d,y bra setpal * loop until a joystick button is pressed (not used?) L01AC ldd #SS.Joy ldx #$0001 os9 I$GetStt tsta beq L01AC rts * palette code * A = color number * B = palette position (0-15) writepal pshs u,y,x,b,a save off regs ldx #ccpals point to palette address cmpa b,x compare A to B off this address beq writpal2 if equal, don't bother writing sta b,x else store A at B off this address ldy #$1B31 palette set code sty >palstr save at this address stb >palstr+2 store palette sta >palstr+3 store value for palette ldx #palstr at this address ldy #$0004 four bytes lda #stdout ...to standard out os9 I$Write write it! writpal2 puls pc,u,y,x,b,a restore & return * Y = address of 16 palette entries setpal ldb #15 set up count setpal2 lda b,y load B off Y bsr writepal set palette decb decrement count bpl setpal2 if > 0, keep on rts * copy routine: * X = source * U = destination * Y = bytes to copy copyscr ldu >scrnaddr U = destination (screen address) ldx #$1000 X = source (screen data) (NR) lbra rldecode sighand rti * show welcome screen, ask for composite/rgb monitor type * stay here until we get a legal (C/R) response Welcome clr >mtype clear high byte of montype flag welcome2 leax >welcmess,pcr ldy #$0061 no. of bytes to write lbsr WriteOut write out the welcome message clr >$0CCA clear lower byte of montype flag keyloop inc >$0CF0 lbsr Rtn4 read 1 character bcs keyloop branch back if not ready * A = ASCII code of key pressed cmpa #'c 'c'? beq L0220 cmpa #'C 'C'? beq L0220 inc >$0CCA cmpa #'r 'r'? beq L0220 cmpa #'R 'R'? bne welcome2 key not legal, print welcome again L0220 lbra clearscr fcc "/TERM" fcb C$CR rofvar fcc "ROFVAR" fcb C$CR rtitle fcc "RTITLE.C" fcb C$CR rship fcc "RSHIP.C" fcb C$CR panel1 fcc "PANEL1" fcb C$CR body fcc "BODY" fcb C$CR heads fcc "HEADS" fcb C$CR larms fcc "LARMS" fcb C$CR lips fcc "LIPS" fcb C$CR scores fcc "SCORES" fcb C$CR legs fcc "LEGS" fcb C$CR welcmess fcb C$FORM,C$CR fcb C$LF,C$LF,C$LF,C$LF fcc " WELCOME TO RESCUE ON FRACTALUS" fcb C$CR,C$LF,C$LF fcc " C = COMPOSITE (TV), R = RGB" fcb C$CR,C$LF fcc " MONITOR TYPE (C/R) ? " pals2 fcb $00,$3f,$38,$07,$00,$02,$12,$01,$1b,$0a,$19,$28,$1f,$34,$04,$04 fcb $00,$3f,$38,$07,$00,$10,$12,$09,$1b,$0a,$19,$28,$1f,$34,$22,$04 pals1 fcb $00,$3f,$38,$07,$1b,$19,$06,$3c,$2e,$26,$24,$20,$36,$32,$31,$04 * standard palettes (restore upon exit) stdpals fcb $12,$36,$09,$24,$3f,$1b,$2d,$34,$00,$12,$00,$3f,$00,$12,$00,$34 L030B ldx #$0CBB ldu #$0000 clra lbsr L0896 ldy #$0D03 L0319 ldb #$C0 L031B ldx >scrnaddr screen address L031E stx ,y++ leax <$50,x decb bne L031E ldy #$0E83 ldb #$60 ldx #$5CF7 L032F stx ,y++ leax <-$50,x decb bne L032F L0337 ldd >scrnaddr screen address addd #$3C00 std >$05A8 addd #$0200 std >$05AA clr >$0171 clr >$0174 clr >$0117 clr >$011B L0352 ldx #$0009 ldu #$0CF5 clra lbsr L0896 clr <u0085 lda #$04 sta <u007A lda #$01 sta <u00E6 lda #$10 sta >$0CFA L036B tst <u0085 bne L0352 clr <u0070 clr >$017A clr <u00F6 ldx #$0019 ldu #$00F5 clra lbsr L0896 lbsr getjoyxy clr <u0079 clr >$011D clr <u00FB clr >$0601 clr >$0157 clr >$0616 clr >$0603 clr >$0604 lda #$80 sta >$010F sta >$0110 sta >$0111 sta >$011E sta >$0112 sta <u0084 lda #$66 sta >$0177 lda #$FF sta <u00D8 sta >$05F8 lda >$0D02 cmpa >$0CFA bls L03C3 sta >$0CFA L03C3 lda #$01 sta <u00E6 L03C7 lbsr L0412 lbra L2D4E L03CD rts L03CE pshs a L03D0 lda <u005F bne L03D7 lda ,s+ rts L03D7 bra L03FF L03D9 pshs a lda #$3C bra L03E3 L03DF pshs a lda #$01 L03E3 sta <u005F bne L03D0 L03E7 pshs a lda #$02 bra L03E3 L03ED pshs a lda #$05 bra L03E3 L03F3 pshs a lda #$0A bra L03E3 L03F9 pshs a lda #$14 bra L03E3 L03FF ldb #$14 L0401 lda #$73 L0403 deca bne L0403 decb bne L0401 inc >$019B dec <u005F bne L03FF puls pc,a L0412 lbsr L019E lbsr L3CE2 ldy #$0009 lbsr L3E0A lbsr L2B0C lda #$08 lbsr L3E92 clr >$0109 clr >$010A clr >$0107 lbsr L393A ldx #$0011 lda #$12 sta <u00CE lbsr L3E39 L043D lbsr L3FFC lbsr L57C2 lbsr L3AF9 lbsr L57CC lbsr L3F51 lbsr L3F4E lbra L56F3 L0452 lda #$01 sta >$011E ldy #$0000 ldb #$4F L045D clr ,y+ decb bpl L045D lda >$0CF0 sta <u0033 clr >$0603 clr >$0604 clr >$05EF clr >$05F0 dec >$05F0 clr <u0073 clr >$0CFD clr <u0057 lda #$E8 sta <u003B lda #$18 sta <u003C clra ldy #$0896 ldx #$00A0 lbsr L0896 lbsr L37E9 tst <u00F8 bne L04A0 lbsr L0ACE lbsr L0BDF lbsr L07C6 L04A0 tst <u0085 bne L04AC lda #$14 sta <u0054 lda #$02 bra L04AE L04AC lda #$01 L04AE sta <u005C clra lbsr L2A9A L04B4 lbsr L065E lbsr L107C lbsr L14E9 ldb <u0072 bmi L04C4 lbsr L3D3E L04C4 lbsr L3F61 tst <u0072 bpl L04CE lbsr L3EA1 L04CE lbsr L1AA6 lbsr L23EB lbsr L279E lbsr L0614 tst >$08A6 beq L04E2 lbsr L577B L04E2 tst >$010E lbne L06A4 lda <u00FB cmpa #$0E bcc L0501 tst <u0085 beq L04F8 lbsr L45B1 bra L0501 L04F8 lda <u004A cmpa #$01 bne L0501 lbsr L460D L0501 tst <u00FD beq L0508 lbsr L4522 L0508 lbsr L5712 lda <u00FB cmpa #$20 bcc L052B lbsr L5712 lda <u004F bne L052B lda <u00FB beq L052B tst <u0071 bpl L052B ldb <u007E cmpb #$02 beq L052B lda #$0A lbsr L3600 L052B lbsr L107C lbsr L14E9 ldb <u0072 bmi L0538 lbsr L3D3E L0538 lbsr L3F61 tst <u0072 bpl L0542 lbsr L3EA1 L0542 lbsr L1AA6 lbsr L23EB lbsr L279E lbsr L0614 tst >$08A6 beq L0556 lbsr L577B L0556 tst >$010E lbne L06A4 tst >$0912 beq L0588 tst >$0911 beq L0588 lbsr L425B tst <u004A bpl L0588 ldx #$0011 lda #$12 sta <u00CE lbsr L3E39 lda #$12 ldb #$11 ldx #$0011 stb <u00CE inc <u0070 lbsr L3E39 dec <u0070 L0588 lda >$0911 sta >$0912 lda <u004F sta >$0911 lda #$01 cmpa <u004F beq L05BC ldb <u007E cmpb #$02 beq L05C4 tst <u004E beq L05B5 lda #$02 sta <u004E lda #$0E sta <u0054 ldb #$10 ldx #$0010 stb <u00CE lbsr L3E39 L05B5 tst <u00FD beq L05BC lbsr L4522 L05BC ldb <u007E cmpb #$02 lbne L04B4 L05C4 lda #$03 sta <u005C lda #$FF sta <u0077 ldb #$80 stb >$0938 stb >$0939 lda <u0047 cmpa #$40 lbcs L04B4 stb <u0084 clr >$0107 clr >$010B lbsr L089D clr <u005C lda #$08 lbsr L3E92 clr >$0109 clr >$010A clr >$0107 ldb #$01 stb >$0110 lbsr L393A ldx #$0011 lda #$12 sta <u00CE lbsr L3E39 lbsr L043D clr >$012D clr <u0057 lbra L03C7 L0614 lda >$0601 beq L065D cmpa #$14 beq L063B lbsr L2A9A lbsr L35E7 lda >$0116 lbsr L2A9A lda >$0601 cmpa #$13 bne L065A lda #$14 sta >$0601 lda #$05 sta >$0614 rts L063B dec >$0614 beq L0654 lbsr L56E2 anda #$3F ldb #$0B lbsr writepal lbsr L56E2 anda #$3F ldb #$0C lbra writepal L0654 lda >$0116 lbsr L2A9A L065A clr >$0601 L065D rts L065E ldb >$0604 beq L06A3 ldy #$3D5E ldx #$3D64 decb L066B lda b,x cmpa b,y bne L06A0 decb bpl L066B ldb >$0604 cmpb #$06 bcs L06A3 bhi L06A0 lbsr L3341 ldd #$0000 lbsr L23DE ldu #$3F47 leax >legs,pcr lda #$05 lbsr routines lbsr L5564 L0695 lda #$04 lbsr routines bcs L0695 clrb lbra Rtn3 L06A0 clr >$0604 L06A3 rts L06A4 lda #$80 sta <u0084 clr <u005C lda #$10 sta <u00D0 L06AE dec <u00D0 bne L06AE L06B2 lbsr L3341 lda #$20 sta <u0077 L06B9 lbsr L56E2 anda #$3F clrb lbsr writepal lbsr L35BC ldx #$0014 lbsr L5819 dec <u0077 bne L06B9 lda #$00 clrb lbsr writepal ldx #$0064 lbsr L5819 ldy #$0000 L06DF lda >$0CF5,y cmpa >$0CFE,y beq L06FD bcs L0705 ldy #$0004 L06EF lda >$0CF4,y sta >$0CFD,y leay -$01,y bne L06EF bra L0705 L06FD leay $01,y cmpy #$0004 bcs L06DF L0705 lda #$01 sta >$0127 lbsr L32D5 lbra L00B2 lda #$08 sta <u00D0 L0714 dec <u00D0 bne L0714 clr <u0052 clr <u0077 tst >$010E lbne L06A4 rts lbsr L56E2 tfr a,b andb #$07 clra tfr d,y lda >$3C17,y tfr a,b lbsr L03CD L0737 lbsr L56E2 anda #$3F adca #$60 sta <u0077 lbsr L35BC lbsr L56E2 anda #$07 bne L0737 rts L074B lbsr L0754 lbsr L0799 lbra L06B2 L0754 lda #$15 sta <u00CA bra L075F L075A lbsr L56E2 bpl L0765 L075F anda #$0F sta <u00CC inc <u00CC L0765 lbsr L56E2 anda #$0F lsla eora #$1F lsla sta <u00CE ldx #$0004 L0773 ldb <u00CC L0775 lda <u00CE L0777 deca nop nop nop nop nop bne L0777 decb bne L0775 leax -$01,x bne L0773 dec <u00CA bpl L075A rts L078B lbsr L56E2 cmpa <u0077 bcc L0792 L0792 clra L0793 deca bne L0793 bmi L078B rts L0799 ldd #$9999 lbsr L23DE lbsr L23EB lbsr L279E ldx #$001E lbsr L5819 ldd #$AAAA lbsr L23DE lbsr L23EB lbsr L279E ldx #$001E lbsr L5819 clr <u0059 clr <u0058 clr <u0057 lbra L236A L07C6 ldy #$02BC clrb L07CB clr ,y+ decb bne L07CB ldy #$0008 lda <u007A cmpa #$01 bne L07DE ldy #$0010 L07DE lbsr L0813 lda <u007A cmpa #$04 bcs L07F0 ldy #$0004 lda #$01 lbsr L0815 L07F0 ldx #$0000 L07F3 lbsr L56E2 cmpa <u00F1 bcc L0806 lda >$01BC,x bpl L0806 lda #$64 sta >$02BC,x L0806 tfr x,d addb #$43 tfr d,x bne L07F3 rts L080F ldy #$0001 L0813 lda #$C8 L0815 sta >$087D tfr y,d stb >$0910 L081D lbsr L56E2 ldb <u0032 stb >$090F clra tfr d,x L0828 lda >$01BC,x cmpa #$30 bcc L084D lda >$02BC,x bne L084D ldy #$002D L083A cmpb >$09D1,y beq L084D leay -$01,y bne L083A lda >$087D sta >$02BC,x bra L0858 L084D tfr x,d addb #$43 tfr d,x cmpb >$090F bne L0828 L0858 dec >$0910 bne L081D rts L085E ldx #$0000 L0861 tfr x,d stb >$087F lda >$02BC,x cmpa #$01 bne L088B ldx #$002D L0871 lda >$09D1,x cmpa >$087F beq L088B leax -$01,x bne L0871 clra ldb >$087F tfr d,x lda #$80 sta >$02BC,x rts L088B clra ldb >$087F addb #$43 tfr d,x bne L0861 rts L0896 sta ,u+ leax -$01,x bne L0896 rts L089D tst <u0077 beq L08AD lbsr L35BC lda <u0077 suba #$10 bcc L08AB clra L08AB sta <u0077 L08AD inc >$019B bne L08B5 inc >$019A L08B5 dec >$010C lbeq L0912 ldb <u0049 orb >$0616 beq L08C6 lbsr L49F0 L08C6 tst <u005C beq L08D6 dec <u005D lbsr L393A lda <u004C beq L08D6 lbsr L3BA6 L08D6 lda >$0103 bmi L08FE dec >$0103 bpl L0908 lda <u0054 bne L08FE lda <u0085 bne L08F8 lda <u007E cmpa #$00 bne L08F3 inc >$0103 bra L0908 L08F3 lbsr L2B0C bra L0908 L08F8 ldy #$0013 bne L0905 L08FE clra ldb <u0054 tfr d,y beq L0908 L0905 lbsr L41BE L0908 lda <u0055 beq L090F lbsr L41FD L090F lbra L0A45 L0912 lbsr L3C7C lda #$02 sta >$010C tst <u0085 beq L092A tst >$089D bne L0940 tst <u005C bne L0972 L0927 lbra L09B3 L092A cmpa <u005C bne L0927 tst >$0112 bne L0972 lda <u004F beq L0940 sta >$0103 lda #$0F sta <u0054 bra L0972 L0940 lda #$80 sta <u0078 lda <u0049 ora >$0616 bne L0972 lda #$7E sta >$08B3 clr >$08EF lda #$9B suba >$3A9C sta >$08B5 clr >$089D lda #$0C sta >$08F1 lda #$01 sta >$08F0 lda #$18 sta <u0049 clr >$0616 lbsr L35EF L0972 lbsr L3B82 lbsr getjoyxy dec <u005E bpl L097E inc <u005E L097E bne L099D ldb #$FF stb >$0112 tst >button beq L099D clr >$0112 bra L099D lda <u007E cmpa #$00 bne L0999 lda #$95 bra L09AB L0999 lda #$4C bra L09AB L099D lbsr L4019 bcs L09B3 lbsr readch cmpa #$E0 bcs L09AB anda #$DF L09AB tfr a,b clra tfr d,x lbsr L4046 L09B3 lda <u005C lbeq L0A45 lbsr L4B6F lbsr L0C9D clr >$0128 clrb lda <u0047 suba #$3C bcs L09D7 lsra lsra lsra tfr a,b cmpb #$03 bcs L09D7 ldb #$03 inc >$0128 L09D7 lslb lslb cmpb >$0617 beq L09E7 stb >$0617 lda >$0116 lbsr L2A9A L09E7 lda <u00E7 bne L0A11 dec >$0114 bne L0A11 lda #$80 sta >$0114 inc >$0115 ldb >$0115 lsrb lsrb andb #$0F clra tfr d,y lda >$3C1F,y cmpa >$0116 beq L0A11 sta >$0116 lbsr L2A9A L0A11 lbsr L3A13 lbsr L3B4D lbsr L3866 lbsr L3E04 lbsr L3F61 dec >$0113 bne L0A45 lda >$08AE beq L0A32 dec >$08AE bne L0A32 lbsr L460D L0A32 lda <u004E bne L0A40 lda <u0056 adda #$01 daa sta <u0056 lbsr L41FD L0A40 lda #$0F sta >$0113 L0A45 lbsr L0A66 lda >$0115 anda #$3F cmpa #$28 bne L0A59 lda <u00F5 adda #$0F bcc L0A65 bra L0A63 L0A59 cmpa #$30 bne L0A65 lda <u00F5 suba #$0F bcs L0A65 L0A63 sta <u00F5 L0A65 rts L0A66 tst >$0CEC bne L0A6C rts L0A6C lda <u007E cmpa #$02 beq L0AAD lda <u0071 bmi L0AAD eora #$7F lsra lsra suba #$10 sta >$0CEC lda >$0887 sta <u00CC lda >$0888 lbsr L0AB8 sta <u00CA lda >$088A sta <u00CC lda >$088B lbsr L0AB8 adda <u00CA sta <u00CA lda #$0F suba <u00CA adda >$0CEC bpl L0AA5 clra L0AA5 lsra lsra adda #$02 sta >$0CEC rts L0AAD lda >$019B anda #$0F bne L0AB7 dec >$0CEC L0AB7 rts L0AB8 lsr <u00CC rora lsr <u00CC rora lsr <u00CC rora lsr <u00CC rora suba #$08 bpl L0AC9 nega L0AC9 rts L0ACA clr >$0CEC rts L0ACE ldx #$01BC ldb #$00 L0AD3 lbsr L56E2 anda #$3F ora #$80 sta ,x+ decb bne L0AD3 ldb #$01 stb <u00AE lbsr L56E2 sta <u00B2 tfr a,b clra tfr d,x lbsr L56E2 anda #$3F sta >$01BC,x L0AF6 lda <u00AE sta <u00AF lbsr L0B93 lda <u00AE cmpa <u00AF beq L0B59 L0B03 lbsr L56E2 lda <u0032 anda #$40 beq L0B1C tst <u0032 bmi L0B16 lda #$10 ldb #$FF bra L0B2A L0B16 lda #$F0 ldb #$01 bra L0B2A L0B1C tst <u0032 bmi L0B26 lda #$01 ldb #$10 bra L0B2A L0B26 lda #$FF ldb #$F0 L0B2A sta <u00B0 stb <u00B1 lbsr L0B6C bpl L0B03 ldb <u00B2 addb <u00B0 clra tfr d,x lbsr L56E2 anda #$3F sta >$01BC,x tfr x,d addb <u00B0 tfr d,x lbsr L56E2 anda #$3F sta >$01BC,x tfr x,d stb <u00B2 lbra L0AF6 L0B59 dec <u00AE bne L0B5E rts L0B5E clra ldb <u00AE tfr d,x lda >$0618,x sta <u00B2 lbra L0AF6 L0B6C ldb <u00B2 addb <u00B0 clra tfr d,x lda >$01BC,x bpl L0B91 tfr x,d addb <u00B0 tfr d,y lda >$01BC,y bpl L0B91 tfr x,d addb <u00B1 tfr d,x lda >$01BC,x bmi L0B92 L0B91 clra L0B92 rts L0B93 lda #$01 sta <u00B0 lda #$10 sta <u00B1 lbsr L0B6C bpl L0BA3 lbsr L0BD1 L0BA3 lda #$FF sta <u00B0 lda #$F0 sta <u00B1 lbsr L0B6C bpl L0BB3 lbsr L0BD1 L0BB3 lda #$10 sta <u00B0 lda #$FF sta <u00B1 lbsr L0B6C bpl L0BC3 lbsr L0BD1 L0BC3 lda #$F0 sta <u00B0 lda #$01 sta <u00B1 lbsr L0B6C bmi L0BD1 rts L0BD1 clra ldb <u00AE tfr d,x lda <u00B2 sta >$0618,x inc <u00AE rts L0BDF ldb <u007A decb beq L0BE9 lbsr L56E2 anda #$07 L0BE9 bne L0C1D lbsr L56E2 anda #$70 ora #$80 sta <u00D2 ldy #$0000 L0BF8 tfr y,d andb #$80 bne L0C15 tfr y,d andb #$08 bne L0C15 lbsr L56E2 cmpa <u00D2 bcc L0C15 lda >$01BC,y anda #$7F sta >$01BC,y L0C15 leay $01,y cmpy #$0100 bne L0BF8 L0C1D rts L0C1E ldd >$0909 lslb rola rolb rola pshs a clrb stb >$0903 lda ,s lsla bcc L0C33 dec >$0903 L0C33 lsla bcc L0C37 decb L0C37 eorb >$0903 stb >$0905 ldd #$0000 rolb tfr d,x puls a anda #$3F sta >$0936 sta >$0937 eora #$3F inca sta >$0936,x clra ldb >$0937 lslb rola leax >L59E7,pcr leax d,x lda ,x ldb <u0041 lbsr L1040 sta >$0904 tsta bne L0C70 sta >$0903 L0C70 lda >$0903 beq L0C78 neg >$0904 L0C78 ldb >$0936 clra lslb rola leax >L59E7,pcr leax d,x lda ,x ldb <u0041 lbsr L1040 sta >$0906 tsta bne L0C94 sta >$0905 L0C94 lda >$0905 beq L0C9C neg >$0906 L0C9C rts L0C9D ldd >$090B lsra rorb lsra rorb lsra rorb lsra rorb std >$09CC std >$085C std >$0861 ldd >$090D lsra rorb lsra rorb lsra rorb lsra rorb std >$09CE std >$085E std >$0863 ldd <u0047 cmpa #$40 bcs L0CCD lda #$3F L0CCD lslb rola lslb rola std >$09D0 lbsr L0E2D lda >$0860 lsra adca #$00 lsra adca #$00 sta >$0858 lda #$37 suba >$0858 bcc L0CEB clra L0CEB sta >$087A lda >$09D0 suba >$0860 bcs L0D02 sta <u007D lda >$08A2 bne L0D19 lbsr L0F3D bra L0D19 L0D02 lda <u007E cmpa #$00 beq L0D0B lbsr L0F1E L0D0B inc <u0047 clr <u0048 clr <u007D lda <u003E bpl L0D19 inc <u003E clr <u003F L0D19 lda #$37 suba <u0047 bcc L0D2D nega adda >$087A cmpa #$38 bcs L0D29 lda #$38 L0D29 sta >$087A clra L0D2D sta >$087B lbsr L0D7A lda >$017A cmpa #$08 bcs L0D55 lda #$01 sta >$08FC lda <u0057 bne L0D79 lda #$10 sta <u0057 lda #$10 lbsr L2A9A lbsr L35E7 lda >$0116 lbra L2A9A L0D55 tst >$08FC beq L0D79 cmpa #$04 bcc L0D79 clr >$08FC clr <u0052 lda #$10 lbsr L2A9A lbsr L35E7 lda >$0116 lbsr L2A9A lda <u0057 cmpa #$20 bcc L0D79 clr <u0057 L0D79 rts L0D7A lsr >$089A bcs L0D83 inc >$089A rts L0D83 ldd >$0869 ldy #$0004 L0D8A asra rorb leay -$01,y bne L0D8A std >$0865 ldd >$086B ldy #$0004 L0D9A asra rorb leay -$01,y bne L0D9A std >$0867 lsr >$0899 bcs L0DEC inc >$0899 ldd >$0861 subd >$0867 std >$085C ldd >$0863 addd >$0865 std >$085E lbsr L0E2D lsr >$0860 lda >$0860 lsra sta >$0856 lda >$09D0 lsra adda <u0037 adda #$0F suba >$0860 bcc L0DD8 clra L0DD8 sta >$0855 lda #$36 suba >$0855 bcc L0DE3 clra L0DE3 sta >$0896 sta >$08A7 L0DE9 lbra L3FAC L0DEC ldd >$0861 addd >$0867 std >$085C ldd >$0863 subd >$0865 std >$085E lbsr L0E2D lsr >$0860 lda >$0860 lsra sta >$0857 lda >$09D0 lsra suba <u0037 adda #$0F suba >$0860 bcc L0E19 clra L0E19 sta >$0855 lda #$36 suba >$0855 bcc L0E24 clra L0E24 sta >$0897 sta >$08A8 L0E2A lbra L3FAC L0E2D lda >$085E lsla lsla lsla lsla sta <u006F ldb >$085C andb #$0F orb <u006F clra tfr d,y lda >$01BC,y sta >$084F tfr y,d incb andb #$0F orb <u006F tfr d,y lda >$01BC,y sta >$0850 lda <u006F adda #$10 sta <u006F ldb >$085C andb #$0F orb <u006F clra tfr d,y lda >$01BC,y sta >$0851 tfr y,d incb andb #$0F orb <u006F tfr d,y lda >$01BC,y sta >$0852 ldb >$085D stb >$0859 ldy #$0008 clra L0E89 lsl >$0859 bcs L0E9D lsr >$0850 lsr >$084F adca >$084F leay -$01,y bne L0E89 bra L0EAA L0E9D lsr >$084F lsr >$0850 adca >$0850 leay -$01,y bne L0E89 L0EAA sta >$0853 stb >$0859 ldy #$0008 clra L0EB5 lsl >$0859 bcs L0EC9 lsr >$0852 lsr >$0851 adca >$0851 leay -$01,y bne L0EB5 bra L0ED6 L0EC9 lsr >$0851 lsr >$0852 adca >$0852 leay -$01,y bne L0EB5 L0ED6 sta >$0854 lda >$085F sta >$085A ldy #$0008 clra L0EE4 lsl >$085A bcs L0EF8 lsr >$0854 lsr >$0853 adca >$0853 leay -$01,y bne L0EE4 bra L0F05 L0EF8 lsr >$0853 lsr >$0854 adca >$0854 leay -$01,y bne L0EE4 L0F05 sta >$0860 lsra lsra lsra lsra pshs a adda >$0860 sta >$0860 puls a lsra adca >$0860 sta >$0860 rts L0F1E inc >$017A lda <u0042 ora #$40 sta >$08FA lda <u00FB beq L0F3C ldx #$0010 tfr x,d stb <u00CE lbsr L3E39 lda <u0041 beq L0F3C dec <u0041 L0F3C rts L0F3D clr >$017A clr >$08FA lda <u004E bne L0F3C ldx #$0010 lda #$11 sta <u00CE lbra L3E39 L0F51 ldd >$0909 lslb rola lslb rola sta <u007F lda >$090A lsra lsra lsra anda #$07 sta >$086D bsr L0F7A ldd <u0080 std >$0869 lda <u007F adda #$40 sta <u007F bsr L0F7A ldd <u0080 std >$086B rts L0F7A inc <u007F lbsr L0FDC ldd <u0080 std >$0876 lda <u0082 sta >$0878 dec <u007F lbsr L0FDC ldd <u0080 std >$0873 lda <u0082 sta >$0875 lda >$086D sta >$086F ldy #$0003 L0FA2 lsr >$086F bcc L0FB7 ldd <u0081 addd >$0877 std <u0081 lda <u0080 adca >$0876 sta <u0080 bra L0FC5 L0FB7 ldd <u0081 addd >$0874 std <u0081 lda <u0080 adca >$0873 sta <u0080 L0FC5 lsl >$0875 rol >$0874 rol >$0873 lsl >$0878 rol >$0877 rol >$0876 leay -$01,y bne L0FA2 rts L0FDC clra ldb <u007F lslb rola lslb rola sta >$086E lsrb lsrb ldx #$3C33 eorb a,x clra lslb rola leay >L59E7,pcr leay d,y ldx #$3C2F ldb >$086E lda b,x bne L1007 sta <u0080 ldd ,y std <u0081 rts L1007 ldd #$0000 subd ,y std <u0081 lda #$00 sbca #$00 sta <u0080 rts L1015 sta <u00C0 ldd <u00BE sta <u00C1 bpl L1024 ldd #$0000 subd <u00BE std <u00BE L1024 lda <u00C0 mul sta <u00BF lda <u00C0 ldb <u00BE mul addb <u00BF adca #$00 std <u00BC tst <u00C1 bpl L103F ldd #$0000 subd <u00BC std <u00BC L103F rts L1040 mul tstb bpl L1045 inca L1045 rts L1046 lsl <u00C5 rol <u00C4 lsl <u00C3 rol <u00C2 L104E lda <u00C2 lsla bpl L1046 pshs x ldx #$0008 ldd <u00C4 L105A lslb rola bmi L1062 lsla bpl L106C rora L1062 subd <u00C2 bcc L1071 addd <u00C2 andcc #^Carry clear carry flag bra L1073 L106C rora andcc #^Carry clear carry flag bra L1073 L1071 orcc #Carry set carry flag L1073 rol <u00C6 leax -$01,x bne L105A puls x rts L107C lbsr L1D87 lbsr L12A9 lda <u00A8 bmi L109F rola bmi L109A ldd >$09FF std >$0A01 ldd >$0A5B std >$0A5D ldd #$3B15 bra L10AA L109A ldd #$3B42 bra L10AA L109F rola bmi L10A7 ldd #$3AE8 bra L10AA L10A7 ldd #$3ABB L10AA std <u009E lda <u00A3 lsla lsla lsla lsla sta <u00C8 ldb <u00A1 andb #$0F clra tfr d,x ldy #$0000 clr >$05AC L10C2 pshs y ldy <u009E ldb >$05AC lda b,y puls y sta <u00C7 bpl L10EF lda <u00C8 suba #$10 sta <u00C8 ldd >$09FF,y addd <u00B4 std >$0A01,y ldd >$0A5B,y subd <u00B6 std >$0A5D,y lbra L114A L10EF rol <u00C7 bpl L110F lda <u00C8 adda #$10 sta <u00C8 ldd >$09FF,y subd <u00B4 std >$0A01,y ldd >$0A5B,y addd <u00B6 std >$0A5D,y bra L114A L110F rol <u00C7 bpl L112C leax -$01,x ldd >$09FF,y subd <u00B6 std >$0A01,y ldd >$0A5B,y subd <u00B4 std >$0A5D,y lbra L1180 L112C rol <u00C7 lbpl L1180 leax $01,x ldd >$09FF,y addd <u00B6 std >$0A01,y ldd >$0A5B,y addd <u00B4 std >$0A5D,y bra L1180 L114A rol <u00C7 bpl L1166 leax -$01,x ldd >$0A01,y subd <u00B6 std >$0A01,y ldd >$0A5D,y subd <u00B4 std >$0A5D,y bra L1180 L1166 rol <u00C7 bpl L1180 leax $01,x ldd >$0A01,y addd <u00B6 std >$0A01,y ldd >$0A5D,y addd <u00B4 std >$0A5D,y L1180 clra suba <u00A6 sta <u00C7 tfr x,d andb #$0F orb <u00C8 lda #$00 tfr d,x lda >$01BC,x ldu #$0B11 ldb >$05AC sta b,u sbca <u00A5 pshs cc ldb <u00C7 lsra rorb lsra rorb lsra rorb lsra rorb puls cc bcc L11AF ora #$F0 L11AF std >$0AB7,y ldu #$09D2 ldb >$05AC leau b,u tfr x,d stb ,u lda >$0A5D,y bmi L120F bne L11CF lda >$0A5E,y cmpa #$20 bcs L120F L11CF lda >$0A01,y bpl L11F6 clra suba >$0A02,y sta <u00C7 lda #$00 sbca >$0A01,y cmpa >$0A5D,y bcs L120C bne L11F2 lda <u00C7 cmpa >$0A5E,y bcs L120C L11F2 lda #$40 bra L1211 L11F6 cmpa >$0A5D,y bcs L120C bne L1208 lda >$0A02,y cmpa >$0A5E,y bcs L120C L1208 lda #$20 bra L1211 L120C clra bra L1211 L120F lda #$80 L1211 ldu #$0BF7 ldb >$05AC sta b,u inc >$05AC leay $02,y cmpy #$005A lbne L10C2 ldu #$3B6F ldy #$0000 clr >$05AC L1230 clra ldb ,u tfr d,x stb >$093A inc >$05AC leay $02,y leau u0001,u lda >$0BF7,x bmi L126A bne L1299 clra ldb ,u tfr d,x inc >$05AC leay $02,y leau u0001,u lda >$0BF7,x bpl L12A0 clr >$0BF7,x clra lslb tfr d,x ldd #$0020 std >$0A5D,x bra L12A0 L126A clra ldb ,u tfr d,x inc >$05AC leay $02,y leau u0001,u lda >$0BF7,x bne L12A0 pshs y clra ldb >$093A lslb tfr d,y ldd #$0020 std >$0A5D,y ldy #$0BF7 ldb >$093A clr b,y puls y bra L12A0 L1299 inc >$05AC leau u0001,u leay $02,y L12A0 cmpy #$0018 lbcs L1230 rts L12A9 ldd <u00B4 std <u00BE lda <u00A4 lbsr L1015 ldd <u00BC std >$09FF ldd <u00B6 std <u00BE lda <u00A2 lbsr L1015 ldd >$09FF subd <u00BC std >$09FF ldd <u00B6 std <u00BE lda <u00A4 lbsr L1015 ldd <u00BC std >$0A5B ldd <u00B4 std <u00BE lda <u00A2 lbsr L1015 ldd <u00BC addd >$0A5B std >$0A5B ldd #$0000 subd >$0A5B std >$0A5B rts L12F1 pshs y tfr x,d lslb tfr d,y lda >$0BF7,x ora #$10 sta >$0BF7,x clrb lda >$0A5E,y sta <u00C3 lda >$0A5D,y sta <u00C2 lda >$0A01,y bmi L131F sta <u00C4 lda >$0A02,y sta <u00C5 bra L132E L131F clra suba >$0A02,y sta <u00C5 lda #$00 sbca >$0A01,y sta <u00C4 L132E lda <u00C4 cmpa <u00C2 bcs L1365 bne L133C lda <u00C5 cmpa <u00C3 bcs L1365 L133C lsl <u00C3 rol <u00C2 incb cmpb #$08 bne L132E lda >$0A01,y bmi L1358 lda #$40 sta >$0B3F,y clr >$0B40,y lbra L13DA L1358 lda #$C0 sta >$0B3F,y clr >$0B40,y lbra L13DA L1365 pshs b lbsr L104E puls b decb bmi L13AF clra L1370 lsl <u00C6 rola decb bpl L1370 sta <u00C7 lsra pshs a lda <u00C6 rora adda <u00C6 sta <u00C6 puls a adca <u00C7 lsra ror <u00C6 lsra ror <u00C6 sta <u00C7 lda >$0A01,y bmi L13A1 lda <u00C7 ldb <u00C6 addd #$0080 std >$0B3F,y bra L13DA L13A1 ldb #$80 subb <u00C6 lda #$00 sbca <u00C7 std >$0B3F,y bra L13DA L13AF clr >$0B3F,y lda >$0A01,y bmi L13CA lda <u00C6 lsra orcc #Carry set carry flag adca <u00C6 rora lsra ora #$80 sta >$0B40,y bra L13DA L13CA lda <u00C6 lsra orcc #Carry set carry flag adca <u00C6 rora lsra coma adda #$81 sta >$0B40,y L13DA clr <u00B3 ldd >$0A5D,y std <u00C2 lda >$0AB7,y bmi L13F0 ldb >$0AB8,y std <u00C4 bra L13FF L13F0 clra suba >$0AB8,y sta <u00C5 lda #$00 sbca >$0AB7,y sta <u00C4 L13FF lda <u00C4 cmpa <u00C2 bcs L1433 bne L140D lda <u00C5 cmpa <u00C3 bcs L1433 L140D lsl <u00C3 rol <u00C2 inc <u00B3 ldb <u00B3 cmpb #$08 bne L13FF lda >$0AB7,y bmi L1429 ldd #$4000 std >$0B9B,y lbra L14A8 L1429 ldd #$C000 std >$0B9B,y lbra L14A8 L1433 lbsr L104E dec <u00B3 bmi L147B clra L143B lsl <u00C6 rola dec <u00B3 bpl L143B sta <u00C7 lsra pshs a lda <u00C6 rora adda <u00C6 sta <u00C6 puls a adca <u00C7 lsra ror <u00C6 lsra ror <u00C6 sta <u00C7 lda >$0AB7,y bmi L146D lda <u00C7 ldb <u00C6 addd #$0080 std >$0B9B,y bra L14A8 L146D ldb #$80 subb <u00C6 lda #$00 sbca <u00C7 std >$0B9B,y bra L14A8 L147B lda #$00 sta >$0B9B,y lda >$0AB7,y bmi L1498 lda <u00C6 lsra orcc #Carry set carry flag adca <u00C6 rora lsra adda #$80 sta >$0B9C,y bra L14A8 L1498 lda <u00C6 lsra orcc #Carry set carry flag adca <u00C6 rora lsra coma adda #$81 sta >$0B9C,y L14A8 lda >$0B3F,y bmi L14DB bne L14E2 ldb >$0B40,y lsrb lsrb lsrb clra pshs y tfr d,y ldb >$082B,y puls y bmi L14CF L14C4 clra addd >$0B9B,y std >$0B9B,y puls pc,y L14CF lda #$FF addd >$0B9B,y std >$0B9B,y puls pc,y L14DB ldb >$082B bmi L14CF bra L14C4 L14E2 ldb >$084A bmi L14CF bra L14C4 L14E9 clr <u00DA clr <u00DB clr <u00DC clr <u00DE ldd >scrnaddr screen address addd #$3C00 std >$05A8 addd #$0200 std >$05AA ldd <u003E std >$097C lbsr L1DF4 lda #$80 sta >$0950 sta >$0952 sta >$098E sta >$0990 sta >$0992 sta >$0994 tst <u00BB bne L1525 sta >$0956 sta <u0083 L1525 clr >$095C clr >$096E clr >$0970 tst <u0072 bmi L1535 inc >$0970 L1535 ldb #$50 ldx #$06CC ldy #$0000 L153E sty ,x++ decb bne L153E sty >$084C L1548 ldb >$3B6F,y stb >$093A leay $01,y clra tfr d,x lda >$0BF7,x lbmi L15EF anda #$20 lbne L15EF leay $01,y sty >$084C ldb >$3B6E,y clra tfr d,x lda >$0BF7,x bmi L15F1 anda #$40 bne L15F1 lda >$0BF7,x anda #$10 bne L158B pshs x lbsr L12F1 lbsr L17BF puls x L158B lda >$0B11,x sta >$0C9D tfr x,d lslb tfr d,x ldd >$0B3F,x std >$0C25 ldd >$0B9B,x std >$0C61 ldb >$093A clra tfr d,x lda >$0BF7,x anda #$10 bne L15BD pshs x lbsr L12F1 lbsr L17BF puls x L15BD lda >$0B11,x sta <u00A0 tfr x,d lslb tfr d,x ldd >$0B3F,x std >$054B ldd >$0B9B,x std >$054D ldx #$0000 lbsr L1E2C inc >$0179 lda >$0179 anda #$03 bne L15E9 lbsr L089D L15E9 ldy >$084C bra L15F1 L15EF leay $01,y L15F1 sty >$084C cmpy #$0090 lbne L1548 lbsr L2361 lbsr L089D lda >$0950 sta >$0938 lda >$0952 sta >$0939 lda <u0083 bpl L1618 clr >$010B bra L162E L1618 lsra lsra inca cmpa #$0A bcs L1621 lda #$09 L1621 sta >$010B cmpa >$08A5 beq L162E sta >$08A5 bcc L162E L162E lda >$098E asra adda #$80 sta >$08AC lda >$0990 asra asra adda #$0F sta >$08AB lda >$0992 sta >$0996 lda >$098A sta >$089E lda >$098C sta >$08A0 tst <u0085 beq L165A lbsr L1CFA L165A lda >$0970 beq L1661 lda #$74 L1661 sta >$08A6 ldd >$09CC std >$0972 ldd >$09CE std >$0974 ldd >$09D0 std >$0976 ldd >$0869 std >$0978 ldd >$086B std >$097A ldd >$097C std >$097E ldy #$0020 L168C lda >$083B suba >$082A,y asra adca #$00 sta >$08CE,y leay -$01,y bne L168C tst >$096E bne L16A9 orcc #Carry set carry flag lda <u00EC bra L16DF L16A9 tst <u004E beq L16B0 clra bra L16DD L16B0 ldd <u0039 lslb rola lslb rola lslb rola sta <u00D2 ldd >$099C lslb rola lslb rola lslb rola suba <u00D2 bpl L16C8 nega L16C8 sta <u00D2 lda >$0902 asra asra sta <u00D3 lda >$09A0 asra asra suba <u00D3 bpl L16DB nega L16DB adda <u00D2 L16DD andcc #^Carry clear carry flag L16DF adca <u0060 bpl L16E5 lda #$7F L16E5 suba <u00EC bcc L16EA clra L16EA sta <u0060 ldb <u0084 cmpa #$20 bcs L16F9 tstb bmi L16FE ldb #$80 bra L16FE L16F9 cmpb #$80 bne L16FE clrb L16FE stb <u0084 tst <u0052 beq L1718 lda <u007A suba #$06 bcs L1718 pshs a lbsr L56E2 puls a cmpa <u0032 bcs L1718 lbsr L085E L1718 tst >$08A9 beq L1739 ldx #$0000 clr >$08A9 lda #$F9 L1725 cmpa >$02BC,x bcc L1732 inc >$02BC,x inc >$08A9 L1732 leax $01,x cmpx #$0100 bne L1725 L1739 tst <u0071 bpl L179A tst <u004E bne L179A lda <u00EF beq L179A dec <u00F0 bne L179A sta <u00F0 lbsr L56E2 cmpa #$80 bcc L179A adda #$4A tfr a,b clra tfr d,x lbsr L56E2 anda #$1F adda #$6E cmpa >$0682,x bls L179A sta >$088B lda #$80 suba >$088B lsla adda #$2C sta >$088B tfr x,d subb #$10 stb >$0888 clr >$0887 clr >$088A clr >$088E clr >$0893 lbsr L179B lda #$7F sta <u0072 sta <u0071 lda #$01 sta >$0CEC lda <u0047 sta >$0895 L179A rts L179B lbsr L56E2 sta >$088F lda #$00 rola ldb >$0888 cmpb #$50 bcc L17AC coma L17AC sta >$088E clrb lbsr L56E2 suba #$80 bcc L17B8 decb L17B8 stb >$0893 sta >$0894 L17BE rts L17BF tfr x,d lslb tfr d,u ldb >$09D2,x clra tfr d,y tst >$02BC,y beq L17BE tst >u0A5D,u bne L17DF lda >u0A5E,u cmpa #$22 bcs L17BE L17DF tfr x,d stb >$0944 lda >$01BC,y lbmi L18B0 lda <u00BB lbne L19AC lda >$02BC,y cmpa #$02 lbcs L19AC cmpa #$F8 lbcc L19AC lda >u0A01,u sta <u006A sta <u006B lsla bcc L1815 lda #$FF suba <u006B sta <u006B orcc #Carry set carry flag L1815 ror <u006A bcc L181B inc <u006A L181B lda >u0A5D,u sta >$094A cmpa <u006B lbcs L19AC adda <u006B cmpa >$0956 lbcc L19AC sta >$0956 lsr <u006B suba <u006B sta <u0083 lda <u006A sta >$0950 lda >$094A sta >$0952 lda >$09D2,x sta >$094E lda #$64 sta <u0051 lda >u0B3F,u lbne L18AE lda >u0B9B,u lbne L18AE lda >u0B40,u sta <u0050 lda >u0B9C,u sta <u0051 sta <u0086 tfr x,d stb <u0087 lbra L19AC L1875 cmpy #$0050 bcs L18AE cmpy #$00AF bcc L18AE tfr y,d subb #$50 ldu #$0E83 clra lslb rola ldu d,u tfr x,d subb #$30 bcs L18AE cmpb #$A0 bcc L18AE lda #$F0 lsrb leau b,u bcc L189F coma L189F sta <u00AB anda <u0069 pshs a lda <u00AB coma anda ,u ora ,s+ sta ,u L18AE rts L18AF rts L18B0 lda >u0B9B,u bne L18AF lda >u0B3F,u bne L18AF ldd #$1427 std >$093C lda #$66 sta <u0069 ldd >u0A5D,u std <u0063 clra ldb >u0B9C,u stb <u0062 tfr d,y ldb >u0B40,u stb <u0061 ldb >$09D2,x tfr d,x lda >$02BC,x cmpa #$FA bcs L18EF lbsr L1C4A lbra L194D L18EF clra ldb <u0061 tfr d,x subb #$30 bcs L1946 cmpb #$A0 bcc L1946 tfr y,d subb #$50 bcs L1946 cmpb >$069C,x bcs L1946 lda #$80 lbsr L1959 leax -$01,x lbsr L1A6A leax $01,x lda <u0047 cmpa #$37 bhi L194D lda #$01 sta >$0970 sta >$096E lda <u0072 bpl L194D lda <u004F bne L194D lbsr L56E2 bpl L194D lda >$095C bne L194D tfr x,d stb >$0958 tfr y,d stb >$095A lda <u0063 sta >$095C lbra L194D L1946 ldb >$0944 clra tfr d,x rts L194D lda <u0063 cmpa #$0D bcc L1946 clr >$0940 lbra L1D50 L1959 sta >$0986 lda <u0061 suba #$80 sta >$0980 bpl L1969 clra suba >$0980 L1969 sta >$0984 lda #$80 suba <u0062 sta >$0982 bpl L1979 clra suba >$0982 L1979 adda >$0984 bcs L19AB sta >$0984 adda <u0063 bcs L19AB cmpa >$0994 bcc L19AB sta >$0994 lda >$0984 sta >$0992 lda >$0980 sta >$098E lda >$0982 sta >$0990 lda >$0986 sta >$098A lda >$0988 sta >$098C L19AB rts L19AC lda >u0B9B,u bne L19AB lda >u0B3F,u bne L19AB ldd #$151F std >$093C lda >$0B11,x anda #$01 sta >$0988 sta >$0940 lda >u0B40,u sta <u0061 lda >u0B9C,u sta <u0062 ldd >u0A5D,u std <u0063 lda #$77 sta <u0069 clra ldb >$09D2,x tfr d,y lda >$02BC,y cmpa #$FA bcs L19F2 lbsr L1C4A L19F2 clra ldb <u0061 subb #$30 bcs L1A18 cmpb #$A0 bcc L1A18 tfr d,y lda <u0062 suba #$50 bcs L1A18 cmpa >$06CC,y bcs L1A18 clra lbsr L1959 lda <u0063 cmpa #$0D bcc L1A18 lbsr L1D50 L1A18 lda <u00BB bne L1A63 lda <u004F bne L1A63 lda >$010C cmpa #$01 bne L1A63 clra ldb >$09D2,x tfr d,y lda >$02BC,y cmpa #$02 bcs L1A63 cmpa #$F8 bcc L1A63 lda #$11 sta <u0069 clra ldb >u0B9C,u tfr d,y ldb >u0B40,u tfr d,x lbsr L1A6A leax -$01,x leay -$01,y lbsr L1A6A leax -$01,x leay $01,y lbsr L1A6A leax $01,x leay $01,y lbsr L1A6A L1A63 ldb >$0944 clra tfr d,x rts L1A6A cmpx #$0030 bcs L1AA5 cmpx #$00D0 bcc L1AA5 tfr y,d subb #$50 bcs L1AA5 cmpb #$5F bcc L1AA5 cmpb >$069C,x bls L1AA5 pshs y pshs b clra ldb <u00DC tfr d,y puls b stb >$03BC,y tfr x,d subb #$30 stb >$03DC,y lda <u0069 sta >$03FC,y inc <u00DC puls y L1AA5 rts L1AA6 dec >$095E bpl L1AC1 lbsr L56E2 anda <u00F2 sta >$095E lda >$0886 bne L1ABB lbsr L524C L1ABB clr <u0052 clr >$095C L1AC0 rts L1AC1 bne L1AC0 lda >$095C beq L1AC0 lda >$0958 sta >$0960 lda >$095A sta >$0962 lda #$01 sta >$0964 lda #$80 sta >$0961 sta >$0963 sta >$0965 clr <u006C clr >$0968 lbsr L56E2 lsla sta <u006D bcc L1AF3 dec <u006C L1AF3 lda >$099C bpl L1B00 cmpa #$FF bcc L1B08 clr <u006C bra L1B08 L1B00 cmpa #$02 bcs L1B08 lda #$FF sta <u006C L1B08 lbsr L56E2 lsla sta >$0969 dec >$0968 lda <u0084 cmpa #$07 beq L1B2D lda <u0060 coma lsra lsra lsra adda #$0C sta >$096B lda #$55 sta <u0069 lbsr L1B90 inc <u0052 rts L1B2D lda #$66 sta <u0057 clr <u006C lda #$67 suba >$0958 lsla sta <u006D bcc L1B3F dec <u006C L1B3F lda #$32 suba >$095A sta >$096B lda #$66 sta <u0069 lbsr L1B95 lda #$12 sta >$0601 lda #$10 sta <u004C inc <u0052 L1B59 ldb <u003E cmpb <u003B beq L1B65 decb cmpb <u003B beq L1B65 decb L1B65 stb <u003E ldb <u0039 lbsr L56E2 bpl L1B7A cmpb #$FB beq L1B84 decb cmpb #$FB beq L1B84 decb bra L1B84 L1B7A cmpb #$05 beq L1B84 incb cmpb #$05 beq L1B84 incb L1B84 stb <u0039 lda <u0041 suba #$08 bcc L1B8D clra L1B8D sta <u0041 rts L1B90 lbsr L56E2 bmi L1BEF L1B95 ldd <u006C subd #$0040 std <u006C clra ldb >$0960 tfr d,x ldb >$0962 tfr d,y cmpy #$0060 bcs L1BEC L1BAD lda >$0964 sta >$096C L1BB3 cmpx #$0030 bcs L1BC0 cmpx #$00D0 bcc L1BC0 lbsr L1875 L1BC0 leax $01,x dec >$096C bne L1BB3 ldd >$0964 addd >$096A std >$0964 ldd >$0960 addd <u006C std >$0960 tfr a,b clra tfr d,x lbsr L56E2 anda #$03 bne L1BE4 L1BE4 leay -$01,y cmpy #$0050 bcc L1BAD L1BEC lbra L35EF L1BEF clra ldb >$0960 tfr d,x ldb >$0962 tfr d,y L1BFA cmpx #$0030 bcs L1BEC cmpx #$00D0 bcc L1BEC cmpy #$0050 bcs L1BEC lda >$0964 sta >$096C L1C10 lbsr L1875 leay -$01,y cmpy #$0050 bcs L1C20 dec >$096C bne L1C10 L1C20 ldd >$096A addd >$0964 std >$0964 ldd >$0962 addd >$0968 std >$0962 tfr a,b clra tfr d,y lbsr L56E2 anda #$03 bne L1C3E L1C3E lda <u006C bmi L1C46 leax $01,x bra L1BFA L1C46 leax -$01,x bra L1BFA L1C4A tfr a,b andb #$03 pshs b clra lslb tfr d,x ldd >$1517,x std >$093C lda ,s+ bne L1C66 clr <u0069 lda #$11 sta >$0601 L1C66 lsr <u0063 ror <u0064 lsr <u0063 ror <u0064 lda #$77 sta <u0057 rts L1C73 tst <u0063 bne L1C7B clr <u0064 inc <u0063 L1C7B ldd #$1000 L1C7E dec <u0061 subd <u0063 bcc L1C7E lda <u0061 sta >$093E clr <u0067 clr <u0068 L1C8D clr <u0065 clr <u0066 clra ldb <u0067 lslb rola lslb rola addd >$093C std <u00D2 lda >$093E sta <u0061 L1CA2 ldb <u0065 tst >$0940 beq L1CAD ldb #$1F subb <u0065 L1CAD clra tfr d,x lsrb lsrb lsrb tfr d,y tfr x,d andb #$07 tfr d,x tfr y,d ldy <u00D2 lda b,y anda >$3C37,x beq L1CD9 clra ldb <u0061 tfr d,x ldb <u0062 tfr d,y lbsr L1875 leay $01,y lbsr L1875 L1CD9 inc <u0061 ldd <u0065 addd <u0063 std <u0065 cmpa #$20 bcs L1CA2 dec <u0062 dec <u0062 ldd <u0067 addd <u0063 std <u0067 cmpa #$0C bcs L1C8D ldb >$0944 clra tfr d,x rts L1CFA tst <u0049 bne L1D4F tst <u005C beq L1D4F lda <u0071 bpl L1D24 lda >$098E cmpa #$0C bcs L1D11 cmpa #$F5 bcs L1D4C L1D11 lda >$0990 cmpa #$0C bcs L1D1C cmpa #$F5 bcs L1D4C L1D1C clra ldb >$098A tfr d,x bra L1D3D L1D24 lda >$0888 cmpa #$48 bcs L1D4C cmpa #$98 bcc L1D4C lda >$088B cmpa #$24 bcs L1D4C cmpa #$60 bcc L1D4C ldx #$0001 L1D3D inc >$089C lda >$089C cmpa #$02 bcs L1D4F tfr x,d stb >$089D L1D4C clr >$089C L1D4F rts L1D50 clra ldb <u00DE tfr d,y lslb tfr d,x lda <u0062 sta >$041C,y lda <u0061 sta >$043C,y ldd <u0063 std >$045C,x lda <u0069 sta >$049C,y ldd >$093C std >$04BC,x lda >$0940 sta >$04FC,y inc <u00DE ldb >$0944 clra tfr d,x rts L1D87 ldd >$090B lsra rorb lsra rorb lsra rorb lsra rorb std <u00A1 ldd >$090D lsra rorb lsra rorb lsra rorb lsra rorb std <u00A3 ldd <u0047 cmpa #$40 bcs L1DAD orcc #Carry set carry flag lda #$FF bra L1DB1 L1DAD lslb rola rolb rola L1DB1 std <u00A5 lda >$0909 rola rola sta <u00A8 lbsr L0F51 ldd >$0869 std <u00B4 ldd >$086B std <u00B6 lda <u003E sta <u00BA lda <u003F rola rol <u00BA rola rol <u00BA lda #$06 suba <u00BA sta <u00BA ldd <u0037 pshs a asra rorb std <u00B8 puls a adda #$04 bpl L1DEA clra bra L1DF0 L1DEA cmpa #$09 bcs L1DF0 lda #$08 L1DF0 sta >$0882 rts L1DF4 lda <u00BA sta >$083B ldx #$0001 clr <u00C7 L1DFE lda <u00C7 adda <u00B9 sta <u00C7 lda >$083A,x adca <u00B8 sta >$083B,x leax $01,x cmpx #$0010 bne L1DFE clr <u00C7 L1E17 lda <u00C7 suba <u00B9 sta <u00C7 lda >$082B,x sbca <u00B8 sta >$082A,x leax -$01,x bne L1E17 rts L1E2C stx <u0004 lda >$0C25 eora #$80 sta <u00C7 lda >$054B eora #$80 cmpa <u00C7 bne L1E44 lda >$054C cmpa >$0C26 L1E44 bcc L1EA8 ldd >$0C25 std >$0C5F ldd >$0C61 std >$0C9B lda >$0C9D sta >$0CBA lda #$14 sta >$084B ldd #$0000 subd <u0004 std <u0000 addd #$0CBA tfr d,u ldd <u0000 subd <u0004 std <u0000 addd #$0C9B tfr d,y ldd <u0000 addd #$0C5F tfr d,x L1E7B lda >$054B bpl L1EBD dec >$084B bmi L1EA8 lbsr L1F8E ldd >$054F bmi L1EAB tsta bne L1E94 cmpb #$30 bcs L1EAB L1E94 std ,--x ldd >$0551 std ,--y lda <u00A7 sta ,-u lda <u0005 inca sta <u0005 cmpa #$0F bcs L1E7B L1EA8 ldx <u0004 rts L1EAB ldd >$054F std >$054B ldd >$0551 std >$054D lda <u00A7 sta <u00A0 bra L1E7B L1EBD ldd >$054B tsta bne L1EA8 cmpb #$D0 bcc L1EA8 L1EC7 lda ,x beq L1EEF L1ECB dec >$084B bmi L1EEC lbsr L1F8E ldd >$054F std ,--x ldd >$0551 std ,--y lda <u00A7 sta ,-u lda <u0005 inca sta <u0005 cmpa #$0F bcc L1EEC bra L1EC7 L1EEC ldx <u0004 rts L1EEF lda >$054D bmi L1EFD bne L1F0B lda >$054E cmpa #$50 bcc L1F0B L1EFD lda ,y bmi L1F19 bne L1F1C lda $01,y cmpa #$50 bcs L1F19 bra L1F1C L1F0B lda ,y bmi L1F30 bne L1F44 lda $01,y cmpa #$50 bcs L1F30 bra L1F44 L1F19 lbra L1F73 L1F1C ldb $01,x subb >$054C cmpb #$14 bcs L1F44 lsrb lsrb negb sex addd >$054D bpl L1F44 bra L1ECB L1F30 ldb $01,x subb >$054C cmpb #$14 bcs L1F44 lsrb lsrb negb sex addd ,y bpl L1F44 lbra L1ECB L1F44 lda >$054D beq L1F53 bmi L1F4F lda #$FF bra L1F50 L1F4F clra L1F50 sta >$054E L1F53 ldd ,y tsta beq L1F61 bmi L1F5E lda #$FF bra L1F63 L1F5E clra bra L1F63 L1F61 tfr b,a L1F63 sta >$0186 ldb $01,x stb >$017C lda ,u sta >$0190 lbsr L1FD0 L1F73 tst <u0005 beq L1F8A ldd ,x++ std >$054B ldd ,y++ std >$054D lda ,u+ sta <u00A0 dec <u0005 lbra L1EBD L1F8A ldx #$0000 rts L1F8E ldd >$054B addd ,x asra rorb std >$054F ldd >$054D addd ,y asra rorb std >$0551 lda <u00A0 inca adda ,u sta <u00A7 bmi L1FAC rts L1FAC bcs L1FC1 ldd >$054F subd >$054B asra rorb pshs b,a ldd >$0551 subd ,s++ std >$0551 rts L1FC1 ldd >$054F subd >$054B asra rorb addd >$0551 std >$0551 rts L1FD0 lda >$017C cmpa #$30 bls L2032 cmpa >$054C bcs L2032 bne L2033 clra ldb >$017C subb #$30 std >$0553 lda >$0186 suba #$50 bcs L2032 pshs x,b ldx >$0553 leax >$06CC,x cmpa ,x bls L2030 cmpa #$5F bls L2001 lda #$5F L2001 ldb ,x sta ,x tstb beq L2030 lda >$0554 anda #$01 bne L2030 ldx >$05AA stb ,x+ stx >$05AA lda >$0554 ldx >$05A8 sta ,x+ stx >$05A8 inc <u00DB bne L2030 lda <u00DA beq L202E dec <u00DB bra L2030 L202E inc <u00DA L2030 puls x,b L2032 rts L2033 ldd <u0004 std <u0000 pshs u,y,x ldx #$017C ldy #$0186 ldu #$0190 clrb L2044 lda >$054C cmpa #$30 bcs L2062 sta <u0001 suba #$30 sta >$0554 clr >$0553 ldx #$017C ldy #$0186 ldu #$0190 lbra L2106 L2062 adda ,x rora cmpa #$30 bhi L20B4 sta >$054C orcc #Carry set carry flag lda <u00A0 adda ,u sta <u00A0 bmi L2081 lda >$054E adda ,y rora sta >$054E bra L2044 L2081 bcs L209B lda ,x suba >$054C lsra sta <u00C7 lda >$054E adda ,y rora suba <u00C7 bcc L2096 clra L2096 sta >$054E bra L2044 L209B lda ,x suba >$054C lsra sta <u00C7 lda >$054E adda ,y rora adda <u00C7 bcc L20AF lda #$FF L20AF sta >$054E bra L2044 L20B4 leax $01,x sta ,x orcc #Carry set carry flag lda <u00A0 adda ,u+ sta ,u bmi L20CE lda >$054E adda ,y+ rora sta ,y incb lbra L2044 L20CE bcs L20E9 lda ,x suba >$054C lsra sta <u00C7 lda >$054E adda ,y+ rora suba <u00C7 bcc L20E3 clra L20E3 sta ,y incb lbra L2044 L20E9 lda ,x suba >$054C lsra sta <u00C7 lda >$054E adda ,y+ rora adda <u00C7 bcc L20FD lda #$FF L20FD sta ,y incb lbra L2044 L2103 puls u,y,x rts L2106 lda <u0001 cmpa #$D0 bcc L2103 sta >$054C suba b,x cmpa #$FE lbne L21CD lda b,y adda >$054E rora suba #$50 bcs L2165 pshs x,b ldx >$0553 leax >$06CC,x cmpa ,x bls L2163 cmpa #$5F bls L2134 lda #$5F L2134 ldb ,x sta ,x tstb beq L2163 lda >$0554 anda #$01 bne L2163 ldx >$05AA stb ,x+ stx >$05AA lda >$0554 ldx >$05A8 sta ,x+ stx >$05A8 inc <u00DB bne L2163 lda <u00DA beq L2161 dec <u00DB bra L2163 L2161 inc <u00DA L2163 puls x,b L2165 inc >$0554 lda b,y sta >$054E suba #$50 bcs L21B5 pshs x,b ldx >$0553 leax >$06CC,x cmpa ,x bls L21B3 cmpa #$5F bls L2184 lda #$5F L2184 ldb ,x sta ,x tstb beq L21B3 lda >$0554 anda #$01 bne L21B3 ldx >$05AA stb ,x+ stx >$05AA lda >$0554 ldx >$05A8 sta ,x+ stx >$05A8 inc <u00DB bne L21B3 lda <u00DA beq L21B1 dec <u00DB bra L21B3 L21B1 inc <u00DA L21B3 puls x,b L21B5 decb bmi L21CA lda <u0001 adda #$02 sta <u0001 inc >$0554 incb lda b,u decb sta <u00A0 lbra L2106 L21CA puls u,y,x rts L21CD lbcs L2231 lda b,y sta >$054E suba #$50 bcs L221E pshs x,b ldx >$0553 leax >$06CC,x cmpa ,x bls L221C cmpa #$5F bls L21ED lda #$5F L21ED ldb ,x sta ,x tstb beq L221C lda >$0554 anda #$01 bne L221C ldx >$05AA stb ,x+ stx >$05AA lda >$0554 ldx >$05A8 sta ,x+ stx >$05A8 inc <u00DB bne L221C lda <u00DA beq L221A dec <u00DB bra L221C L221A inc <u00DA L221C puls x,b L221E inc >$0554 decb bpl L2226 puls pc,u,y,x L2226 inc <u0001 incb lda b,u decb sta <u00A0 lbra L2106 L2231 lda <u0001 adda b,x rora incb sta b,x decb orcc #Carry set carry flag lda <u00A0 adda b,u incb sta b,u bmi L2252 decb lda >$054E adda b,y rora incb sta b,y lbra L2106 L2252 bcs L226E lda b,x decb suba >$054C lsra sta <u00C7 lda >$054E adda b,y rora suba <u00C7 bcc L2268 clra L2268 incb sta b,y lbra L2106 L226E lda b,x decb suba >$054C lsra sta <u00C7 lda >$054E adda b,y rora adca <u00C7 bcc L2283 lda #$FF L2283 incb sta b,y lbra L2106 L2289 ldd <u00DA beq L22E1 std <u00C8 ldx >scrnaddr screen address leax >$3BFF,x leay >$0200,x sty >$05AA L229E ldy >$05AA ldd <u00C8 lda d,x cmpa #$A0 bhi L22D6 pshs a ldd <u00C8 ldb d,y cmpb #$5F bcc L22D6 clra lslb ldu #$0E83 ldu d,u ldb ,s lsrb leau b,u lda #$F0 bcc L22C5 coma L22C5 sta >$0556 coma anda ,u pshs a lda >$0556 anda #$44 ora ,s+ sta ,u L22D6 puls b ldd <u00C8 subd #$0001 std <u00C8 bne L229E L22E1 lda >$0128 bne L2323 ldb <u00DE beq L2323 clra tfr d,x lslb tfr d,y L22F0 pshs y,x lda >$04FB,x sta >$0940 ldd >$04BA,y std >$093C lda >$049B,x sta <u0069 ldd >$045A,y std <u0063 lda >$043B,x sta <u0061 lda >$041B,x sta <u0062 lbsr L1C73 puls y,x leay -$02,y leax -$01,x bne L22F0 L2323 lda >$0128 bne L2360 ldb <u00DC beq L2360 clra tfr d,x L232F pshs x ldb >$03BB,x ldu #$0E83 clra lslb rola ldu d,u ldb >$03DB,x lsrb leau b,u lda #$F0 bcc L2349 coma L2349 sta <u00AB coma anda ,u pshs a lda >$03FB,x anda <u00AB ora ,s+ sta ,u puls x leax -$01,x bne L232F L2360 rts L2361 lbsr L236A lbsr L5315 lbra L2289 L236A lda <u0057 beq L2370 sta <u0059 L2370 ldb <u0059 stb >$0124 clra tfr d,y ldx #$0000 L237B lda #$00 sta >$01AC,x leay $01,y leax $01,x cmpx #$0010 bcs L237B lda <u0057 beq L2392 adda #$10 sta <u0058 L2392 ldb <u0058 clra tfr d,y ldx #$0000 L239A lda #$77 sta >$019C,x leay $01,y leax $01,x cmpx #$0010 bcs L239A clr <u0057 rts L23AC stx <u0023 lsr <u0024 pshs cc tfr y,d lda #$50 mul addd #$3F47 addd <u0023 tfr d,u puls cc rts L23C1 sta >$019C lbsr L23AC ldb #$0F bcc L23CD ldb #$F0 L23CD tfr b,a anda >$019C sta >$019C comb andb ,u orb >$019C stb ,u rts L23DE ldu #$3F47 ldx #$0F00 L23E4 std ,u++ leax -$01,x bne L23E4 rts L23EB ldu #$3F99 ldy #$3FE3 ldx #$0005 L23F5 leau u0001,u leay -$01,y ldb #$0A L23FB lda #$32 sta ,u lda #$12 sta ,y lda u0001,u anda #$0F ora #$10 sta u0001,u lda $01,y anda #$0F ora #$30 sta $01,y leau <u0050,u leay <$50,y decb bne L23FB leau >u0320,u leay >$0320,y leax -$01,x bne L23F5 ldu #$42B9 ldy #$4302 ldx #$0004 L2432 leau u0001,u leay -$01,y ldb #$0A L2438 lda #$21 sta u0001,u lda #$23 sta $01,y lda ,u anda #$F0 ora #$03 sta ,u lda ,y anda #$F0 ora #$01 sta ,y leau <u0050,u leay <$50,y decb bne L2438 leau >u0320,u leay >$0320,y leax -$01,x bne L2432 ldy #$1551 ldu #$5ACE lda #$08 sta <u00C8 L2470 ldx #$0021 L2473 ldd ,y++ std ,u++ leax -$01,x bne L2473 leau u000E,u dec <u00C8 bne L2470 ldu #$3F47 ldd #$2211 sta ,u sta u0001,u stb u0002,u stb u0003,u stb u0004,u stb <u0050,u stb <u0051,u stb <u004B,u stb <u004C,u stb <u004D,u sta <u004E,u sta <u004F,u stb >u009E,u stb >u009F,u ldb #$22 ldu #$5B67 std u0005,u std >u00A3,u std >u00A5,u std >u0141,u std >u0143,u std <u0049,u std >u00E9,u std >u00EB,u std >u018B,u std >u018D,u ldd #$3333 std <u0055,u std >u00F3,u std >u00F5,u std >u0145,u std >u0191,u std >u0193,u std >u0195,u std >u0099,u std >u0139,u std >u013B,u std >u0189,u std >u01D9,u std >u01DB,u std >u01DD,u rts L2513 pshs x pshs u L2517 std <u0050,u std ,u++ leax -$01,x bne L2517 puls u leau >u00A0,u puls x leay -$01,y bne L2513 rts L252D pshs u,b,a ldu #$161A ldb #$1B lda #$00 L2536 sta <u0062,u sta <u0042,u sta <u0020,u sta ,u+ decb bne L2536 puls pc,u,b,a L2546 ldd #$50C7 std >$0CC1 ldd #$0014 std >$0CC3 lda #$0A sta >$052F L2557 lbsr L2656 ldu #$3F47 ldx #$0028 ldy >$0CC3 ldd #$6666 lbsr L2513 ldu >$0CC1 ldx #$0028 ldy >$0CC3 ldd #$6666 lbsr L2513 ldu #$3FE7 ldb >$0CC4 lsrb lbsr L30FB ldu >$0CC1 leau >u00A0,u ldb >$0CC4 lsrb lbsr L30FB lbsr L23EB lbsr L279E lbsr pollkybd ldx #$0014 lbsr L5819 ldd #$0140 addd >$0CC1 std >$0CC1 ldd >$0CC3 subd #$0002 std >$0CC3 dec >$052F lbne L2557 rts L25BB lda #$08 sta <u00CE lda #$07 sta <u00CD lda #$0F sta <u00CC lbsr L3E28 lbsr L285E lbsr L2656 lbsr L23EB lbsr L279E ldd #$0480 std >$0CC5 leay >L5AA9,pcr ldb #$32 lbsr L2723 ldy #$1423 ldb #$09 L25EB pshs y,b ldu #$3F47 ldd ,y++ lda #$50 mul leau d,u ldb ,y leau b,u clra ldb #$28 subb ,y+ tfr d,x ldb ,y tfr d,y ldd #$0000 lbsr L2513 lbsr L288F lbsr L23EB lbsr L279E leay >L5AA9,pcr ldb ,s decb bsr L263F ldy >$0CC5 lbsr L35CD lbsr pollkybd ldx #$0004 lbsr L5819 ldd >$0CC5 addd #$0009 std >$0CC5 puls y,b leay -$04,y decb bne L25EB rts L263F andb #$03 lslb lslb leay b,y lda #$04 sta <u00C8 ldb #$09 L264B lda ,y+ lbsr writepal incb dec <u00C8 bne L264B rts L2656 ldy #$1403 ldb #$09 L265C pshs b ldu #$3F47 lda ,y+ sta >$0557 lda ,y+ ldb #$50 mul leau d,u clra ldb ,y leau b,u ldb #$28 subb ,y+ tfr d,x ldb ,y+ pshs y tfr d,y lda >$0557 ldb >$0557 lbsr L2513 puls y puls b decb bne L265C rts L268F ldy #$0480 sty >$0CC5 lbsr L285E ldd #$0000 lbsr L23DE lbsr L288F lbsr L23EB lbsr L279E lda #$00 sta >$0557 lbsr L274D ldy #$1423 ldb #$09 L26B7 pshs y,b L26B9 pshs b ldu #$3F47 lda ,y+ sta >$0557 ldb ,y+ lda #$50 mul leau d,u ldb ,y leau b,u clra ldb #$28 subb ,y+ tfr d,x ldb ,y+ pshs y tfr d,y lda >$0557 ldb >$0557 lbsr L2513 puls y puls b incb cmpb #$09 bcs L26B9 lbsr L23EB lbsr L279E ldy >$0CC5 lbsr L35CD lbsr pollkybd ldx #$0014 lbsr L5819 ldd >$0CC5 addd #$0009 std >$0CC5 puls y,b leay -$04,y decb bne L26B7 leay >L5AB9,pcr ldb #$14 bsr L2723 lda #$66 sta >$0557 lbra L274D L2723 pshs y,b lbsr L263F ldy >$0CC5 lbsr L35CD lbsr pollkybd lbsr L3D31 clra ldb ,s incb tfr d,x lbsr L5819 ldd >$0CC5 addd #$0009 std >$0CC5 puls y,b decb bne L2723 rts L274D ldy #$1423 ldb #$09 L2753 pshs y,b ldu #$3F47 ldd ,y++ lda #$50 mul leau d,u ldb ,y leau b,u clra ldb #$28 subb ,y+ tfr d,x ldb ,y tfr d,y lda >$0557 ldb >$0557 lbsr L2513 lbsr L23EB lbsr L279E ldy >$0CC5 lbsr L35CD lbsr pollkybd ldx #$0014 lbsr L5819 ldd >$0CC5 addd #$0009 std >$0CC5 puls y,b leay -$04,y decb bne L2753 rts L279E clr >$0602 lda #$60 sta >$0529 orcc #IntMasks mask interrupts stx <u0000 stu <u0004 sts <u0006 sty <u0002 lds #$3F47 ldu >scrnaddr screen address leau >u0787,u L27BD puls y,x,dp,b,a pshu y,x,dp,b,a leau u000E,u puls y,x,dp,b,a pshu y,x,dp,b,a leau u000E,u puls y,x,dp,b,a pshu y,x,dp,b,a leau u000E,u puls y,x,dp,b,a pshu y,x,dp,b,a leau u000E,u puls y,x,dp,b,a pshu y,x,dp,b,a leau u000E,u puls y,x,dp,b,a pshu y,x,dp,b,a leau u000E,u puls y,x,dp,b,a pshu y,x,dp,b,a leau u000E,u puls y,x,dp,b,a pshu y,x,dp,b,a leau u000E,u puls y,x,dp,b,a pshu y,x,dp,b,a leau u000E,u puls y,x,dp,b,a pshu y,x,dp,b,a leau u000E,u puls y,x,dp,b,a pshu y,x,dp,b,a leau u000A,u puls dp,b,a pshu dp,b,a leau u000A,u clra tfr a,dp sts <u0008 lds <u0006 andcc #^IntMasks unmask interrupts orcc #Intmasks mask interrupts lds <u0008 dec >$0529 bne L27BD clra tfr a,dp ldx <u0000 ldy <u0002 ldu <u0004 lds <u0006 andcc #^IntMasks unmask interrupts rts L282A lbsr L56E2 anda #$03 bne L285D lda #$02 sta <u00B3 ldx #$055C ldy #$057C ldb #$1F L283E lda b,x cmpa #$FF bne L285A lbsr L56E2 anda #$7F adda #$10 sta b,x lbsr L56E2 anda #$01 adda #$5D sta b,y dec <u00B3 beq L285D L285A decb bpl L283E L285D rts L285E ldx #$055C ldy #$057C ldb #$1F lda #$FF L2869 sta b,x sta b,y decb bpl L2869 lbsr L56E2 anda #$0F adda #$10 tfr a,b L2879 lbsr L56E2 anda #$7F adda #$10 sta b,x lbsr L56E2 anda #$3F adda #$10 sta b,y decb bpl L2879 rts L288F ldx #$055C ldy #$057C lda #$1F L2898 pshs y,x,a ldb a,x cmpb #$FF beq L28CC clra tfr d,x ldb ,s ldb b,y tfr d,y lda #$50 mul addd #$3F47 tfr d,u tfr x,d lsrb leau b,u lda ,u cmpa #$00 bne L28CC lbsr L56E2 tfr a,b lda #$11 cmpb #$A0 bls L28C9 lda #$22 L28C9 lbsr L23C1 L28CC puls y,x,a deca bne L2898 rts L28D2 ldx #$055C ldy #$057C ldb #$1F L28DB lda b,y cmpa #$FF beq L28ED suba #$02 sta b,y bcc L28ED lda #$FF sta b,x sta b,y L28ED decb bpl L28DB rts * joystick X/Y poll routine getjoyxy lda >joyx get last X value sta >joyxold store in old lda >joyy get last Y value sta >joyyold store in old clr >$05A7 ??? ldd #SS.Joy we want joystick info ldx #$0001 on left joystick os9 I$GetStt now! sta >button save button info tfr x,d copy joystick X to D stb >joyx and save X value lda #$00 clear A cmpb #$17 compare joy X against 23 bcc L291B if X value is greater, branch lda #$FF else load A with 0xFF bra L2921 L291B cmpb #$27 compare joy X against 39 bls L2921 if lower or same, branch lda #$01 load A with 1 L2921 sta >$05A3 save A cmpa >$05A5 compare with old A beq L292F branch if equal sta >$05A5 store in old A inc >$05A7 inc ??? L292F tfr y,d transfer joystick Y to D stb >joyy save in "current" joystick Y lda #$00 load A with 00 cmpb #$17 compare joystick Y against 23 bcc L293E if Y value is ??, branch lda #$01 else load A with $1 bra L2944 and branch L293E cmpb #$27 is joystick Y <= 39? bls L2944 if so, branch lda #$FF else load A with $FF L2944 sta >$05A4 save A (either $0, $FF or $1) cmpa >$05A6 compare against old A beq L2957 branch if equal sta >$05A6 save off A to old A lda >$05A7 load A with ?? ora #$02 sta >$05A7 save it back L2957 rts pollkybd clr >$0604 ldd #SS.Ready os9 I$GetStt bcs L2977 lbsr readch call readch routine (A comes back as char) cmpa #$20 is it spacebar? bne L296D no lbra readch else read another character L296D cmpa #$03 is it BREAK key? bne L2977 no, branch ldd #$0300 else do routine 3 (exit) lbra routines now! L2977 rts L2978 ldd ,y std <u00CA ldd $02,y std <u00CC ldd $04,y std >$05ED lda $06,y sta >$05EF clr >$05F1 clr >$05F2 lbsr L2A68 lda >$05EF anda #$FE beq L29D3 ldb <u00CB L299C pshs b lbsr L29DC ldy #$05CD ldb >$05F1 lda b,y beq L29C9 ldb <u00CB addb >$05F2 subb #$50 bcs L29C9 pshs b ldb #$5F subb ,s+ ldu #$0E83 clra lslb rola ldu d,u lbsr L29FE inc >$05F2 L29C9 puls b inc >$05F1 incb cmpb <u00CD bcs L299C L29D3 lda >$05EF anda #$FE sta >$05F0 rts L29DC ldy #$05AD ldb #$08 stb >$05F3 L29E5 lda ,x+ ldb #$03 L29E9 pshs a anda #$03 sta b,y puls a lsra lsra decb bpl L29E9 leay $04,y dec >$05F3 bne L29E5 rts L29FE pshs u,x ldx #$05CD ldy #$05AD lda #$F0 sta <u00AB ldb <u00CA subb #$30 bcc L2A12 clrb L2A12 lsrb bcc L2A17 com <u00AB L2A17 leau b,u ldb <u00CA L2A1B lda ,x ora $01,x beq L2A39 cmpb #$30 bcs L2A39 cmpb #$D0 bcc L2A39 lda ,x beq L2A31 lda ,y bsr L2A45 L2A31 lda $01,x beq L2A39 lda $01,y bsr L2A45 L2A39 leax $02,x leay $02,y addb #$02 cmpb <u00CC bcs L2A1B puls pc,u,x L2A45 tsta beq L2A5F pshs y ldy >$05ED lda a,y puls y anda <u00AB pshs a lda <u00AB coma anda ,u ora ,s+ sta ,u L2A5F com <u00AB lda <u00AB bpl L2A67 leau u0001,u L2A67 rts L2A68 pshs x lda >$05F0 cmpa >$05EF beq L2A98 ldx #$05CD ldb #$20 L2A77 clr ,x+ decb bne L2A77 ldb >$05EF andb #$FE beq L2A98 cmpb #$20 bls L2A89 ldb #$20 L2A89 ldy #$05CD leax >L2ACC-1,pcr L2A91 lda b,x com a,y decb bne L2A91 L2A98 puls pc,x L2A9A pshs a ldb >$0617 cmpa #$0F bls L2AA4 clrb L2AA4 addb ,s+ pshs b leay >L5AD9,pcr lda b,y ldb #$0B lbsr writepal ldb ,s leay >L5AED,pcr lda b,y ldb #$0C lbsr writepal puls b leay >L5B01,pcr lda b,y ldb #$04 lbra writepal L2ACC fdb $0f10,$0718,$0b14,$031c,$0d12,$011e,$0916,$051a,$0e11 fdb $001f,$0c13,$021d,$0a15,$041b,$0817,$0619 * RLE decoding routine * X = source * U = destination * Y = count * * if a byte has its high bit set, then the byte-128 is the number of * times to copy the next byte. rldecode lda ,x+ get A (count) bpl L2AFE if high bit not set, just copy next byte anda #$7F else chop off high bit leay -$01,y subtract 1 from y ldb ,x+ load B with byte at X and post increment L2AF7 stb ,u+ store B at U and post increment deca decrement A bne L2AF7 if not zero... bra L2B07 * here, A is a counter L2AFE ldb ,x+ get byte at X stb ,u+ store at U leay -$01,y subtract 1 from Y deca decrement A bne L2AFE if not zero, get next byte at X L2B07 leay -$01,y bne rldecode rts L2B0C ldy #$0000 L2B10 lda #$00 ldb #$22 L2B14 sta >$0559 stb >$0558 cmpy #$002D bcc L2B0C ldb >rofvbuf,y lda >$0F70,y tfr d,y lda ,y+ pshs a ldb ,y+ ldu #$0D03 clra lslb rola ldu d,u leau <u0050,u puls a leau a,u L2B3F lda ,y+ bne L2B44 rts L2B44 ldx #$3D6E ldb #$2B L2B49 cmpa b,x beq L2B51 decb bpl L2B49 incb L2B51 lda >$0CF1 mul D = A*B addd >$0CF2 tfr d,x pshs u,y ldy #$13F6 lda >$0CF1 sta <u00B3 L2B65 ldb #$03 lda ,x+ sta >$055B bsr L2B84 leau <u004D,u tst >$0CF4 beq L2B79 leau <u0050,u L2B79 dec <u00B3 bne L2B65 puls u,y leau u0003,u lbra L2B3F L2B84 lda >$055B anda #$03 lda a,y sta <u00C8 coma anda >$0558 pshs a lda <u00C8 anda >$0559 ora ,s+ tst >$0CF4 beq L2BA2 sta <u0050,u L2BA2 sta ,u+ lsr >$055B lsr >$055B decb bne L2B84 rts pshs b bsr L2BC1 puls a bsr L2BC1 rts L2BB7 cmpa #$09 bhi L2BBE ora #$30 rts L2BBE adda #$37 rts L2BC1 pshs a lsra lsra lsra lsra bsr L2BB7 sta ,x+ puls a anda #$0F bsr L2BB7 sta ,x+ rts * this seems to be some routine which gives access to a vector of * routines based on a value in A routines std <u0000 save A/B * move.b d0,u0000(a6) * move.b d1,u0001(a6) stu <u0004 save U * move.w a5,u0004(a6) lsla multiply x 2 to get offset into table * lsl.b d0 leau >JmpTbl,pcr point to base of table * lea.l JmpTbl(pcr),a5 ldd a,u add offset to base * move.l a5,d2 * add.b d0,d2 leau d,u get address of routine * lea.l (a5,d2.w),a5 pshs u push address of routine on stack * movem.l a5,-(sp) ldd <u0000 restore A/B * move.b u0000(a6),d0 * move.b u0001(a6),d1 ldu <u0004 restore U * move.w u0004(a6),a5 rts rts into the routine * rts * this is the vector table used by 'routines' above JmpTbl fdb Rtn0-JmpTbl * $000c fdb Rtn1-JmpTbl * $0028 fdb Rtn2-JmpTbl * $0062 fdb Rtn3-JmpTbl * $008c fdb Rtn4-JmpTbl * $0111 fdb Rtn5-JmpTbl * $0044 Rtn0 sty <u0000 save off Y (byte count) * move.w a1,u0000(a6) stu <u0004 save off U (address) * move.w a5,u0004(a6) lda #READ. open for read mode * move.w #Read_,d0 os9 I$Open open it! * os9 I$Open bcs Rtn3 go to Rtn3 if error * bcs.s Rtn3 ldy <u0000 retrieve Y (byte count) * move.w u0000(a6),a1 L2C03 ldx <u0004 retrieve X (address) * move.l u0004(a6),a0 pshs a save A * move.w d0,-(sp) os9 I$Read read Y bytes at X * os9 I$Read puls a restore A * move.w (sp)+,d0 os9 I$Close close file rts return Rtn1 stu <u0004 save off U lda #READ. open for read os9 I$Open open it! bcs Rtn3 go to Rtn3 if error (exit) pshs a save off A ldx #$0002 at this address ldy #$0002 this many bytes os9 I$Read read 'em! puls a restore A ldy <u0002 restore Y with what we read in A/B (bytes) bra L2C03 Rtn5 stu <u0004 save off U lda #READ. open for read os9 I$Open open it! bcs Rtn3 go to Rtn3 if error pshs a save off A ldx #$0002 at this address ldy #$0002 this many bytes os9 I$Read read 'em! ldd <u0002 fill A/B with bytes we just read mul multiply tfr d,y put product in Y puls a restore A bra L2C03 * delete and create a new file of the same name Rtn2 sty <u0000 stu <u0004 pshs x os9 I$Delete puls x lda #WRITE. ldb #READ.+WRITE.+PREAD.+PWRIT.+SHARE. os9 I$Create bcs L2C73 sta >tmppath ldx <u0004 ldy <u0000 os9 I$Write bcs L2C73 lda >tmppath os9 I$Close rts L2C73 rts * prepare to exit Rtn3 pshs b save off B (error code) * show VDG screen ldy #$0000 turn off graphics screen lda #$01 to standard output ldb #SS.DScrn display screen os9 I$SetStt turn it off! * set standard palettes leay >stdpals,pcr point to standard palettes lbsr setpal set palettes to standard * clear screen and give gfx screen memory back bsr clearscr clear screen lda #$01 to standard output ldb #SS.FScrn free screen memory ldy >scrnnum get screen number os9 I$SetStt free it! * check error code and print error message if needed puls b get B (error code) tstb is it 0? (no error) beq byebye if so, say byebye without alarm pshs b else notify user of error... save B leax >errmess,pcr point to error preface string ldy #$0008 write error preface lda #$02 ...to standard error os9 I$Write now! puls a get A (was B/error code) bsr prnum print error code bsr newline * here we say "byebye" to Rescue on Fractalus byebye * first restore old echo/pause options lda >oldecho sta >echoflg lda >$0CBC sta >pauseflg lda #$01 standard out clrb SS.Opt ldx #pathopts os9 I$SetStt * then chain to a shell clra tfr a,dp lds #$00FF leax >shell,pcr ldy #$0000 ldu #$0000 lda #$11 ldb #$03 os9 F$Chain adieu! * clear the screen clearscr leax >cls,pcr point to cls character ldy #$0001 write 1 byte lda #$01 ...to standard out os9 I$Write now! rts * print a new line to standard output newline leax >nl,pcr point to nl characters ldy #$0002 write 2 bytes lda #$01 ...to standard out os9 I$Write now! rts * read one character from standard input if ready * if carry clear, A holds character Rtn4 ldd #SS.Ready SS.RDY, standard input os9 I$GetStt get it! bcs ReadErr return with carry set if error ldx #$0000 is this u0000???? I wonder... ldy #$0001 read 1 character lda #$00 standard input os9 I$Read lda <u0000 andcc #^Carry clear carry flag ReadErr rts * write something to standard output * X = address of buffer to write * Y = no. of bytes to write WriteOut lda #$01 standard output os9 I$Write rts * print a number prnum pshs a lsra lsra lsra lsra bsr L2D24 puls a anda #$0F L2D24 cmpa #$09 bhi L2D2C ora #$30 bra L2D2E L2D2C adda #$37 L2D2E sta <u0002 ldx #$0002 ldy #$0001 lda #$01 os9 I$Write rts errmess fcc "ERROR # " shell fcc "SHELL" fcb C$CR cls fcb C$FORM nl fcb C$CR,C$LF L2D4E lbsr L582F clr >$051C clr >$011D clr >$051D clr >$051E clr <u00FB clr >$0115 clr <u00F5 clr >$010E L2D67 lda #$C0 sta >$051F lda #$FF sta >$011C lda <u0079 beq L2D8B lbsr L2B0C lda <u00FD beq L2D85 clr <u00FD ldy #$0016 lbsr L2B10 L2D85 lbsr L30C4 lbsr L2B0C L2D8B lda #$FF sta <u00F4 tst >$0CFC lbeq L2E76 tst <u0079 lbeq L2E76 lda >$0105 lbeq L2E37 suba >$0106 sta <u00F4 bpl L2DBB clra ldb >$0106 tfr d,y subb >$0105 stb >$0106 ldb >$0105 bra L2DC1 L2DBB clra ldb >$0106 tfr d,y L2DC1 stb <u00C7 tfr y,d tfr b,a lbsr L32CC ldy #$000C lbsr L2B10 L2DD1 ldd #$0500 std <u0055 lbsr L32B8 dec <u00C7 bne L2DD1 lda <u00F4 bmi L2E31 beq L2E01 lbsr L03D9 lbsr L32CC L2DE9 lda #$10 sta <u0055 lda #$02 lbsr L3600 lda #$02 lbsr L3600 lbsr L03ED lbsr L32B8 dec <u00F4 bne L2DE9 L2E01 lbsr L03D9 ldy #$0003 lbsr L2B10 lda <u007A sta <u00CA cmpa >$0CFB bls L2E17 sta >$0CFB L2E17 lbsr L32A6 tst <u00F8 bne L2E34 L2E1E lda #$02 sta <u00C7 L2E22 lda <u00D2 sta <u0055 lbsr L32C1 dec <u00C7 bne L2E22 dec <u00CA bne L2E1E L2E31 lbsr L03D9 L2E34 lbsr L2B0C L2E37 tst <u00F4 bpl L2E5B lda <u007A cmpa #$05 bcc L2E4F lda #$01 sta <u00E6 lda #$04 sta >$0CFA inc >$0129 bra L2E76 L2E4F sta >$0CFA suba #$03 sta <u00E6 inc >$0129 bra L2E76 L2E5B lda <u007A sta <u00E6 sta >$012E inc <u00E6 adda #$04 cmpa #$64 bcs L2E6C lda #$63 L2E6C sta >$0CFA tst <u0085 bne L2E76 lbsr L312F L2E76 clr >$0523 clr >$051C clr >$011D clr >$0105 lda #$C0 sta >$051F lbsr L56F3 lbsr L2B0C tst <u0079 bne L2EA7 lbsr L30DD clr >$0CF5 clr >$0CF6 clr >$0CF7 clr >$0CF8 clr <u00F7 clr <u00F8 clr >$012E L2EA7 lbsr L3CE2 tst <u0085 bne L2EF6 tst >$0CFC beq L2EB8 tst >$0129 bne L2EF6 L2EB8 clr >$113F clr >$1140 ldy #$0019 lbsr L2B10 ldd #$01CC std >$0520 L2ECB clra lbsr L3600 lda >button bne L2EF6 lda >$05A4 cmpa #$FF bne L2EE7 lda <u007A cmpa >$0CFA bcc L2ECB lbsr L312F bra L2ECB L2EE7 cmpa #$01 bne L2ECB lda <u007A cmpa <u00E6 bls L2ECB lbsr L318E bra L2ECB L2EF6 clr >$0116 clr >$0127 clr >$0129 lda #$01 sta >$0CFC sta <u0079 lbsr L2B0C ldy #$000B tst <u0085 beq L2F15 ldy #$0013 L2F15 lbsr L2B10 tst <u0085 bne L2F3C ldb <u007A cmpb <u00F6 pshs cc stb <u00F6 puls cc bne L2F2C inc <u00F8 bra L2F41 L2F2C bcc L2F3C clr >$0CF5 clr >$0CF6 clr >$0CF7 clr >$0CF8 clr <u00F7 L2F3C clr <u00F8 lbsr L31DD L2F41 lda #$01 lbsr L3600 lbsr L3C31 lbsr L4221 leay >L5AA9,pcr clrb lbsr L263F lbsr L2546 lbsr L25BB lbra L2F6C sta >$0524 lbsr L56E2 cmpa >$0524 bcc L2F68 L2F68 rts lbsr L285E L2F6C lda #$0A sta <u00CE lda #$07 sta <u00CD lda #$0F sta <u00CC lbsr L3E28 ldb #$1E L2F7D pshs b ldd #$0000 lbsr L23DE lbsr L288F lbsr L23EB lbsr L279E lbsr L28D2 lbsr L282A lbsr pollkybd lbsr L3D31 clra ldb ,s lsrb addb #$0D tfr d,x lbsr L5819 puls b decb bne L2F7D lda #$0C sta <u00CE lda #$07 sta <u00CD lda #$0F sta <u00CC lbsr L3E28 ldb #$09 lda #$34 lbsr writepal ldb #$0A lda #$36 lbsr writepal lda #$72 L2FC9 sta >$059C ldd #$0000 lbsr L23DE lbsr L288F bsr L3021 lbsr L23EB lbsr L279E lbsr L28D2 lbsr L282A lbsr pollkybd lbsr L3D31 ldx #$0008 lbsr L5819 lda >$059C suba #$02 bne L2FC9 L2FF7 ldd #$DDDD lbsr L23DE lbsr L23EB lbsr L279E ldb #$09 lda #$26 lbsr writepal ldb #$0A lda #$22 lbsr writepal ldb #$0B lda #$34 lbsr writepal ldb #$0C lda #$22 lbsr writepal lbra L0452 L3021 lda #$14 ldy #$3F31 ldb >$059C subb #$14 bcc L3044 negb cmpb #$14 lbcc L30A8 pshs b clra addd #$3F31 tfr d,y lda #$14 suba ,s+ clrb bra L3050 L3044 pshs b lda #$60 suba ,s+ cmpa #$14 bls L3050 lda #$14 L3050 pshs a lda #$50 mul addd #$3F47 tfr d,u puls b clra tfr d,x pshs u,y,x lda #$AA L3063 pshs u ldb #$28 subb ,y leau b,u ldb ,y+ lslb L306E sta ,u+ decb bne L306E puls u leau <u0050,u leax -$01,x bne L3063 stu <u0004 puls u,y,x cmpx #$0002 bls L30A8 leax -$02,x leau >u00A0,u lda #$99 L308D pshs u ldb #$28 subb ,y leau b,u ldb ,y+ lslb L3098 sta ,u+ decb bne L3098 puls u leau <u0050,u leax -$01,x bne L308D stu <u0004 L30A8 ldb >$059C cmpb #$5F bcc L30C3 ldb #$60 subb >$059C lsrb clra tfr d,y ldx #$0028 ldu <u0004 ldd #$9999 lbra L2513 L30C3 rts L30C4 lda #$26 sta >$0523 lbsr L043D clrb leay >L5AB9,pcr lbsr L263F lbsr L268F inc >$0523 lbra L30DD L30DD bsr L30E8 lda #$40 sta >$059D lda <u007A bra L3110 L30E8 ldd #$6666 lbsr L23DE ldu #$3F47 ldb #$1E bsr L30FB lbsr L23EB lbra L279E L30FB tstb beq L310F lda #$00 L3100 sta u000E,u sta <u0027,u sta <u0041,u leau >u00F0,u decb bne L3100 L310F rts L3110 lbsr L31C9 ldx #$1132 lbsr L2BC1 lda #$1C sta >$112A lda >$059D sta >$112B ldy #$0017 lda #$00 ldb #$66 lbra L2B14 L312F ldd #$0200 std >$0CC5 ldd #$0030 std >$0CC7 ldx #$0009 L313E pshs x lda >$13F9,x adda >$059D lbsr L316A puls x leax -$01,x bne L313E inc <u007A lda #$10 sta >$059D ldx #$0006 L315A pshs x lda #$08 adda >$059D bsr L316A puls x leax -$01,x bne L315A rts L316A sta >$059D lbsr L30E8 lda <u007A lbsr L3110 ldy >$0CC5 lbsr L35CD ldd >$0CC5 addd >$0CC7 std >$0CC5 lbsr pollkybd ldx #$0014 lbra L5819 L318E ldd #$0400 std >$0CC5 ldd #$FFD0 std >$0CC7 ldx #$0009 L319D pshs x lda >$059D suba >$13F9,x bsr L316A puls x leax -$01,x bne L319D dec <u007A lda #$70 sta >$059D ldx #$0006 L31B8 pshs x lda >$059D suba #$08 lbsr L316A puls x leax -$01,x bne L31B8 rts L31C9 ldb #$FF L31CB incb suba #$0A bcc L31CB adda #$0A sta <u00D0 lslb lslb lslb lslb orb <u00D0 tfr b,a rts L31DD clra ldb <u007A tfr d,x lsrb addb #$02 cmpb #$14 bcs L31EB ldb #$14 L31EB tfr b,a pshs a sta >$0106 lbsr L31C9 sta >$010A puls a tfr a,b lsra inca sta <u00ED tfr b,a suba #$05 bpl L3207 clra L3207 sta <u00EE tfr x,d cmpb #$01 bne L3212 clrb bra L321A L3212 cmpb #$2B bcs L3218 ldb #$2B L3218 lslb lslb L321A stb <u00F1 lsr <u00D0 tfr x,d cmpb #$04 bcc L3227 clrb bra L3234 L3227 cmpb #$23 bcs L322D ldb #$22 L322D lslb stb <u00D0 ldb #$30 subb <u00D0 L3234 stb <u00EF stb <u00F0 tfr x,d cmpb #$28 bcs L3240 ldb #$28 L3240 stb <u00D0 lda #$2C suba <u00D0 lsra sta <u00F2 tfr x,d stb <u00D0 lda #$2A suba <u00D0 bmi L3258 lsra cmpa #$04 bcc L325A L3258 lda #$04 L325A sta <u00E9 lda #$1A suba <u00D0 bmi L3263 lsra L3263 sta <u00EA bmi L326B cmpa #$02 bcc L326D L326B lda #$02 L326D cmpa #$08 bcs L3275 lda #$FF bra L327A L3275 lsla lsla lsla lsla lsla L327A sta <u00EB tfr x,d lsrb lsrb addb #$05 stb <u00EC lsr <u00D0 lsr <u00D0 lda #$08 suba <u00D0 bpl L328F clra L328F sta <u00F3 tfr x,d cmpb #$10 bcs L32A3 subb #$10 cmpb #$18 bcs L329F ldb #$17 L329F stb >$0115 clrb L32A3 stb <u00E7 rts L32A6 clr <u00D2 L32A8 inc <u00F7 lda <u00D2 adda #$01 daa sta <u00D2 lda <u00F7 cmpa <u007A bne L32A8 rts L32B8 lda >$010A adda #$99 daa sta >$010A L32C1 lbsr L41FD lda #$02 lbsr L3600 lbra L03F3 L32CC lbsr L31C9 sta >$010A lbra L03F9 L32D5 lbsr L3351 lda >$010E beq L32E4 clr >$010E lda #$0B bra L32E6 L32E4 lda #$0D L32E6 lbsr L3600 tst >$0127 beq L3309 lbsr L330A lbsr L3400 ldy #$0024 lda #$11 ldb #$00 lbsr L2B14 lda #$0D lbsr L3600 lda >button beq L32D5 L3309 rts L330A lbsr L3341 L330D inc >$0CF4 ldy #$001F lda #$11 ldb #$00 lbsr L2B14 clr >$0CF4 ldy #$0020 lda #$77 ldb #$00 lbsr L2B14 ldy #$0025 lda #$99 ldb #$00 L3331 pshs y,b,a lbsr L2B14 puls y,b,a leay $01,y cmpy #$002C bls L3331 rts L3341 ldu >$0CBF screen address ldx #$1E00 ldd #$0000 L334A std ,u++ leax -$01,x bne L334A rts L3351 lbsr L3341 lda #$0A sta >$113F lda #$04 sta >$1140 inc >$0CF4 ldy #$0019 lda #$77 ldb #$00 lbsr L2B14 clr >$0CF4 ldy #$001A lda #$11 ldb #$00 lbsr L2B14 ldx #$11A2 lda >$0CF5 lbsr L3570 lda >$0CF6 lbsr L3570 lda >$0CF7 lbsr L3570 lda >$0CF8 lbsr L3570 ldx #$11A2 lbsr L33DD ldx #$11B9 lda >$0CFE lbsr L3570 lda >$0CFF lbsr L3570 lda >$0D00 lbsr L3570 lda >$0D01 lbsr L3570 ldx #$11B9 lbsr L33DD ldy #$001D lda #$99 ldb #$00 lbsr L2B14 ldy #$001E lda #$99 ldb #$00 lbsr L2B14 ldy #$0024 lda #$11 ldb #$00 lbra L2B14 L33DD ldb #$07 L33DF lda ,x cmpa #$30 bne L33EC lda #$20 sta ,x+ decb bne L33DF L33EC rts lbsr L32D5 lbsr L3351 lda #$8C sta >$0118 lbsr L4221 lda <u007A lbra L3110 L3400 lda >$0127 beq L3465 lbsr L3528 ldx #$0025 L340B ldb >rofvbuf,x lda >$0F70,x addd #$0002 tfr d,u stu <u0027 leau u000C,u ldy #$000C L3420 lda >$12D4,y cmpa ,u beq L3451 bcs L345B lda #$05 lbsr L3600 lbsr L3582 pshs x lbsr L330D puls x clr >$0127 ldu <u0027 leau <u0014,u ldy #$0014 L3445 lda >$12D3,y sta ,-u leay -$01,y bne L3445 bra L3466 L3451 leau u0001,u leay $01,y cmpy #$0014 bcs L3420 L345B leax $01,x cmpx #$002C bcs L340B clr >$0127 L3465 rts L3466 lda >$0F70,x ldb >rofvbuf,x addd #$0002 tfr d,u tfr x,d subb #$25 pshs u,b lda #$01 lbsr L3600 puls u,b stb >$0527 ldy #$0000 L3487 lda #$5F sta ,u lbsr L3500 lda #$20 sta ,u L3492 lbsr L4019 bcs L3492 lbsr readch cmpa #$FF beq L3514 cmpa #$60 bcs L34A4 anda #$5F L34A4 cmpa #$08 beq L3514 cmpa #$0D beq L34D9 cmpy #$0008 beq L3487 cmpa #$20 beq L34CA cmpa #$21 beq L34CA cmpa #$2E beq L34CA cmpa #$27 bne L34C6 lda #$27 bra L34CA L34C6 cmpa #$41 bcs L3487 L34CA sta ,u lbsr L3500 leau u0001,u leay $01,y cmpy #$0009 bcs L3487 L34D9 lbsr L3500 lda >$0D02 load A with last byte of scores file sta >$12D4 save in buffer lda >$0CFA cmpa >$0D02 bcs wrscores sta >$0D02 sta >$12D4 * write high scores out to file wrscores leax >scores,pcr point to scores file ldu #scorebuf address of scores buffer ldy #$00B9 bytes to write lda #$02 routine (2) lbra routines do routine! L3500 pshs u,y clra ldb >$0527 addd #$0025 tfr d,y lda #$99 ldb #$00 lbsr L2B14 puls pc,u,y L3514 cmpy #$0000 beq L351E leau -u0001,u leay -$01,y L351E lda #$A0 sta ,u lbsr L3500 lbra L3487 L3528 ldx #$0014 lda #$20 L352D sta >$12D3,x leax -$01,x bne L352D lda >$012E beq L354F lbsr L31C9 ldx #$12DD lbsr L3570 lda >$12DD cmpa #$30 bne L354F lda #$20 sta >$12DD L354F lda >$0CF5 ldx #$12E0 lbsr L3570 lda >$0CF6 lbsr L3570 lda >$0CF7 lbsr L3570 lda >$0CF8 lbsr L3570 ldx #$12E0 lbra L33DD L3570 sta <u00D0 lsra lsra lsra lsra lbsr L357D lda <u00D0 anda #$0F L357D adda #$30 sta ,x+ L3581 rts L3582 tfr x,d stb <u00C7 ldx #$002C L3589 tfr x,d cmpb <u00C7 beq L3581 ldb >rofvbuf,x lda >$0F70,x addd #$0002 tfr d,u leax -$01,x ldb >rofvbuf,x lda >$0F70,x addd #$0002 tfr d,y pshs x ldx #$000A L35B0 ldd ,y++ std ,u++ leax -$01,x bne L35B0 puls x bra L3589 L35BC pshs u,y,x,b,a,cc ldy #$0200 frequency ldx #$7001 ldd #(stdout*256)+SS.Tone os9 I$SetStt puls pc,u,y,x,b,a,cc * Y = frequency L35CD pshs u,y,x,b,a,cc ldx #$7002 ldd #(stdout*256)+SS.Tone os9 I$SetStt puls pc,u,y,x,b,a,cc * Y = frequency L35DA pshs u,y,x,b,a,cc ldx #$7001 ldd #(stdout*256)+SS.Tone os9 I$SetStt puls pc,u,y,x,b,a,cc L35E7 ldb #$03 L35E9 bsr L35EF decb bpl L35E9 rts L35EF pshs u,y,x,b,a,cc ldy #$0500 frequency ldx #$7001 ldd #(stdout*256)+SS.Tone os9 I$SetStt puls pc,u,y,x,b,a,cc L3600 pshs u,y,x,b sta >$0CED lsla leay >L3682,pcr ldd a,y leau d,y stu >$0CEE clr >button bra L3619 L3616 clr >$0CED L3619 ldu >$0CEE L361C lda >$0CED beq L3625 cmpa #$0D bne L3644 L3625 pshs u lbsr getjoyxy puls u tst >button bne L3670 lda >$0CED cmpa #$0D beq L3644 tst >$05F8 beq L3644 lda >$05A4 cmpa #$00 bne L3670 L3644 inc <u0033 ldy ,u beq L3672 cmpy #$0001 beq L366B cmpy #$0002 beq L3616 lda #$70 ldb u0002,u tfr d,x pshs u ldd #$0198 SS.Tone os9 I$SetStt puls u L3667 leau u0003,u bra L361C L366B lda >$0CED beq L3619 L3670 puls pc,u,y,x,b L3672 ldb u0002,u beq L3667 L3676 ldx #$0320 L3679 leax -$01,x bne L3679 decb bne L3676 bra L3667 L3682 fdb $001c,$00f0,$00f5,$00fa,$00fa,$00ff,$011c fdb $00f0,$00f0,$00fa,$00fa,$012a,$00fa,$001c,$0e1d fdb $180e,$bd04,$0e1d,$040e,$8110,$0e1d,$100e,$8118 fdb $0e1d,$040e,$8104,$0ebd,$2000,$0002,$0ebd,$180e fdb $8104,$0ebd,$040f,$0010,$0e00,$100e,$8118,$0e00 fdb $040e,$8104,$0ebd,$200e,$8118,$0e00,$040e,$8104 fdb $0ebd,$100e,$8110,$0ebd,$180e,$8104,$0ebd,$040f fdb $0020,$0000,$020f,$0018,$0ebd,$040f,$0004,$0f29 fdb $100e,$5210,$0f00,$300f,$000c,$0ebd,$040e,$e118 fdb $0e96,$040e,$e104,$0f0e,$180e,$bd08,$0ee1,$180e fdb $9604,$0ee1,$040f,$0e20,$0ee1,$180e,$9604,$0ee1 fdb $040f,$2910,$0ebd,$100f,$0e18,$0ebd,$040f,$0e04 fdb $0f40,$200e,$e118,$0e96,$040e,$e104,$0f0e,$180e fdb $bd08,$0ee1,$180e,$9604,$0ee1,$040f,$0e20,$0ee1 fdb $180e,$9604,$0ee1,$040f,$2910,$0ebd,$100f,$4040 fdb $0001,$0ef1,$0200,$0102,$0002,$0001,$0300,$0200 fdb $010d,$7b10,$0de2,$050d,$c205,$0de2,$050e,$6a10 fdb $0ebd,$100e,$d018,$0e6a,$080e,$1d20,$0001,$0f5f fdb $010f,$7001,$0f78,$010f,$8001,$0001,$0d2c,$100d fdb $c210,$0da0,$080d,$c208,$0d2c,$100d,$c210,$0da0 fdb $100d,$7b10,$0da0,$100d,$2c10,$0000,$020d,$2c10 fdb $0000,$020d,$2c10,$0000,$0c0e,$5204,$0e38,$2000 fdb $0020,$0001,$0f5f,$0400 fcb $01 L37E9 fdb $171f ldb <u007F ror <u0017 clr >$089B lda #$0E sta >$087C lda #$02 sta >$0909 sta >$010C lda #$CC sta <u0072 lda #$78 sta <u0041 lda #$4F sta <u0047 lda #$0F sta >$0113 lbsr L03F9 lda #$FF sta <u0071 sta >$0886 sta <u007E sta <u0083 lda #$C0 sta <u0060 lbsr L3866 lbsr L03F9 lda #$05 sta >$09A2 clr >$09A3 lbsr L3A13 lbsr L03F9 clra lbsr L0DE9 lbsr L0E2A lbsr L03F9 lda #$F4 sta <u003E lda #$05 ldy #$0007 L384A sta >$0927,y leay -$01,y bne L384A lbsr L56E2 cmpa #$20 bcc L385B inc <u004A L385B lda #$07 sta >$0112 sta >$09A4 lbra L3E78 L3866 lda #$66 ldb #$00 sta >$0559 stb >$0558 ldy #$1334 ldb #$08 L3876 clr >$00A8,y clr >$0090,y clr <$78,y clr <$60,y clr <$48,y clr <$30,y clr <$18,y clr ,y+ decb bne L3876 lda #$F0 ldb >$089B lsrb bcc L389B coma L389B anda #$11 ldy #$13DC ldb #$08 L38A3 sta ,y+ decb bne L38A3 ldy #$13C4 ldb >$089B beq L38B7 cmpb #$03 beq L38B7 leay $01,y L38B7 sta ,y sta $02,y sta $04,y sta $06,y sta <-$18,y sta <-$14,y ldb >$087C incb andb #$03 lslb lslb addb >$089B clra ldu #$1348 leau d,u ldb >$087C lslb ldy #$1308 ldd b,y cmpb #$FF beq L38F1 pshs b ldb >$089B cmpb #$03 bne L38EF lda ,s L38EF puls b L38F1 lsla ldy #$1328 ldx a,y ldy #$13F6 lda #$07 sta <u00B3 L3900 ldb #$03 lda ,x+ sta >$055B lbsr L2B84 leau <u0015,u dec <u00B3 bne L3900 ldy #$1334 ldu >scrnaddr screen address leau >u0484,u ldx #$0008 L391F ldd ,y++ std ,u++ ldd ,y++ std ,u++ ldd ,y++ std ,u++ ldd ,y++ std ,u++ leay <$10,y leau <u0048,u leax -$01,x bne L391F L3939 rts L393A clr <u00CE clr <u00D4 lda >$010B pshs a cmpa #$01 bcs L395A cmpa #$03 bcc L395A anda <u005D bne L395A lda <u007E cmpa #$00 beq L395A lda #$07 lbsr L3600 L395A puls a cmpa >$0111 beq L3977 sta >$0111 lda #$07 lbsr L3600 lda >$0111 ldb #$47 stb <u00CA ldb #$85 stb <u00CB lbsr L39DA L3977 lda >$0109 cmpa >$010F beq L3995 sta >$010F ldb #$48 stb <u00CC ldb #$9B stb <u00CD ldb #$45 stb <u00CA ldb #$95 stb <u00CB lbsr L39CB L3995 lda >$0107 beq L39A2 lda #$0C anda <u005D bne L39A2 dec <u00CE L39A2 lda >$010A ora <u00CE cmpa >$0110 lbeq L3939 sta >$0110 lda >$010A ldb #$46 stb <u00CC ldb #$AC stb <u00CD ldb #$43 stb <u00CA ldb #$A4 stb <u00CB ldb >$0107 beq L39CB dec <u00D4 L39CB pshs a lsra lsra lsra lsra lbsr L39DC ldd <u00CC std <u00CA lda ,s+ L39DA anda #$0F L39DC adda #$30 tst <u00CE beq L39E4 lda #$20 L39E4 sta >$11F2 ldb <u00CA stb >$11F0 ldb <u00CB stb >$11F1 lda #$09 sta >$0CF1 ldd #$3ECE std >$0CF2 lda #$66 ldb #$00 ldy #$0021 lbsr L2B14 lda #$07 sta >$0CF1 ldd #$3D9A std >$0CF2 rts L3A13 lda >$09A2 ldb >$09A3 cmpa >$08F5 bne L3A25 cmpb >$08F7 lbeq L3ABA L3A25 ldy #$3734 sta >$08F5 stb >$08F7 bpl L3A32 clrb L3A32 cmpb #$1C bls L3A38 ldb #$1C L3A38 stb <u00B3 beq L3A41 lda #$77 lbsr L3ABB L3A41 ldb #$1C subb <u00B3 beq L3A4C lda #$99 lbsr L3ABB L3A4C ldb <u00B3 beq L3AB8 decb lda #$08 mul addd #$3734 tfr d,y lda >$09A2 cmpa #$05 beq L3AB8 ldb #$10 mul addd #$3814 tfr d,x ldb #$08 pshs b L3A6C ldb ,x+ beq L3AAE pshs y cmpb <u00B3 bls L3A78 ldb <u00B3 L3A78 lda #$0F anda ,y pshs a lda #$99 anda #$F0 ora ,s+ sta ,y leay -$08,y decb bne L3A78 puls y ldb ,x+ beq L3AAE pshs y cmpb <u00B3 bls L3A99 ldb <u00B3 L3A99 lda #$F0 anda ,y pshs a lda #$99 anda #$0F ora ,s+ sta ,y leay -$08,y decb bne L3A99 puls y L3AAE leay $01,y dec ,s lbne L3A6C puls b L3AB8 bra L3B17 L3ABA rts L3ABB sta ,y+ sta ,y+ sta ,y+ sta ,y+ sta ,y+ sta ,y+ sta ,y+ sta ,y+ decb bne L3ABB rts L3ACF ldu >scrnaddr screen address leau >u2A02,u ldx #$336C ldy #$34E0 lda #$1F ldb #$0C lbra L3B29 L3AE4 ldu >scrnaddr screen address leau >u26F7,u ldx #$38C4 ldy #$39A4 lda #$1C ldb #$08 lbra L3B29 L3AF9 ldy #$3734 bsr L3B0A bra L3B17 ldy #$39A4 bsr L3B0A lbra L3AE4 L3B0A ldx #$0070 ldd #$7777 L3B10 std ,y++ leax -$01,x bne L3B10 rts L3B17 ldu >scrnaddr screen address leau >u26D1,u ldx #$3654 ldy #$3734 lda #$1C ldb #$08 L3B29 sta <u00B3 stb <u00C7 L3B2D pshs u ldb <u00C7 L3B31 lda ,u anda ,x pshs a lda ,x+ coma anda ,y+ ora ,s+ sta ,u+ decb bne L3B31 puls u leau <u0050,u dec <u00B3 bne L3B2D rts L3B4D lda #$77 clrb bra L3B5A L3B52 pshs b lbsr L5738 puls b incb L3B5A cmpb >$087B bcs L3B52 cmpb >$087A bcc L3B73 lda #$DD L3B66 pshs b lbsr L5738 puls b incb cmpb >$087A bcs L3B66 L3B73 lda #$EE L3B75 pshs b lbsr L5738 puls b incb cmpb #$3A bcs L3B75 rts L3B82 lda <u007B cmpa #$01 bcs L3BA2 dec <u007B bne L3B97 lda #$0F sta <u007B lda #$77 sta >$0177 bra L3BA2 L3B97 lda <u007B cmpa #$0A bcc L3BA2 lda #$88 sta >$0177 L3BA2 lda <u004C beq L3BAA L3BA6 dec <u004C bra L3BC0 L3BAA lda #$08 suba <u007C lsra tst <u004F bne L3BB4 inca L3BB4 adda >$08FA adca >$08AD sta >$08AD bcs L3BC0 rts L3BC0 tst <u00FB beq L3BC6 dec <u00FB L3BC6 bne L3BF0 tst <u0036 beq L3BDD lda <u007E cmpa #$02 beq L3BDD lda #$10 lbsr L3E94 lda #$32 sta <u0036 bra L3BDF L3BDD inc <u00FB L3BDF lda <u004C ora >$08FA cmpa #$01 bcs L3BF0 sta >$010E clr <u00FB lbsr L0ACA L3BF0 lbsr L3C21 lsra lsra lsra pshs a tfr a,b lda #$77 lbsr L5747 puls b cmpb >$0615 beq L3C20 stb >$0615 clra tfr d,x lda >$3C0F,x sta >$0177 leay $01,y L3C15 lbsr L5747 leay $01,y cmpy #$00B4 bls L3C15 L3C20 rts L3C21 ldb #$E0 subb <u00FB lsrb lsrb pshs b addb #$7B clra tfr d,y lda ,s+ rts L3C31 ldx #$003A bra L3C5F L3C36 stx <u0023 lbsr L5712 ldx <u0023 L3C3D lda #$01 sta <u005F lda #$04 adda <u00FB cmpa #$E0 bcs L3C5A clr <u005F lda #$66 pshs y ldy #$007B lbsr L5747 puls y lda #$E0 L3C5A sta <u00FB lbsr L03CE L3C5F lbsr L3C21 pshs a lda >$0177 leay $01,y lbsr L5747 ldb ,s+ lsrb lsrb lsrb cmpb #$06 bcc L3C77 clr <u007B L3C77 leax -$01,x bne L3C3D rts L3C7C lda <u0084 bpl L3C9A cmpa #$81 bcc L3CC4 dec <u00E8 bpl L3CBE lbsr L56E2 anda #$07 sta <u00E8 cmpa #$06 lbcs L3D1E anda #$03 lbra L3D1E L3C9A bne L3CA7 sta <u005A inc <u0084 lda <u00E9 sta <u00E8 lbra L3CE2 L3CA7 dec <u00E8 bpl L3CBE ldb <u00E9 stb <u00E8 cmpa #$07 bne L3CBF screen address lda <u005A bne L3CBE lda #$01 sta <u005A sta >$095E L3CBE rts L3CBF deca inc <u0084 bra L3CD7 L3CC4 lsr <u00FC bcs L3CBE inc <u00FC anda #$0F cmpa #$07 bcs L3CD4 lda #$06 dec <u0084 L3CD4 dec <u0084 deca L3CD7 pshs a lda #$08 lbsr L3600 puls a bra L3D1E L3CE2 ldx #$3C47 ldb #$05 lda #$EE L3CE9 sta b,x decb bpl L3CE9 L3CEE ldu >scrnaddr screen address leau >u37CC,u ldx #$3C47 ldb #$05 L3CFA lda b,x sta ,u sta <u0050,u sta >u00A0,u anda #$F0 pshs a lda #$00 anda #$0F ora ,s+ sta u0001,u sta <u0051,u sta >u00A1,u leau -u0002,u decb bpl L3CFA rts L3D1E ldx #$3C47 ldb a,x cmpb #$EE bne L3D2B ldb #$DD bra L3D2D L3D2B ldb #$EE L3D2D stb a,x bra L3CEE L3D31 lbsr L56E2 anda #$07 cmpa #$06 bcs L3D1E anda #$03 bra L3D1E L3D3E sta <u0025 ldb <u0025 cmpb #$03 bcs L3D4F lda #$0C sta >$0883 lda #$6C bra L3D75 L3D4F clra tfr d,y lda >$3C4D,y sta >$0883 lda >$0884 cmpa #$8B bcs L3D62 lda #$8C L3D62 suba #$55 bpl L3D67 clra L3D67 lsra lsra cmpy #$0081 bcc L3D73 lda #$5E bra L3D75 L3D73 lda #$54 L3D75 sta <u00CE lda <u0025 bpl L3D7E dec <u0072 rts L3D7E lda >$0884 adda >$0883 cmpa #$D0 bcs L3D89 clra L3D89 sta >$0157 lbeq L3DE5 adda #$20 cmpa #$D0 bls L3D98 lda #$D0 L3D98 sta >$0159 lda >$0881 adda #$50 cmpa #$AF bcs L3DA5 clra L3DA5 sta >$0158 beq L3DE5 pshs a suba #$50 lsra lsra sta >$08AB puls a adda #$20 cmpa #$AF bls L3DBD lda #$AF L3DBD sta >$015A lda <u0071 lsra lsra lsra leay >L5AC9,pcr lda a,y sta >$015D ldd #$2CC6 std >$015B ldx #$2CE7 ldy #$0157 lbsr L2978 ldy #$0E00 lbsr L35DA L3DE5 lda >$0883 adda >$0884 cmpa #$8E bcs L3DF3 lda #$8D bra L3DF9 L3DF3 cmpa #$6C bcc L3DF9 lda #$6C L3DF9 sta >$08AC lda #$FF sta >$089E lbra L3EA1 L3E04 ldb <u007D lsrb clra tfr d,y L3E0A cmpy #$0009 bcs L3E16 lda #$08 cmpa <u00FA beq L3E38 L3E16 tfr y,d cmpb <u00FA beq L3E38 stb <u00FA stb <u00CE lda #$FF sta <u00CD lda #$07 sta <u00CC L3E28 tfr a,b clra tfr d,x lbsr L3E39 dec <u00CC lda <u00CC cmpa <u00CD bne L3E28 L3E38 rts L3E39 ldy #$3C76 tfr x,d cmpb <u00CE bcc L3E47 ldy #$3C7E L3E47 cmpb #$10 bcs L3E4E leay <$10,y L3E4E ldb >$3C63,x ldu #$0D03 clra lslb rola ldu d,u ldb >$3C50,x leau b,u ldd ,y++ std ,u ldd ,y++ std <u0050,u ldd ,y++ std >u00A0,u ldd ,y++ std >u00F0,u rts L3E76 lda <u007C L3E78 sta <u007C pshs a cmpa #$08 bne L3E83 clra bra L3E8E L3E83 adda <u00F3 tfr a,b clra tfr d,y lda >$3C96,y L3E8E sta <u0036 puls a L3E92 adda #$08 L3E94 sta <u00CE lda #$07 sta <u00CD lda #$0F sta <u00CC lbra L3E28 L3EA1 lbsr L3F51 ldb >$08AB cmpb #$1F lbcc L3F4E lda >$089E bpl L3EBD cmpa #$FF bne L3EBA lda #$03 bra L3EC8 L3EBA clra bra L3EC8 L3EBD lda >$08A0 bne L3EC6 lda #$01 bra L3EC8 L3EC6 lda #$02 L3EC8 sta >$089F clr <u00CA ldb >$08AC subb #$6E lbcs L3F4E cmpb #$1D lbcc L3F4E lsrb subb #$03 bcc L3EE5 negb stb <u00CA clrb L3EE5 pshs b lda #$0C suba ,s cmpa #$04 bls L3EF1 lda #$04 L3EF1 sta <u00CB lda #$0C ldb >$08AB mul addd #$34E0 tfr d,x puls b leax b,x ldb >$089F ldy #$3305 lda b,y sta >$0557 lslb ldy #$3309 ldy b,y ldb <u00CA leay b,y ldb <u00CB subb <u00CA stb <u00CB lda #$1F suba >$08AB cmpa #$05 bls L3F2B lda #$05 L3F2B sta <u00CA L3F2D pshs y,x ldb <u00CB L3F31 lda ,y anda >$0557 pshs a lda ,y+ coma anda ,x ora ,s+ sta ,x+ decb bne L3F31 puls y,x leax $0C,x leay $04,y dec <u00CA bne L3F2D L3F4E lbra L3ACF L3F51 ldx #$0174 ldy #$34E0 lda #$77 L3F5A sta ,y+ leax -$01,x bne L3F5A rts L3F61 ldd #$7777 ldx #$0070 ldy #$39A4 L3F6B std ,y++ leax -$01,x bne L3F6B lda #$1B suba >$0939 bcs L3FA9 ldb #$08 mul addd #$39A4 tfr d,y ldb >$0938 addb #$07 bmi L3FA9 cmpb #$0E bhi L3FA9 lda #$F0 lsrb leay b,y bcc L3F93 coma L3F93 sta <u00AB coma anda #$77 pshs a lda #$99 anda <u00AB ora ,s+ sta ,y ldb >$0939 beq L3FA9 sta $08,y L3FA9 lbra L3AE4 L3FAC lbsr L252D ldb #$36 subb >$0896 lda >$0896 lsra ldu #$161A leau a,u lsrb bcc L3FC9 lda #$0F anda #$99 sta <u0042,u sta ,u+ L3FC9 tstb beq L3FD6 lda #$99 L3FCE sta <u0042,u sta ,u+ decb bne L3FCE L3FD6 ldb #$36 subb >$0897 ldu #$163A lsrb pshs cc tstb beq L3FEE lda #$99 L3FE6 sta <u0042,u sta ,u+ decb bne L3FE6 L3FEE puls cc bcc L3FFB lda #$F0 anda #$99 sta <u0042,u sta ,u L3FFB rts L3FFC ldu >scrnaddr screen address leau >u0484,u ldx #$0008 ldd #$0000 L4009 std ,u std u0002,u std u0004,u std u0006,u leau <u0050,u leax -$01,x bne L4009 rts L4019 pshs u,y,x inc <u0033 ldd #SS.Ready os9 I$GetStt puls pc,u,y,x * read one character from standard input readch pshs u,y,x ldy #$0001 one character ldx #$00E0 at this address lda #$00 standard input os9 I$Read read it! ldx >$0603 load word at $603 cmpx #$0007 is it 7? beq L403E branch if so inc >$0604 else inc value L403E lda <u00E0 load char sta >$3D64,x save it puls pc,u,y,x return L4046 tfr x,d stb <u005B lda #$0F sta <u005E ldy #$0014 L4052 cmpb >$3CA5,y beq L405D leay -$01,y bne L4052 rts L405D leay -$01,y tfr y,d lsrb tfr d,y lda <u0085 bne L406A lda #$04 L406A cmpy #$0006 bne L4079 L4070 lbsr L03CD inc >$0127 lbra L036B L4079 cmpy #$0008 bne L408B lda >$0171 eora #$01 sta >$0171 lbra L57C3 L408A rts L408B lda <u0085 bne L408A cmpy #$0007 bne L40A9 lda <u00FE bne L408A L4099 lbsr readch cmpa #$12 beq L4070 cmpa #$20 bne L4099 lda #$04 lbra L3600 L40A9 ldd #$0300 cmpy #$0009 lbeq routines tfr y,d cmpb <u007E beq L411A cmpy #$0003 bne L40F4 lda <u004E cmpa #$02 bcs L411A lda #$FF sta >$0103 lda <u004F bne L40DF inc <u004F lda #$11 sta <u00CE ldx #$0010 lbsr L3E39 lda #$0F bra L40F1 L40DF ldb #$10 stb <u00CE clra tfr d,x lbsr L3E39 clr >$08FC lbsr L41F4 lda #$0E L40F1 sta <u0054 rts L40F4 cmpy #$0001 bne L4138 lda <u00FD beq L4106 ldy #$0011 lda #$09 bra L4132 L4106 lda <u004F beq L411A lda <u004D beq L411B bmi L411A dec <u004D lda #$13 ldy #$000A bra L4122 L411A rts L411B inc <u004D clra ldy #$0001 L4122 sta <u00CE sty <u0021 ldx #$0012 lbsr L3E39 ldy <u0021 lda #$06 L4132 lbsr L3600 lbra L41BE L4138 cmpy #$0002 lbeq L41CC lda <u00FB beq L411A cmpy #$0004 bne L4176 ldb #$FF stb <u007E lda <u004E beq L4168 lda >$0912 bne L4159 sta <u0054 L4159 lbsr L41ED clr <u0039 clr <u003A lda #$07 lbsr L3E78 lbra L2B0C L4168 lda <u007C lbeq L2B0C dec <u007C lbsr L3E76 lbra L2B0C L4176 lda <u004E bne L411A cmpy #$0005 bne L4194 lda #$FF sta <u007E lda #$06 cmpa <u007C lbcs L2B0C inc <u007C lbsr L3E76 lbra L2B0C L4194 cmpy #$0000 bne L41BA lda <u007D cmpa #$64 bcs L41AD lda #$0A lbsr L3600 ldy #$0005 lda #$FF bra L41E9 L41AD lda #$08 lbsr L3E78 lda #$00 ldy #$0004 bra L41E9 L41BA tfr y,d stb <u007E L41BE lda <u0054 sta <u0053 clr <u0054 lda #$20 sta >$0103 lbra L2B10 L41CC lda <u004A bmi L41DB lda #$0A lbsr L3600 ldy #$000D bra L41EB L41DB bsr L41ED lda #$F4 sta <u003B lda #$0C sta <u003C tfr y,d tfr b,a L41E9 sta <u007E L41EB bra L41BE L41ED tst >$0898 bne L41F4 clr <u004E L41F4 clr <u004F clr >$0911 clr >$0912 rts L41FD lda >$0CF8 adda <u0056 daa sta >$0CF8 lda >$0CF7 adca <u0055 daa sta >$0CF7 lda >$0CF6 adca #$00 daa sta >$0CF6 lda >$0CF5 adca #$00 daa sta >$0CF5 L4221 clr <u0055 clr <u0056 ldx #$1138 lda >$0CF6 lbsr L2BC1 lda >$0CF7 lbsr L2BC1 lda >$0CF8 lbsr L2BC1 lda #$3C sta >$1136 clr >$1137 ldx #$1138 ldb #$05 L4247 lda ,x cmpa #$30 bne L4254 lda #$20 sta ,x+ decb bne L4247 L4254 ldy #$0018 lbra L2B10 L425B clr >$05FB lda #$03 sta >$05FC lda #$01 sta >$05FE nega sta >$05FF lda #$80 sta <u0084 sta <u0060 sta >$0898 sta >$08FD lda <u0083 bpl L4280 ldb #$08 bra L428C L4280 cmpa #$08 bcs L4288 ldb #$07 bra L428C L4288 ldb #$06 inc <u004E L428C stb <u0054 lda <u004E cmpa #$03 bcs L42E6 clr >$010B clr <u0064 clr >$0125 lda <u0083 inca sta <u0063 suba #$13 coma lsla sta >$08FE lda #$14 sta >$08FF lda #$0F sta >$0900 sta >$0179 lda #$80 sta >$0938 sta >$0939 sta <u0083 lda #$01 sta >$087E ldb >$094E clra tfr d,x lda >$02BC,x cmpa #$80 beq L42D5 dec >$087E L42D5 inc <u0052 ldb #$11 cmpa #$C9 bne L42E3 lda #$15 sta <u0054 ldb #$68 L42E3 stb >$0176 L42E6 lbsr L4635 lbsr L03ED lda <u00FD beq L4307 lda >$019B anda #$08 beq L4304 lda >$08AA bne L4307 inc >$08AA lbsr L4522 bra L4307 L4304 sta >$08AA L4307 lda <u004F bne L4341 tst <u004D beq L4312 lbsr L450A L4312 ldb <u004E clr >$0898 clr <u004E clr <u0052 clr <u0039 clr <u003A cmpb #$04 beq L4328 cmpb #$03 beq L4328 rts L4328 lda >$087E bne L4337 lda #$09 sta <u0054 lbsr L4595 lbra L45F0 L4337 lda #$16 sta <u0054 lbsr L45DE lbra L45F0 L4341 lda <u004E cmpa #$03 bcs L42E6 cmpa #$04 beq L43C7 bhi L42E6 lda <u0063 sta >$0954 lbsr L56E2 sta <u006B lda <u0051 nega cmpa #$50 bcs L4363 lbsr L56E2 bra L4364 L4363 clra L4364 sta >$094C L4367 lda <u0050 lsla ror <u006B lsr >$094C lsr >$0954 bne L4367 lda <u0063 cmpa #$01 bne L43B3 lda <u006B ora #$40 sta <u006B lda <u0064 bne L43AB lda <u0051 nega cmpa #$50 bcc L43A7 nega sta >$019B lbsr L56E2 rora lsra lsra adca >$019B tst >$087E beq L439F adca #$20 L439F sta >$019B sta >$08FD inc <u004E L43A7 lda #$FF bra L43B0 L43AB lda >$094C ora #$80 L43B0 sta >$094C L43B3 lda <u004E cmpa #$04 beq L43C7 bhi L43C4 lda <u0053 cmpa #$0F beq L43C4 lbsr L4688 L43C4 lbra L42E6 L43C7 lda >$08FD beq L43DB lbsr L56E2 anda #$3F adda #$40 sta <u005F lbsr L03CE clr >$08FD L43DB lda >$087E beq L43F8 lbsr L03D9 lda <u004D bne L43F2 sta <u0052 sta >$08FD lbsr L47C3 lbra L42E6 L43F2 lda #$80 sta <u004D bra L4409 L43F8 tst <u004D bne L4402 lbsr L442E lbra L42E6 L4402 lbsr L03E7 lda #$FF sta <u004D L4409 lbsr L44D4 lbsr L2B0C lbsr L03E7 lda <u004D cmpa #$80 bne L4421 lbsr L45D1 sta <u00FD lda #$10 bra L4426 L4421 lbsr L4555 lda #$0A L4426 lbsr L450C inc <u004E lbra L42E6 L442E dec >$0179 beq L4434 rts L4434 clr >$08FD lda >$0900 sta <u005F lbsr L03CE clra ldb >$08FE tfr d,y bne L445C dec >$08FE lda #$02 lbsr L3600 lsl >$0900 lbsr L03DF lda #$02 lbsr L3600 bra L44CD L445C bpl L4470 lbsr L4595 lda #$02 sta <u004E ldy #$0009 ldb #$09 stb <u0054 lbra L41BE L4470 lbsr L56E2 tfr a,b andb #$07 cmpb #$03 bcc L447D orb #$03 L447D cmpy #$0007 bcc L4484 lsrb L4484 clra tfr d,y tstb bne L448E leay $01,y bra L44AC L448E lda >$0900 sta <u00CA L4493 lda <u004D bne L44AC lda #$02 lbsr L3600 clra ldb <u00CA tfr d,x L44A1 lbsr L03DF lda <u004F beq L44D3 leax -$01,x bne L44A1 L44AC lda >$08FE beq L44B4 dec >$08FE L44B4 cmpa #$0F bcc L44C6 inc >$0900 inc >$0900 lda >$08FF adda #$06 sta >$08FF L44C6 lbsr L4635 leay -$01,y bne L4493 L44CD lda >$08FF sta >$0179 L44D3 rts L44D4 ldy #$0006 L44D8 lbsr L4635 clra ldb >$0900 tfr d,x cmpx #$000A bcc L44E9 ldx #$000A L44E9 lbsr L03E7 lda <u004F beq L44FE leax -$01,x bne L44E9 lda #$0C lbsr L3600 leay -$01,y bne L44D8 rts L44FE lbsr L4595 lda #$02 sta <u004E lda #$09 sta <u0054 rts L450A lda #$0A L450C sta <u0054 lda #$13 sta <u00CE ldx #$0012 lbsr L3E39 clr <u004D lbsr L03F9 lda #$06 lbra L3600 L4522 lbsr L56E2 bpl L4554 anda #$0F beq L4543 tst <u004A bmi L4533 ldb #$0D stb <u0054 L4533 anda #$03 beq L4543 anda #$01 sta >$08A3 ldb #$10 stb <u0054 lbsr L1B59 L4543 lda <u007E cmpa #$02 beq L454F lda <u004C adda #$04 sta <u004C L454F lda #$02 lbra L3600 L4554 rts L4555 lda >$010A tst >$0107 bne L4561 adda #$99 bra L4563 L4561 adda #$01 L4563 daa sta >$010A bne L456C inc >$0107 L456C inc >$0105 lda <u00F8 bne L457A lda >$0105 cmpa <u00ED bcs L457D L457A lbsr L45B1 L457D clr <u0056 lda #$02 ldx #$0008 ldb >$0176 cmpb #$68 bne L4590 ldx #$0010 lda #$20 L4590 sta <u0055 lbsr L3C36 L4595 lbsr L45D1 L4598 ldb <u00EE beq L45B0 cmpb #$01 bne L45AB ldy #$0001 lda #$C9 lbsr L0815 bra L45AE L45AB lbsr L080F L45AE dec <u00EE L45B0 rts L45B1 tst <u004A bmi L45D0 tst >$08AE bne L45D0 lbsr L56E2 ora #$08 anda #$3F tst <u0085 bne L45CC tst >$0107 beq L45CD lsra lsra L45CC lsra L45CD sta >$08AE L45D0 rts L45D1 clra ldb >$094E tfr d,x lda #$01 sta >$02BC,x rts L45DE lbsr L45D1 L45E1 ldd #$0100 std <u0055 L45E6 lda >$0109 adda #$01 daa sta >$0109 rts L45F0 lbsr L4635 lda #$00 sta <u0057 lda #$12 lbsr L2A9A ldy #$0008 L4600 lbsr L35EF leay -$01,y bne L4600 lda >$0116 lbra L2A9A L460D lda #$FF sta <u004A tst <u0085 beq L4619 lda #$02 sta <u007E L4619 lda #$12 sta <u0054 ldx #$0011 ldb #$11 stb <u00CE inc <u0070 lbsr L3E39 dec <u0070 lda #$FF sta >$0103 lda #$01 lbra L3600 L4635 pshs y,x dec <u005D inc >$019B bne L4641 inc >$019A L4641 lbsr L57CD tst <u004C beq L464B lbsr L3BA6 L464B tst <u004F beq L467D lda #$11 sta <u00CE ldx #$0010 lbsr L3E39 tst <u004A bpl L467D lda >$0126 anda #$03 bne L467D ldx #$0011 ldy #$0012 ldb #$12 lda >$0125 eora #$01 sta >$0125 bne L4678 decb L4678 stb <u00CE lbsr L3E39 L467D dec >$0126 lbsr L3C7C lbsr L393A puls pc,y,x L4688 clr >$09A6 L468B lda <u0063 cmpa #$01 beq L4694 lbsr L03E7 L4694 lda >$09A6 cmpa #$03 bne L46A7 lbsr L4635 lda <u0063 cmpa #$01 beq L46A7 lbsr L03E7 L46A7 ldb >$09A6 cmpb #$01 bne L46B3 lda #$03 lbsr L3600 L46B3 lda <u006B bmi L46C5 adda <u006A sta <u006A bcc L46D1 inc <u0050 bne L46D1 dec <u0050 bne L46D1 L46C5 adda <u006A sta <u006A bcs L46D1 lda <u0050 beq L46D1 dec <u0050 L46D1 lda <u0050 sta <u0061 lda >$094A adda >$094C sta >$094A bcc L46E6 lda <u0051 beq L46E6 dec <u0051 L46E6 lda <u0051 sta <u0062 tst <u0064 bne L46F4 lda <u0063 cmpa #$01 beq L4700 L46F4 ldd <u0063 subd #$0010 std <u0063 tsta bne L4700 inc <u0063 L4700 clra ldb <u0087 lslb tfr d,x tst >$0A5D,x bne L4714 lda >$0A5E,x cmpa #$22 bcs L4717 L4714 lbsr L472B L4717 tst <u004F beq L472A inc >$09A6 lda >$09A6 anda #$03 sta >$09A6 lbne L468B L472A rts L472B ldd <u0063 std >$05F6 ldd <u0061 std >$05F4 lbsr L2361 ldd >$05F6 std <u0063 ldd >$05F4 std <u0061 lda <u0050 cmpa #$30 bcc L4749 clra L4749 cmpa #$D0 bcs L474E clra L474E sta >$0169 beq L47BD adda #$20 cmpa #$D0 bls L475B lda #$D0 L475B sta >$016B lda <u0051 nega cmpa #$AF bcs L4766 clra L4766 sta >$016A beq L47BD adda #$20 cmpa #$AF bcs L4773 lda #$AF L4773 sta >$016C ldd <u0063 subd #$0100 bcc L4780 clra bra L478C L4780 lslb rola lslb rola lslb rola cmpa #$1E bls L478C lda #$1E L478C pshs a lda #$1E suba ,s+ sta >$016F ldx #$2CD6 lda >$087E bne L47AA ldx #$2CCE lda >$0176 cmpa #$68 bne L47AA ldx #$2CD2 L47AA stx >$016D lda >$09A6 lsla ldx #$2EFD ldx a,x ldy #$0169 lbsr L2978 L47BD lbsr L23EB lbra L279E L47C3 lbsr L56E2 anda #$03 adda <u00EA bpl L47CD clra L47CD adda #$02 sta >$09C4 lda #$03 sta >$0600 lda #$0C sta >$05F9 lbsr L4879 lbsr L4879 lbsr L4879 L47E5 lbsr L4899 lbsr L56E2 anda #$07 cmpa #$06 bls L47F2 clra L47F2 sta >$05FA lbsr L56E2 anda #$07 cmpa #$04 bls L4800 anda #$01 L4800 sta >$05FD lda >$05FB adda >$05FE bpl L4810 lda #$01 sta >$05FE L4810 sta >$05FB cmpa >$0600 bne L481B neg >$05FE L481B lda >$05FC adda >$05FF bpl L4828 lda #$01 sta >$05FF L4828 sta >$05FC cmpa >$0600 bne L4833 neg >$05FF L4833 lbsr L48B1 lbsr L48D6 lbsr L48FE lbsr L4924 lbsr L494F lbsr L23EB lbsr L279E lda >$0600 cmpa >$05FB beq L4855 cmpa >$05FC bne L486F L4855 ldy #$0002 L4859 lbsr L35EF leay -$01,y bne L4859 dec >$09C4 bpl L486A clr <u005C lbra L074B L486A bne L486F inc >$0600 L486F lbsr L57CD lda <u004F lbne L47E5 rts L4879 bsr L4899 lbsr L48B1 lbsr L48D6 lbsr L48FE lbsr L4924 lbsr L494F lbsr L23EB lbsr L279E lda >$05F9 suba #$04 sta >$05F9 rts L4899 ldd <u0063 std >$05F6 ldd <u0061 std >$05F4 lbsr L2361 ldd >$05F6 std <u0063 ldd >$05F4 std <u0061 rts L48B1 ldb #$22 addb >$05F9 pshs b ldb #$5F subb ,s+ ldu #$0E83 clra lslb rola ldu d,u ldb #$1F leau b,u ldy #$1763 lda #$11 ldb #$36 subb >$05F9 lbra L497A L48D6 lda >$05FA lsla ldx #$2C90 ldy a,x ldb #$22 addb >$05F9 subb $01,y pshs b ldb #$5F subb ,s+ ldu #$0E83 clra lslb rola ldu d,u ldb #$21 leau b,u ldd ,y++ lbra L497A L48FE lda >$05FD lsla ldx #$2CA8 ldy a,x ldb #$20 addb >$05F9 pshs b ldb #$5F subb ,s+ ldu #$0E83 clra lslb rola ldu d,u ldb #$24 leau b,u ldd ,y++ lbra L497A L4924 lda >$05FB lsla ldx #$2C9E ldy a,x ldx #$2CB2 leax a,x ldb $01,x addb >$05F9 pshs b ldb #$5F subb ,s+ ldu #$0E83 clra lslb rola ldu d,u ldb ,x leau b,u ldd ,y++ lbra L497A L494F lda >$05FC lsla ldx #$2C9E ldy a,x ldx #$2CBC leax a,x ldb $01,x addb >$05F9 pshs b ldb #$5F subb ,s+ ldu #$0E83 clra lslb rola ldu d,u ldb ,x leau b,u ldd ,y++ lbra L49AD L497A std <u00CA L497C pshs u ldb <u00CA L4980 lda ,y beq L499C anda #$F0 bne L498C lda ,u anda #$F0 L498C pshs a lda ,y anda #$0F bne L4998 lda ,u anda #$0F L4998 ora ,s+ sta ,u L499C leau u0001,u leay $01,y decb bne L4980 puls u leau <u0050,u dec <u00CB bne L497C rts L49AD std <u00CA L49AF pshs u,y ldb <u00CA leay b,y L49B5 lda ,-y beq L49DD anda #$0F bne L49C3 lda ,u anda #$F0 bra L49C7 L49C3 lsla lsla lsla lsla L49C7 pshs a lda ,y anda #$F0 bne L49D5 lda ,u anda #$0F bra L49D9 L49D5 lsra lsra lsra lsra L49D9 ora ,s+ sta ,u L49DD leau u0001,u decb bne L49B5 puls u,y ldb <u00CA leay b,y leau <u0050,u dec <u00CB bne L49AF rts L49F0 lda >$0602 beq L49F8 lbsr L4B2E L49F8 lda <u0078 suba #$04 sta <u0078 clr >$08F3 lda >$08B3 tfr a,b anda #$03 sta >$08CD lsrb lsrb subb #$10 bcc L4A16 lda >$08CF bra L4A34 L4A16 cmpb #$1F bcs L4A1F lda >$08EE bra L4A34 L4A1F clra tfr d,y ldb #$03 L4A24 adda >$08CF,y cmpb >$08CD bne L4A2F leay $01,y L4A2F decb bpl L4A24 asra asra L4A34 sta >$08CE ldb <u0049 ldy #$3A84 lda b,y adda >$08B5 adca >$08CE sta >$0162 lda >$08B3 anda #$FE cmpa #$30 bcc L4A52 clra L4A52 cmpa #$D0 bcs L4A57 clra L4A57 sta >$0161 lbeq L4A8F adda #$08 cmpa #$D0 bls L4A66 lda #$D0 L4A66 sta >$0163 lda >$0162 cmpa #$50 bcc L4A71 clra L4A71 cmpa #$AF bcs L4A76 clra L4A76 sta >$0162 lbeq L4A8F adda #$08 cmpa #$AF bls L4A85 lda #$AF L4A85 sta >$0164 lda <u0049 sta >$0167 bsr L4A9E L4A8F dec <u0049 bpl L4A95 clr <u0049 L4A95 lda >$0616 beq L4A9D dec >$0616 L4A9D rts L4A9E ldy #$2CDA lda >$0616 beq L4AA9 adda #$03 L4AA9 pshs a ldb a,y stb >$0165 lda #$01 sta >$0602 clra ldb >$0167 cmpb #$18 bne L4AC1 lda #$06 bra L4ACF L4AC1 cmpb #$17 bne L4AC9 lda #$04 bra L4ACF L4AC9 cmpb #$16 bne L4ACF lda #$02 L4ACF adda ,s adda ,s+ ldy #$2DE7 ldy a,y ldx #$2EDD ldb >$0162 L4AE0 pshs y,b subb #$50 bcs L4B0A cmpb #$57 bcc L4B0A ldu #$0D33 clra lslb rola ldu d,u ldb >$0161 subb #$30 lsrb leau b,u ldb >$0161 L4AFD lda ,u sta ,x+ bsr L4B15 addb #$02 cmpb >$0163 bcs L4AFD L4B0A puls y,b leay $04,y incb cmpb >$0164 bcs L4AE0 rts L4B15 lda ,y beq L4B29 lda ,y anda >$0165 pshs a lda ,y coma anda ,u ora ,s+ sta ,u L4B29 leay $01,y leau u0001,u rts L4B2E ldx #$2EDD ldb >$0162 L4B34 pshs b subb #$50 bcs L4B5C cmpb #$57 bcc L4B5C ldu #$0D33 clra lslb rola ldu d,u ldb >$0161 subb #$30 lsrb leau b,u ldb >$0161 L4B51 lda ,x+ sta ,u+ addb #$02 cmpb >$0163 bcs L4B51 L4B5C puls b incb cmpb >$0164 bcs L4B34 clr >$0602 rts lda #$80 sta <u0078 clr <u0049 rts L4B6F clr <u003D clr <u0035 lda <u005C cmpa #$02 bne L4BB2 tst <u004F bne L4BB2 lbsr getjoyxy ldb >joyx ldx #$0000 lbsr L52FB lda <u007E cmpa #$00 bne L4B9D lda <u0043 cmpa #$03 bcs L4B99 cmpa #$FD bcs L4B9D L4B99 clr <u0043 clr <u0044 L4B9D clrb tst >$099A beq L4BA8 ldb #$3F subb >joyy L4BA8 ldx #$0002 lbsr L52FB lsl <u0046 rol <u0045 L4BB2 tst <u0085 beq L4BB9 lbsr L5282 L4BB9 lda <u007E cmpa #$02 bne L4BD6 lda #$70 sta <u003D ldd <u0039 lslb rola lslb rola nega sta <u0035 lda #$F0 sta <u0036 clra lbsr L3E92 bra L4BEC L4BD6 tst <u004E bne L4BEC cmpa #$00 bne L4BE3 lbsr L5013 bra L4BEC L4BE3 lda #$01 lbsr L5274 ldd <u0039 std <u0037 L4BEC tst <u004F beq L4BF1 rts L4BF1 tst <u0035 bne L4C30 ldy #$0000 ldd <u0039 subd <u0043 stb <u00CB tsta bpl L4C0E leay -$01,y cmpa #$F8 bcc L4C0C clr <u00CB lda #$F8 L4C0C bne L4C18 L4C0E cmpa #$08 bcs L4C18 lda #$FF sta <u00CB lda #$07 L4C18 pshs a tfr y,d puls a stb <u00CA ldb #$04 L4C22 lsl <u00CB rola decb bne L4C22 sta <u00CB ldd <u0039 subd <u00CA std <u0039 L4C30 tst <u003D bne L4C6D ldy #$0000 ldd <u003E subd <u0045 stb <u00CB tsta bpl L4C4D leay -$01,y cmpa #$E0 bcc L4C4B clr <u00CB lda #$E0 L4C4B bra L4C57 L4C4D cmpa #$20 bcs L4C57 lda #$FF sta <u00CB lda #$1F L4C57 pshs a tfr y,d puls a stb <u00CA lsl <u00CB rola lsl <u00CB rola sta <u00CB ldd <u003E subd <u00CA std <u003E L4C6D ldy #$0001 lda <u0036 bne L4C7B ldy #$0005 bra L4C9C L4C7B suba <u003E sbca <u003E sta <u00CB lda <u0036 lsra ora #$07 pshs a lbsr L56E2 puls b andb <u0032 adcb <u00CB bcc L4C95 ldb #$FF L4C95 clra lslb rola addd <u0041 std <u0041 L4C9C tst >$099A beq L4CD2 lda <u0041 adda #$02 sta <u00CB lda #$00 rola sta <u00CA lda <u0042 L4CAE lsla rol <u00CB rol <u00CA leay -$01,y bne L4CAE ldd <u00CA addd #$0001 std <u00CA ldd <u0041 subd <u00CA std <u0041 bcc L4CD2 clr <u0041 clr <u0042 tst >$0120 beq L4CD2 lbsr L5274 L4CD2 lda <u003A adda <u0035 sta <u003A tst <u0035 bpl L4CE2 bcs L4CE6 dec <u0039 bra L4CE6 L4CE2 bcc L4CE6 inc <u0039 L4CE6 lda <u0039 bmi L4CF6 cmpa #$05 bcs L4CFE lda #$FF sta <u003A lda #$04 bra L4CFE L4CF6 cmpa #$FB bcc L4CFE clr <u003A lda #$FB L4CFE sta <u0039 lda <u003F adda <u003D sta <u003F tst <u003D bpl L4D10 bcs L4D14 dec <u003E bra L4D14 L4D10 bcc L4D14 inc <u003E L4D14 lda <u003E bmi L4D25 cmpa <u003C bcs L4D2D lda #$FF sta <u003F lda <u003C deca bra L4D2D L4D25 cmpa <u003B bcc L4D2D clr <u003F lda <u003B L4D2D sta <u003E ldb <u003F lslb rola lslb rola lslb rola sta <u0034 bcc L4D3C nega L4D3C ldb <u0041 lbsr L1040 clrb tst <u0034 bpl L4D4B decb nega bne L4D4B incb L4D4B exg a,b lslb rola lslb rola lslb rola std >$0907 ldd <u0039 stb <u00CB ldb #$04 L4D5C asra ror <u00CB decb bne L4D5C sta <u00CA ldd >$0909 addd <u00CA anda #$3F std >$0909 lbsr L0C1E ldd >$090B addd >$0903 std >$090B ldd >$090D addd >$0905 std >$090D clra ldb <u007E tfr d,y ldd <u0047 addd >$0907 stb <u0048 cmpa #$FF bne L4D94 clra L4D94 cmpa #$50 bcs L4DAD ldb #$FF cmpy #$0002 bne L4DA9 cmpa #$60 bcs L4DAD stb >$08A1 bra L4DAD L4DA9 stb <u0048 lda #$4F L4DAD sta <u0047 lda <u003F lsla lda <u003E adca #$0C sta >$08F6 lda <u0038 lsla lda <u0037 adca #$05 sta >$08F4 lda #$38 tst >$08A3 bne L4DCF suba >$0909 bra L4DD2 L4DCF suba >$019B L4DD2 anda #$3F pshs a anda #$03 sta >$089B puls a lsra lsra sta >$087C ldy #$0002 lda <u0036 cmpa #$F0 beq L4E0F lda <u00FB bne L4E0A sta >$099A ldb >$0998 beq L4E2B dec >$0998 pshs a lbsr L56E2 puls a cmpb <u0032 bcs L4E2B lda #$FF bra L4E0F L4E0A lda #$FF sta >$0998 L4E0F sta >$099A lda <u0036 beq L4E2B cmpa #$F0 bcc L4E1E lda #$04 bra L4E2B L4E1E lda <u0047 lsra lsra lsra eora #$0F cmpa #$04 bcc L4E2B lda #$04 L4E2B sta >$011F,y ldd >$099C asra rorb std >$08B7 ldy #$0000 lda >$09A0 sta >$08BA bpl L4E45 leay -$01,y L4E45 tfr y,d tfr b,a ldb #$03 L4E4B lsl >$08BA rola decb bne L4E4B sta >$08B9 ldy #$0000 lda >$099C asra bpl L4E61 leay -$01,y L4E61 adda >$088F sta >$088F tfr y,d adcb >$088E stb >$088E ldy #$0000 lda >$09A0 asra asra asra bpl L4E7D leay -$01,y L4E7D adda >$0894 sta >$0894 tfr y,d adcb >$0893 stb >$0893 lda <u0049 beq L4EAF bmi L4E9D cmpa #$18 bne L4E9A lbsr L504D bra L4E9D L4E9A lbsr L50BF L4E9D ldd >$08B3 subd >$08B7 std >$08B3 ldd >$08B5 addd >$08B9 std >$08B5 L4EAF ldb <u0071 bmi L4EEB decb stb <u0071 bpl L4EC9 lda >$0886 pshs a lbsr L524C lda ,s+ beq L4EEB lbsr L4FE0 bra L4EEB L4EC9 tfr b,a lsra lsra sta <u0072 cmpb #$5A beq L4EE5 lda <u007A cmpa #$1F bcs L4EE8 cmpb #$3C beq L4EE5 cmpa #$3D bcs L4EE8 cmpb #$28 bne L4EE8 L4EE5 lbsr L179B L4EE8 lbsr L4F47 L4EEB ldb >$09A4 incb cmpb #$07 bcs L4EF4 clrb L4EF4 clra stb >$09A4 tfr d,y lda >$0913,y sta >$099D lda <u003A sta >$0913,y lda >$091A,y sta >$099C lda <u0039 sta >$091A,y lda >$0921,y sta >$09A0 lda <u003F suba <u0040 sta >$0902 sta >$0921,y lda <u003F sta <u0040 lda >$0928,y sta >$09A2 lda >$08F4 sta >$0928,y lda >$092F,y sta >$09A3 lda >$08F6 sta >$092F,y rts L4F47 ldd >$0888 subd >$08B7 std >$0888 lda >$08B7 bpl L4F5C bcs L4F61 inc >$0887 bra L4F61 L4F5C bcc L4F61 dec >$0887 L4F61 ldd >$088B addd >$08B9 std >$088B lda >$08B9 bmi L4F76 bcc L4F7B inc >$088A bra L4F7B L4F76 bcs L4F7B dec >$088A L4F7B ldd >$0888 subd >$088E std >$0888 lda >$088E bpl L4F90 bcs L4F95 inc >$0887 bra L4F95 L4F90 bcc L4F95 dec >$0887 L4F95 ldd >$088B addd >$0893 std >$088B lda >$0893 bmi L4FAA bcc L4FAF inc >$088A bra L4FAF L4FAA bcs L4FAF dec >$088A L4FAF lda >$0887 bne L4FDC lda >$088A bne L4FDC leax >L5967,pcr clra ldb <u0071 lda d,x ldb >$0895 cmpb #$30 bcs L4FCA clra L4FCA cmpb #$20 bcs L4FCF asra L4FCF adda >$088B sta >$0881 lda >$0888 sta >$0884 rts L4FDC clr >$0884 rts L4FE0 tst >$0887 bne L5012 tst >$088A bne L5012 lda >$0888 cmpa #$34 bcs L5012 cmpa #$AC bcc L5012 lda >$088B cmpa #$1A bcs L5012 cmpa #$6A bcc L5012 lda #$20 sta <u004C lbsr L0ACA lbsr L1B59 lda #$13 sta >$0601 inc >$012A L5012 rts L5013 tst <u0037 bpl L5023 ldd <u0037 addd #$0014 bmi L502D ldd #$0000 bra L502D L5023 ldd <u0037 subd #$0014 bcc L502D ldd #$0000 L502D std <u0037 tst <u007D beq L503B ldd <u0047 subd #$0048 std <u0047 L503A rts L503B tst <u004E bne L503A ldd #$0000 std <u0037 inc <u004E lda <u0071 bmi L503A lbra L524C L504D ldd >$0972 std >$08BB clr >$08BD ldd >$0974 std >$08BE clr >$08C0 lda >$0977 sta >$08C2 lda >$0976 adda #$08 bcc L506E lda #$FF L506E sta >$08C1 ldy #$0000 ldd >$0978 std >$08C4 tsta bpl L5080 leay -$01,y L5080 tfr y,d lsl >$08C5 rol >$08C4 rolb lsl >$08C5 rol >$08C4 rolb stb >$08C3 ldy #$0000 ldd >$097A std >$08C7 tsta bpl L50A2 leay -$01,y L50A2 tfr y,d lsl >$08C8 rol >$08C7 rolb lsl >$08C8 rol >$08C7 rolb stb >$08C6 ldd >$097E asra rorb deca std >$08C9 rts L50BF ldd >$08BC addd >$08C4 std >$08BC sta >$085D lda >$08BB adca >$08C3 anda #$0F sta >$08BB sta >$085C sta <u00CC ldd >$08BF addd >$08C7 std >$08BF sta >$085F lda >$08BE adca >$08C6 anda #$0F sta >$08BE sta >$085E lda >$08C2 adda >$08CA sta >$08C2 lda >$08C1 adca >$08C9 bcc L510F tst >$08C9 bmi L5115 lda #$FF bra L5115 L510F tst >$08C9 bpl L5115 clra L5115 sta >$08C1 lda <u0071 bmi L511F lbsr L51F6 L511F lda >$08BF lsla lda >$08BE adca #$00 lsla lsla lsla lsla sta <u00CA lda >$08BC lsla ldb >$08BB adcb #$00 andb #$0F orb <u00CA stb >$08CB clra tfr d,y lda >$02BC,y beq L516C lda >$01BC,y adda #$10 bcc L5151 lda #$FF L5151 cmpa >$08C1 bcs L516C lda >$08BC cmpa #$30 bcs L5161 cmpa #$D0 bcs L516C L5161 lda >$08BF cmpa #$30 bcs L5192 cmpa #$D0 bcc L5192 L516C lbsr L0E2D lda >$0860 cmpa >$08C1 bcc L5178 rts L5178 lda >$08BC cmpa #$30 bcs L5185 cmpa #$D0 lbcs L51E6 L5185 lda >$08BF cmpa #$30 bcs L5192 cmpa #$D0 lbcs L51E6 L5192 clra ldb >$08CB tfr d,y lda >$02BC,y lbeq L51E6 cmpa #$F8 lbcc L51E6 pshs a lda #$FC sta >$02BC,y sta >$08A9 lbsr L5256 puls a cmpa #$64 bcs L51E6 bne L51CB lbsr L45E1 lda #$28 sta <u0060 lda <u0084 ora #$80 sta <u0084 bra L51E6 L51CB cmpa #$80 bne L51D8 lbsr L45E1 ldy #$0016 bra L51DF L51D8 lbsr L4598 ldy #$0009 L51DF tfr y,d stb <u0054 lbsr L41BE L51E6 lda #$07 sta >$0616 clr <u0049 lda #$40 cmpa <u0077 bcs L51F5 sta <u0077 L51F5 rts L51F6 lda >$0886 lbeq L5255 lda <u0072 adda #$04 suba <u0049 bcc L5206 nega L5206 cmpa #$04 bcc L5255 lda >$08B3 suba #$0C sbca >$0884 bcc L5215 nega L5215 sta <u00CA lda >$08B5 adda #$42 suba >$0881 bcc L5222 nega L5222 adda <u00CA rora lsra pshs a clra ldb <u0049 tfr d,x puls a cmpa >$3D08,x bcc L5255 clr >$0886 lbsr L0ACA lbsr L51E6 lbsr L5256 ldd #$0250 std <u0055 lbsr L45E6 lbra L179B L524C lda #$FF sta <u0072 sta <u0071 sta >$0886 L5255 rts L5256 inc <u0052 lda #$77 sta <u0057 lda #$12 lbsr L2A9A lbsr L35E7 lda >$0116 lbsr L2A9A lda #$02 sta >$095E lda #$80 sta <u0077 rts L5274 sta >$0120 sta >$0122 sta >$0123 ldy #$0003 rts L5282 clr <u0045 clr <u0046 clr <u0043 clr <u0044 lda >$0856 suba >$0857 sta <u0035 lda >$0856 adda >$0857 lsra cmpa <u0047 bcc L52A8 lda <u0035 bpl L52A2 nega L52A2 cmpa #$10 bcc L52A8 clr <u0035 L52A8 lda >$099A bne L52B2 lda #$C8 sta <u003D rts L52B2 ldb #$38 lda <u007D cmpa #$2A bcs L52BB clrb L52BB stb <u003D lda <u0047 cmpa #$2A bcs L52CB lda <u003E bmi L52CB lda #$C8 bra L52D3 L52CB lda #$20 suba <u0047 asra bmi L52D3 clra L52D3 adda <u003D sta <u003D lda >$098E cmpa #$30 bcs L52E3 cmpa #$D1 bcc L52E3 rts L52E3 lsla adda <u0035 sta <u0035 lda >$0990 cmpa #$20 bcs L52F4 cmpa #$E1 bcc L52F4 rts L52F4 lsla coma adda <u003D sta <u003D rts L52FB leay >L5A69,pcr ldb b,y subb #$80 clra lslb bcc L530A leay -$01,y deca L530A rola lslb rola lslb rola lslb rola std <$43,x rts L5315 ldx #$076C ldu #$0775 ldy #$07C5 bsr L5343 ldx #$0776 ldy #$0816 bsr L535F ldx #$07C6 ldy #$0820 bsr L5391 lda >$082A ldb #$09 ldu #$0816 L533B sta b,u decb bpl L533B lbra L53B4 L5343 ldb #$50 L5345 lda ,-x cmpa ,-x bcc L5355 sta b,u lda ,x sta b,y decb bne L5345 rts L5355 sta b,y lda ,x sta b,u decb bne L5345 rts L535F lda #$5F sta >$082A lda #$0A sta <u0005 L5368 lda #$5F sta ,y lda #$04 sta <u0004 L5370 ldd ,x++ cmpa ,y bcc L5378 sta ,y L5378 cmpb ,y bcc L537E stb ,y L537E dec <u0004 bne L5370 lda ,y+ cmpa >$082A bcc L538C sta >$082A L538C dec <u0005 bne L5368 rts L5391 lda #$0A sta <u0005 L5395 clr ,y lda #$04 sta <u0004 L539B ldd ,x++ cmpa ,y bls L53A3 sta ,y L53A3 cmpb ,y bls L53A9 stb ,y L53A9 dec <u0004 bne L539B leay $01,y dec <u0005 bne L5395 rts L53B4 bsr L53BF lbsr L5431 lbsr L54A2 lbra L54FD L53BF lda >$082A cmpa #$5F bcc L53CF ldb #$5F stb >$0529 ldb #$BB bsr L53DC L53CF lda >$082A lbeq L5430 sta >$0529 clra ldb #$CC L53DC sta >$052B nega adda >$0529 inca sta >$0529 orcc #IntMasks mask interrupts sts <u0006 stb >$052F ldb >$052B clra lslb rola lds #$0E83 lds d,s leas <$50,s lda >$052F sta >$0530 ldb >$052F ldx >$052F ldy >$052F ldu >$052F L5412 pshs u,y,x,b,a pshs u,y,x,b,a pshs u,y,x,b,a pshs u,y,x,b,a pshs u,y,x,b,a pshs u,y,x,b,a pshs u,y,x,b,a pshs u,y,x,b,a pshs u,y,x,b,a pshs u,y,x,b,a dec >$0529 bne L5412 lds <u0006 andcc #^IntMasks unmask interrupts L5430 rts L5431 ldx #$082A ldy #$0815 ldb #$CC stb >$0557 lda #$0A L543F ldb ,x cmpb a,y bcc L5456 pshs y,x,a sta >$0533 stb >$0529 lda a,y ldb >$0557 bsr L545A puls y,x,a L5456 deca bne L543F rts L545A stb >$052F stb >$0530 suba >$0529 sta >$052B orcc #IntMasks mask interrupts sts <u0006 ldb >$0529 lds #$0E83 leas b,s lds b,s ldb >$052B lda >$0533 lsla lsla lsla leas a,s lda >$052F ldx >$052F ldy >$052F ldu >$052F tfr a,dp L5491 pshs u,y,x,dp,a leas <-$48,s decb bpl L5491 clra tfr a,dp lds <u0006 andcc #^IntMasks unmask interrupts rts L54A2 ldu #$081F ldy #$0775 ldb #$CC stb >$0557 lda #$50 ldx #$0008 L54B3 ldb ,u cmpb a,y bcc L54CA pshs u,y,x,a sta >$0533 stb >$0529 lda a,y ldb >$0557 bsr L54D7 puls u,y,x,a L54CA leax -$01,x bne L54D3 leau -u0001,u ldx #$0008 L54D3 deca bne L54B3 rts L54D7 stb >$052F suba >$0529 pshs a ldb >$0529 ldu #$0E83 leau b,u ldu b,u ldb >$0533 decb leau b,u puls b lda >$052F L54F4 sta ,u leau <-u0050,u decb bpl L54F4 rts L54FD lda #$CC ldy #$076C ldx #$07C6 sta >$0557 lda #$0F sta >$0529 lda #$50 sta >$0533 L5513 lda ,-y cmpa ,-x bls L551F tfr a,b subb ,x bsr L5537 L551F com >$0529 lda ,-y cmpa ,x bls L552E tfr a,b subb ,x bsr L5537 L552E com >$0529 dec >$0533 bne L5513 rts L5537 ldu #$0E83 leau a,u ldu a,u lda >$0533 deca leau a,u lda >$0529 sta >$0556 anda >$0557 sta >$052F com >$0556 L5553 lda ,u anda >$0556 ora >$052F sta ,u leau <u0050,u decb bne L5553 rts L5564 ldu #$3F47 ldd #$004F sta >$0612 stb >$0613 ldy #$0060 L5574 lbsr L5680 tsta beq L5592 pshs u,y,b,a bsr L55AB ldx #$1C00 L5581 leax -$01,x bne L5581 puls u,y,b,a pshs u,y,b,a bsr L55AB puls u,y,b,a lbsr L5666 bra L5574 L5592 ldd #$004F sta >$0612 stb >$0613 leau <u0050,u leay -$01,y bne L5574 ldx #$0032 lbsr L5819 lbra L56A2 L55AB lslb stb >$0609 tfr y,d pshs b ldb #$78 subb ,s+ stb >$060B lda #$50 sta >$0605 lda #$00 sta >$0607 clr >$0611 lda >$0605 cmpa >$0609 bls L55E4 ldb >$0609 sta >$0609 stb >$0605 lda >$0607 ldb >$060B sta >$060B stb >$0607 L55E4 lda >$0609 suba >$0605 sta >$060D lda >$060B suba >$0607 bcc L55F8 dec >$0611 L55F8 sta >$060E lda #$80 sta >$0606 sta >$0608 lda >$0605 sta >$060F lda >$0607 sta >$0610 L560F lda >$0605 ldb >$0607 lbsr L564C L5618 clra ldb >$060D addd >$0605 std >$0605 lda >$0611 ldb >$060E addd >$0607 std >$0607 ldb >$0605 cmpa >$0610 bne L563B cmpb >$060F beq L5618 L563B stb >$060F sta >$0610 cmpb >$0609 bcs L560F cmpa >$060B bne L560F rts L564C pshs a ldu #$0D03 clra lslb rola ldu d,u puls b lda #$F0 lsrb bcc L565F lda #$0F L565F anda #$77 eora b,u sta b,u rts L5666 pshs y,b,a tfr y,d pshs b ldb #$78 subb ,s+ lda #$50 mul addd >scrnaddr screen address tfr d,y lda ,s ldb $01,s sta b,y puls pc,y,b,a L5680 clra L5681 ldb >$0612 cmpb >$0613 beq L5690 inc >$0612 lda b,u beq L5681 L5690 rts clra L5692 ldb >$0613 cmpb >$0612 beq L56A1 dec >$0613 lda b,u beq L5692 L56A1 rts L56A2 lda #$F0 sta >$0556 ldb #$04 L56A9 pshs b ldu #$3F47 decb lsrb leau b,u ldy #$0060 L56B6 ldb #$28 L56B8 lda >$0556 anda #$00 pshs a lda >$0556 coma anda ,u ora ,s+ sta ,u++ decb bne L56B8 leay -$01,y bne L56B6 lbsr L279E ldx #$001E lbsr L5819 com >$0556 puls b decb bne L56A9 rts L56E2 pshs x,b inc <u0033 ldb <u0033 leax >L5867,pcr abx lda ,x sta <u0032 puls pc,x,b L56F3 ldd >scrnaddr screen address addd #$2670 tfr d,u ldb #$3A lda #$77 L56FF sta <u001D,u sta <u001E,u sta <u0030,u sta <u0031,u leau <u0050,u decb bne L56FF rts L5712 lda >$0177 sta >$0557 ldu >scrnaddr screen address leau >u35A0,u ldb #$09 lda >$0557 L5724 lda ,u cmpa #$77 beq L5731 lda >$0557 sta ,u sta u0001,u L5731 leau <u0050,u decb bne L5724 rts L5738 pshs a clr <u0021 stb <u0022 addb #$7B clra tfr d,y lda #$1D bra L574E L5747 pshs a sty <u0021 lda #$30 L574E sta <u0025 cmpy #$007B bcs L5774 cmpy #$00B4 bhi L5774 tfr y,d ldu #$0D03 clra lslb rola ldu d,u ldb <u0025 leau b,u lda ,s+ sta ,u sta u0001,u ldy <u0021 rts L5774 lda ,s+ ldy <u0021 rts rts L577B ldu >scrnaddr screen address leau >u0DE7,u ldb #$0C lbsr L57B0 ldu >scrnaddr screen address leau >u14C7,u ldb #$0C lbsr L57B0 ldu >scrnaddr screen address leau >u12E3,u lbsr L57A4 ldu >scrnaddr screen address leau >u1333,u L57A4 ldb #$04 lda #$11 L57A8 sta u0005,u sta ,u+ decb bne L57A8 rts L57B0 lda #$11 L57B2 sta ,u leau <u0050,u decb bne L57B2 rts ldb #$09 lda #$00 clr <u0057 rts L57C2 rts L57C3 lda >$0CEC eora #$80 sta >$0CEC rts L57CC rts L57CD pshs y lbsr getjoyxy get joystick X/Y lda >button get button value beq L57DB if none pressed, branch lda #$3E bra L57E3 L57DB lbsr L4019 bcs L57EB lbsr readch L57E3 tfr a,b clra tfr d,x lbsr L4046 L57EB lda <u0054 bne L5806 lda >$0103 bmi L5806 dec >$0103 bpl L5810 lda <u004F bne L5803 lda #$0E sta <u0054 bra L5806 L5803 lbsr L2B0C L5806 clra ldb <u0054 beq L5810 tfr d,y lbsr L41BE L5810 lda <u0055 beq L5817 lbsr L41FD L5817 puls pc,y L5819 ldy #$01F4 L581D leay -$01,y bne L581D leax -$01,x bne L5819 rts lda #$80 lbsr L582B L582B deca bne L582B rts L582F clr >$011E lbra L57C3 lbsr L4019 bcs L5865 lbsr readch cmpa #$E0 bcs L5843 anda #$DF L5843 cmpa #$12 bne L5859 lbsr L03CD tst <u0079 beq L5851 sta >$0127 L5851 lda #$01 L5853 sta >$0CFC lbra L036B L5859 cmpa #$13 bne L5865 lda >$0171 eora #$01 sta >$0171 L5865 rts rts L5867 fcb $af,$5b,$c1,$97,$d4,$cc,$30,$31,$51,$b8,$f3,$d0,$d4,$89,$ed fcb $1c,$1b,$86,$b3,$8b,$72,$ad,$fe,$58,$0c,$42,$7b,$73,$38,$b0 fcb $f9,$1b,$a2,$87,$36,$9e,$8f,$44,$86,$4b,$b7,$7a,$89,$61,$64 fcb $36,$cf,$fc,$7a,$da,$7c,$01,$da,$4c,$dd,$0f,$8c,$8f,$ef,$cb,$fc fdb $ac59,$90e4,$27f3,$b126,$975f,$a315 fdb $2031,$a1a7,$473c,$28e7,$97c3,$d05b,$3b24,$9401 fdb $b155,$fee6,$f549,$9e74,$bc46,$ac47,$55a4,$d900 fdb $e9fe,$606a,$6980,$6a8e,$68b1,$dcf9,$a5e3,$7665 fdb $11fd,$5a22,$e1c2,$54b8,$47cd,$7096,$7267,$0acf fdb $eec3,$c104,$4173,$846b,$9585,$ed5d,$763a,$fcc9 fdb $bc16,$6606,$1dd0,$372c,$ff5b,$28e0,$9351,$dd96 fdb $c2dc,$4ac9,$3edc,$db9c,$3f32,$4432,$7bb7,$6740 fdb $648e,$f513,$0b91,$a187,$c3bb,$d82c,$eb7d,$5f37 fdb $ec1d,$8a15,$1fd4,$9a6c,$13fc,$2a11,$66e7,$77e6 fdb $d81c,$5ffd,$f967,$a2d9,$8148,$a505,$4207,$7cc7 fdb $9a73,$e9cb,$afd0,$62f9,$16b1,$b1bf,$6381,$c633 fdb $235d,$5e93,$729b fcb $19 L5967 fcb $00 fdb $0000,$0000,$0000,$0000 fdb $0000,$0000,$0000,$ffff,$ffff,$ffff,$ffff,$ffff fdb $ffff,$fffe,$fefe,$fefe,$fefe,$fefe,$fefe,$fdfd fdb $fdfd,$fdfd,$fdfd,$fdfc,$fcfc,$fcfc,$fcfc,$fbfb fdb $fbfb,$fbfb,$fafa,$fafa,$faf9,$f9f9,$f9f8,$f8f8 fdb $f7f7,$f7f6,$f6f6,$f5f5,$f4f4,$f4f3,$f3f2,$f2f1 fdb $f1f0,$f0ef,$efee,$eeed,$ecec,$ebeb,$eae9,$e9e8 fdb $e7e7,$e6e5,$e5e4,$e3e2,$e2e1,$e0df,$dede,$dddc fdb $dbda,$d9d9,$d8d7 fcb $d6 L59E7 fcb $00 fdb $0006,$420c,$8312,$c218 fdb $fe1f,$3625,$6a2b,$9831,$bf37,$de3d,$f544,$034a fdb $054f,$fd55,$e85b,$c561,$9567,$566d,$0672,$a678 fdb $347d,$b083,$1888,$6c8d,$ab92,$d497,$e79c,$e2a1 fdb $c5a6,$8fab,$3faf,$d5b4,$4fb8,$aebc,$f1c1,$16c5 fdb $1ec9,$07cc,$d1d0,$7bd4,$06d7,$70da,$b8dd,$dfe0 fdb $e3e3,$c5e6,$84e9,$1feb,$96ed,$e9f0,$17f2,$21f4 fdb $05f5,$c3f7,$5bf8,$cdfa,$19fb,$3efc,$3dfd,$15fd fdb $c5fe,$4ffe,$b1fe,$ecff fcb $00 L5A69 fcb $00 fdb $0000,$0000,$0000 fdb $0004,$0c14,$1c24,$2c34,$3c43,$494f,$555b,$6167 fdb $6d72,$767a,$7d7f,$7f7f,$7f80,$8080,$8081,$8387 fdb $8b8f,$959b,$a1a7,$adb3,$b9bf,$c7cf,$d7df,$e7ef fdb $f7ff,$ffff,$ffff,$ffff fcb $ff L5AA9 fcb $21 fdb $2426,$2e2e,$2124 fdb $2626,$2e21,$2424,$262e fcb $21 L5AB9 fcb $01 fdb $0a19,$1f1f,$010a fdb $1919,$1f01,$0a0a,$191f fcb $01 L5AC9 fcb $20 fdb $110d,$0b09,$0705 fdb $0404,$0404,$0404,$0404 fcb $04 L5AD9 fcb $34 fdb $2624,$0034,$2624 fdb $0034,$2624,$0034,$2624,$002e,$1d02 fcb $12 L5AED fcb $22 fdb $0400 fdb $0026,$2204,$0034,$2624,$0034,$2624,$0005,$0a10 fcb $12 L5B01 fdb $0000,$0000,$2204,$0000,$2622,$0400,$3426,$2400 fdb $3f3f,$3f3f emod eom equ * end