32768,22 ! COPYRIGHT (C) REAS GUNNARSSL! ALL RIGHTS RESERVEDt! RELEASED UNDER A BSDLIKE LICENSE(! SEE HTTP:ZZLEVO.NET64 2! LICENSE DETAILS<$8000FOPT D"JC-ASS V0.97",8d!!100nLASTE1xBUF$033C BUFò64 !!200 5 JMP START- JMP RENUM: JMP FINDJ JMP OUTLABZ JMP INSTALLj JMP DISKCOM INSTALL LDA #LASTE:STA $33:STA $37 LDA #LASTE:STA $34:STA $38 LDY #$11 LOOP LDA FUNCTAB,Y:STA $9FEE,Y:DEY:BPL LOOP LDA #CHKSCROLL:STA $03243 LDA #CHKSCROLL:STA $0325:RTS= ,!!300W 1RENUM LDA $2B:STA $14k 6LDA $2C:STA $15 ;LDA #10:STA $04 @LDA #100:STA $FD:STA $FE:STA $05 ERENLOOP LDY #$01:LDA ($14),Y:BEQ START JLDY #$04:LDA #'!:CMP ($14),Y:BNE RENTHIS OINY:CMP ($14),Y:BNE RENTHIS= TINY:JSR GDLOOP:BCS RENTHISa YLDA $FB:STA $FD:LDA $FC:STA $FE| ^JSR GDLOOP:BCS RENTHIS cLDA $FB:STA $04:LDA $FC:STA $05 hRENTHIS LDY #$00 mLDA ($14),Y:PHA:INY rLDA ($14),Y:PHA:INY wLDA $FD:STA ($14),Y:INY |LDA $FE:STA ($14),Y5 PLA:STA $15:PLA:STA $14U LDA $04:CLC:ADC $FD:STA $FDq LDA $05:ADC $FE:STA $FE JMP RENLOOP !!700 START LDA #$00:STA PASS:STA NUMPASS JSR $0079:BEQ START1 JSR $B7F1:CPX #$01:BNE START0 LDX #$00 START0 STX NUMPASS# START1 JSR ` BYT "6502/6510 ASSEMBLER BY JC OF XAKK!",13,"V0.97",13,0 LDY #$00:LDA ($2B),Y:INY:A ($2B),Y:BNE START2 JSR BYT "NO PROGRAM IN MEMORY!",0 RTS START2 TSX:STX STACKPTRLDA #NMI:STA $FFFA:LDA #NMI:STA $FFFB<LDA #$A000:STA FIRSTLABAD:STA LASTLABADmLDA #$A000:STA FIRSTLABAD1:STA LASTLABAD1{ JSR INIT1MAINLOOP JSR INITJSR DOPASSLDX NUMPASS:BEQ ML1 DEX:CPX PASS:BNE ML1%LDA FLAGS:BPL LASTPASS:BMI LASTPASSPREV*ML1 LDA FLAGS:BPL MAINLOOPG/LASTPASSPREV LDX PASS:DEX:BEQ LASTPASS_4JSR :BYT "ONLY ",09LDX PASS:LDA #$00:JSR $BDCD>JSR :BYT " PASSES NEEDED!",13,0CLASTPASS JSR INITHLDA #$C0:STA FLAGSMJSR DOPASS:BIT FLAGS:BMI ASSDERJSR WBYT "TOO FEW PASSES!",13,06\ASSDE JSR LASTADDRQaBREAK LDX STACKPTR:TXS[fJSR kLDA #$0200:STA $7A:STA $0200:STA $0201:STA $0202pLDA #$0200:STA $7BuLDA $9D:BMI ALLDEzCLC:JMP $A834ALLDE RTS!!1000 10INIT LDA ASSSTART:STA CURRBASAD6LDA ASSSTART1:STA CURRBASAD1mLDA #$00:STA MACCOUNT:STA MACCOUNT1:STA SREFLAGSSTA LABDEV:STA CURRAD:STA STARTAD:STA MCURRADLDA #NOCODE:STA CODADD1:LDA #NOCODE:STA CODADD2 $LDA #$C0:STA CURRAD1:STA STARTAD1:STA MCURRAD1.INC PASS18LDA #$80:STA FLAGSeBLDA FIRSTLABAD:STA $02:LDA FIRSTLABAD1:STA $03tLJSR ALLRAMVZLABLOOP LDA $03:CMP LASTLABAD1:BNE ZLABCMP`LDA $02:CMP LASTLABADjZLABCMP BCS INITRTStLDY #$01:LDA #$00:STA ($02),Y ~INY:STA ($02),YLDY #$05FZLABLOOP1 INY:LDA ($02),Y:BNE ZLABLOOP1oTYA:SEC:ADC $02:STA $02:BCC ZLABLOOPINC $03:BNE ZLABLOOPINITRTS JSR NMMEMJSR BYT "PASS ",0LDX PASS:LDA #$00:JSR $BDCDLDA #$0D:JMP $FFD2LASTADDR JSR JSR ASSADDRJSR 7BYT " LABELS: ",0f LDX FIRSTLABAD:LDA FIRSTLABAD1:JSR OUTHEX|LDA #':JSR $FFD2LDX LASTLABAD:LDA LASTLABAD1:JMP OUTHEX( BIT SREFLAGS:BVC LANOFILE2LDA #$08:JSR $FFC3 <LANOFILE LDA #$20:BIT SREFLAGS:BEQ LA1$FLDX #$04:JSR $FFC9;PLDA #$0D:JSR $FFD2IZJSR $FFCC`dLDA #$04:JSR $FFC3{nLA1 LDA LABDEV:BEQ LA2xJMP OUTLABELSLA2 STA SREFLAGSRTSOUTHEX TAYLDA #'$:JSR $FFD2TXA:PHA:TYA:JSR OUTHBYTEPLAOUTHBYTE PHA:LSR:LSR:LSR:LSR(JSR OUTHDIGIT7PLA: #$0F\OUTHDIGIT JSR BYTEHEX:JMP $FFD2uBYTEHEX CLC:ADC #'0CMP #1'9:BCC OUTHDIGIT1ADC #$06OUTHDIGIT1 RTS PLA:STA $FD:PLA:STA $FE:LDY #$00PRLOOP INC $FD:BNE PR1"INC $FE,PR1 LDA ($FD),Y:BEQ PRDE76JSR $FFD2:JMP PRLOOP]@PRDE LDA $FE:PHA:LDA $FD:PHA:RTSyJINIT1 LDA $9D:BMI I1DIRTLDA $7A:STA ASSSTART:LDA $7B:STA ASSSTART1^LDA $39:STA CURRLINE:STA FIRSTLINEhLDA $3A:STA CURRLINE1:STA FIRSTLINE1rRTSA|I1DIR LDA #$0805:STA ASSSTART:LDA #$0805:STA ASSSTART1uLDA $0803:STA CURRLINE:LDA $0804:STA CURRLINE1}RTSERR PLA:STA $FD:PLA:STA $FEINC $FD:BNE ERR1INC $FEERR1 LDY #$00:LDA ($FD),Y:BEQ ERRYES:BMI ERR2 CMP PASS:BEQ ERRYES&ERRL1 INC $FD:BNE ERRL112INC $FE^ERRL11 LDA ($FD),Y:BNE ERRL1:BEQ ERRDE{ERR2 BIT FLAGS:BVC ERRL1ERRYES INC $FD:BNE ERRY1INC $FEERRY1 LDA ($FD),Y:BEQ ERRDEYJSR $FFD2:JMP ERRYESERRDEY LDA $FE:PHA:LDA $FD:PHA &JSR 0BYT " IN ",0H:LDX CURRLINE:LDA CURRLINE1:JSR $BDCD_DLDA #$0D:JMP $FFD2NERRDE LDA $FE:PHA:LDA $FD:PHAXRTSbALLRAM SEI:LDA #$20:STA $01:RTSlNMMEM LDA #$27:STA $01:CLI:RTSvCHECKBYTE LDA CURRBASAD:STA $14:LDA CURRBASAD1:STA $15LDY #$00DCBL1 LDA ($14),Y:CMP #$20:BNE CBLRTSUINY:BNE CBL1dCBLRTS RTS}GWQUOTE JMP GWQUOTEWD LDA CURRBASAD:STA $02:LDA CURRBASAD1:STA $03GWL1X LDY #$00GWL1 LDA ($02),Y:BEQ GWNL1CMP #'!:BEQ GWNLCMP #$20:BEQ GWN1+CMP #$22:BEQ GWQUOTECCMP #'::BNE GWSTART]GWN1 INC $02:BNE GWL1rINC $03:BNE GWL1 GWNL INY:LDA ($02),Y:BNE GWNLGWNL1 INY:INY:LDA ($02),Y:BEQ GWDE1 INY:LDA ($02),Y:STA CURRLINE*INY:LDA ($02),Y:STA CURRLINE1'4TYA:SEC:ADC $02:STA $02:BCC GWL1X=>INC $03:BNE GWL1XiHGWSTART LDA ($02),Y:STA BUF,Y:BEQ GWDERCMP #$20:BEQ GWDE\CMP #':BEQ GWDEfCMP #$B2:BEQ GWDE ! pCMP #':BEQ GWDEzCMP #$AA:BEQ GWDE ! CMP #':BEQ GWDECMP #$AB:BEQ GWDE ! )CMP #':BEQ GWDEDCMP #$AC:BEQ GWDE ! ZCMP #':BEQ GWDEuCMP #$AD:BEQ GWDE ! CMP #'%:BEQ GWDECMP #'&:BEQ GWDECMP #'':BEQ GWDECMP #'::BEQ GWDECMP #',:BEQ GWDECMP #'):BEQ GWDE INY:BNE GWSTART: GWDE CPY #$00:BNE GWDE2:INY:BNE GWDE2R GWDE1 LDY #$00:RTS{ GWDE2 TYA:CLC:ADC $02:STA CURRBASAD$ LDA $03:ADC #$00:STA CURRBASAD1. RTS8 DO BIT FLAGS:BVS DOHEREB JSR CHECKBYTE:CMP #$22:BNE DOHERE L LDA CURRBASAD:STA $7A:LDA CURRBASAD1:STA $7B4 V LDA #$00:STA $0AB ` JSR $E1D4h j LDA $0A:LDX $2B:LDY $2C:JSR $FFD5v t BCC DOOK ~ JMP $E0F9 DOOK JSR $FFB7 #$BF:BEQ DO2 JMP $E19C DO2 STX $2D:STY $2E:JSR $A68E JSR $A533! LDA #$0D:JSR $FFD2H! DOHERE LDA FIRSTLINE:STA CURRLINE:LDA FIRSTLINE1:STA CURRLINE1Y! LDY #$00:RTS! DOLNK LDA CURRBASAD:STA $7A:LDA CURRBASAD1:STA $7B! LDA #$00:STA $0A! JSR $E1D4! LDA $0A:LDX $2B:LDY $2C:JSR $FFD5! BCC DOLNKOK! JMP $E0F9" DOLNKOK JSR $FFB7$" #$BF:BEQ DOLNK22"( JMP $E19CM"2 DOLNK2 STX $2D:STY $2E["< JSR $A68Ei"F JSR $A533"P LDA $7A:STA CURRBASAD:LDA $7B:STA CURRBASAD1"Z LDA #$0D:JSR $FFD2"d LDA $0803:STA CURRLINE:LDA $0804:STA CURRLINE1"n JMP DOPASS #x UNIMP JSR ERR !!!0# BYT 1,"UNIMPLEMENTED FEATURE",0C# ASSADDRRTS RTSt# ASSADDR LDA MCURRAD:CMP STARTAD:BNE ASSADDR1# LDA MCURRAD1:CMP STARTAD1:BEQ ASSADDRRTS# ASSADDR1 JSR # BYT "ASSEMBLED: ",0# LDX STARTAD:LDA STARTAD1:JSR OUTHEX $ LDA #':JSR $FFD26$ LDX MCURRAD:LDA MCURRAD1:JSR OUTHEXM$ LDA #$0D:JMP $FFD2X$ !!3000$ DIVWD LDA $FB:A $FC:BNE NODIVZERO$ JSR ERR$ BYT $80,"DIVISION BY ZERO",0$ LDA $24:STA $22:LDA $25:STA $23$ LDA #$FF:STA $FB:STA $FC$ RTS%% NODIVZERO LDA $FB:STA $FD:LDA $FC:STA $FER% LDA #$00:STA $FB:STA $FC:STA $22:STA $23^% LDX #16% DIVLOOP ASL $24:ROL $25:ROL $22:ROL $23%& LDA $23:CMP $FE:BNE DIVCMP%0 LDA $22:CMP $FD%: DIVCMP BCC DIV%D LDA $22:SBC $FD:STA $22 &N LDA $23:SBC $FE:STA $23&X SEC*&b DIV ROL $FB:ROL $FC>&l DEX:BNE DIVLOOPF&v RTSR&'!!10000f&'F166 JMP $F166x&$'CHKSCROLL MAC&.'LDA $99:BNE F166&8'LDA $D3:STA $CA:LDA $D6:STA $C9&B'TYA:PHA:TXA:PHA:LDA $D0:BEQ LOOP1&L'JMP $E63A&V'LOOP JSR $E716+'`'LOOP1 LDA $C6:STA $CC:STA $0292:BEQ LOOP13'j'SEIK't'LDA $CF:BEQ BLINKOF|'~'LDA $CE:LDX $0287:LDY #$00:STY $CF:JSR $EA13''BLINKOF JSR KEY''LDY $9D:BPL CHKCR''CMP #$11:BEQ CRSRDN:CMP #$91:BEQ CRSRUP:CHKCR CMP #$0D:BNE LOOP''JMP $E602(('CRSRDN LDX $D6:INX:CPX #25:BCC LOOPY('FLAST DEX:BMI DNLOOP:LDA $D9,X:BPL FLAST(' #$03:A $0288:STA $23:LDA $ECF0,X:STA $22('LDY #$00:LDA ($22),Y:CMP #'0:BCC FLAST:CMP #'91:BCS FLAST('JSR LINE:BCS DNLOOP('LDA $25:BEQ DNLOOP-)'LDY #$03:LDA $15:CMP ($24),Y:BCC DNNEXTV)'DEY:LDA $14:CMP ($24),Y:BCC DNNEXT~)(JSR LINE:LDA ($24),Y:BNE DNNEXT) (DNLOOP LDA #$11:BNE LOOP)(DNNEXT INX:CPX #25:BCS SCROLLUP)(LDA $D9,X:BPL DNNEXT:BMI NOSCROLLUP!*((SCROLLUP LDA #24:LDX $DA:BMI #2:LDA #23:PHA7*2(JSR $E8EA:PLA:TAXo*<(NOSCROLLUP JSR SHOWLINE:LDA #24:STA $D6:JSR $E56C~*F(JMP LOOP1**!!11000*+CRSRUP LDX $D6:DEX:BPL UPLOOP* +FFIRST INX:CPX #25:BCS UPLOOP:LDA $D9,X:BPL FFIRST++ #$03:A $0288:STA $23:LDA $ECF0,X:STA $22]+ +LDY #$00:LDA ($22),Y:CMP #'0:BCC FFIRST:CMP #'91:BCS FFIRSTy+*+JSR LINE:BCS UPLOOP+4+LDA $22:STA $24:LDA $23:STA $25:BNE UPNOPREV+>+UPLOOP LDA #$91:JMP LOOP+H+UPNOPREV DEX:BMI SCROLLDN,R+LDA $D9,X:BPL UPNOPREV:BMI NOSCROLLDNU,\+SCROLLDN LDX #$00:STX $02A5:JSR $E981:ASL $D9:SEC:R $D9b,f+LDX #$00z,p+NOSCROLLDN TXA:PHA,z+LDA #24:STA $D6:JSR $E56C:LDA #$20:LDY $D5,+LOOP STA ($D1),Y:DEY:BPL LOOP,+PLA:TAX,+JSR SHOWLINE-+LDA #$00:STA $D6:JSR $E56C:JMP LOOP1!-.!!12000L-.LINE LDA $24:STA $22:LDA $25:STA $23-.LDY #$00:LDA ($22),Y:STA $24:INY:LDA ($22),Y:STA $25-.RTS-0!!12500-0LINE LDY #$00-0STY $14:STY $15.0GLLOOP LDA ($22),Y:CMP #'0:BCC GLDE1:CMP #'91:BCS GLDE1.0 #$0F:STA $07*.1LDA $15:STA $24b.1LDA $14:ASL A:ROL $24:ASL A:ROL $24:ADC $14:STA $14.1LDA $24:ADC $15:STA $15:ASL $14:ROL $15.$1LDA $14:ADC $07:STA $14:BCC #2:INC $15..1INY:BNE GLLOOP.81GLDE1 LDY #$01:LDA ($2B),Y:BNE LINEMEM/B1SEC:RTSJ/L1LINEMEM DEY:STY $22:STY $23:LDA $2B:STA $24:LDA $2C:STA $25x/V1GLLOOP2 LDY #$01:LDA ($24),Y:BEQ GLDE0/`1LDY #$03:LDA ($24),Y:CMP $15:BCC GL:BNE GLDE/j1DEY:LDA ($24),Y:CMP $14:BCS GLDE/t1GL JSR LINE:JMP GLLOOP20~1GLDE0 STA $24:STA $25$01GLDE CLC:RTS002!!13000J02SHOWLINE LDA $D3:PHAq02STX $D6:LDA #$00:STA $D3:JSR $E56C02LDY $D5:LDA #$2002LOOP STA ($D1),Y:DEY:BPL LOOP02LDA $0300:STA SLADDRLO103LDA $0301:STA SLADDRHI113LDA #SLADDRLO:STA $0300"13LDA #SLADDRLO:STA $0301=1"3LDA $0328:STA SLLO1X1,3LDA $0329:STA SLHI1s163LDA #SLRTS:STA $03281@3LDA #SLRTS:STA $03291J3LDA $24:STA $5F:LDA $25:STA $601T3LDY #$02:LDA ($5F),Y:TAX:STX $14:INY:LDA ($5F),Y:STA $151^3JMP $A6E8!2h3SLADDRLO LDA #$E38B:STA $0300E2r3SLADDRHI LDA #$E38B:STA $0301f2|3SLLO LDA #$F6ED:STA $032823SLHI LDA #$F6ED:STA $032923PLA23LOOP CMP #40:BCC #4:SBC #40:BNE LOOP:STA $D323SLRTS RTS2:!!150002:KEY MAC2:LDY $02773:CPY #$80:BEQ FROMFUNC)3:CPY #$83:BEQ SHS3:CPY #$85:BCC E5B7:CPY #$8D:BCC FUNCg3:E5B7 JMP $E5B73:SH LDA $9FEE:STA FUNCLO:STA F1:LDA $9FEF:STA FUNCHI:STA F23:JMP F3:FUNC TYA:SBC #$84:ASL A:TAX 4:LDA $9FF0,X:STA FUNCLO:STA F1:LDA $9FF1,X:STA FUNCHI:STA F2O4;F LDA ;$0000:BEQ E5B7:LDA #$80:STA $0277h4;FROMFUNC JSR ALLRAM4;FUNCLO1:FUNCHI2:LDY ;$00004$;INC FUNCLO:BNE #$03:INC FUNCHI4.;LDA FUNCHI:LDX FUNCLO:STA L258;L LDA ;$0000,X:TAX:JSR NMMEM:SEI:TXA:BEQ E5B7:JMP $E5C6$5 N!!20000B5*NDEVERR LDX #$09:JMP $A437R54NDISKCOM MAC5>NJSR $B7F1:CPX #$08:BCC DEVERR:CPX #$0C:BCS DEVERR5HNSTX $BA5RNJSR $0079:BNE NAMEEXISTS:LDA #$00:JSR $FFBD:JMP COM5\NNAMEEXISTS JSR $E2546fNLDY #$00:LDA ($22),Y:CMP #'$:BNE COM6a!!25000+6aDIR LDA #$6076aSTA $B9E6aJSR $F3D5Q6aLDA $BA_6aJSR $FFB4k6aLDA $B9y6aJSR $FF966aJSR $FFA56bLDA $906 bLSR A6bLSR A6 bBCS DIRRTS6*bJSR $FFA564bDIRLINE JSR $FFE16>bBEQ DIR6HbJSR DIRBYTE 7RbJSR DIRBYTE7\bJSR DIRBYTE&7fbSTA $FD77pbJSR DIRBYTEC7zbLDX $FDQ7bJSR $BDCD^7bLDA #$20l7bJSR $FFD27bDIRCHAR JSR DIRBYTE7bBNE DIRLINE7bLDA #$0D7bJSR $FFD27bJMP DIRLINE7bDIRLINE JSR $FFD27bJMP DIRCHAR7bDIRBYTE JSR $FFA58bTAX8bLDA $908cLSR A'8cLSR A68cBCS DIRTB8$cBIT $90Q8.cBVS DIRDEY88cTXAa8BcRTSv8LcDIRRTS JMP $FFE78VcDIRDE JSR $FFAB8`cJSR $FFAB8jcJSR $F6428tcPLA8~cPLA8cRTS8cDIRT LDA $908c #$FD8cSTA $908cJSR $FFE19cBNE DIRT9cPLA9cPLA)9cDIR JSR $FFE779cJMP $F633C9e!!26000T9eCOM LDA #$7F`9eLDX $BAm9eLDY #$6F{9eJSR $FFBA9eJSR $F3DD9eLDA $BA9eJSR $FFB49eLDA $909eBNE COMMERR9eLDA $B99eJSR $FF969fLDA $909fBNE COMMERR :fCOMMLOOP JSR $FFA5:&fCMP #$0D):0fBEQ COMMERR7::fJSR $FFD2C:DfLDA $90T:NfBEQ COMMLOOPi:XfCOMMERR LDA #$0Dw:bfJSR $FFD2:lfJSR $FFAB:vfLDA #$00:fSTA $90:fRTS:!!65534 1:LNK "ASS PART 2",8