; ; MACRO.ASM ; DOMACRO RTS DOMEND RTS ; ; DATA.ASM ; DSETUP LDY #STRMAX LDA #' ' CLRSTR STA DATBUF-1,Y DEY BNE CLRSTR LDY TXTPTR RTS ; DEFWP JSR DSETUP DEFWPL JSR EVALAB LDA VALUE LDX LEN STA DATBUF,X INX LDA VALUE+1 STA DATBUF,X INX STX LEN DEY LDA (TEXTP),Y INY CMP #',' BEQ DEFWPL BNE EXITWS ; GETTTL JSR DSETUP LDA #2 BNE TTLS GETSTL JSR DSETUP LDA #1 TTLS BIT TTLFLG BEQ DOTTL LDX PASSNO BNE IGNTTL DOTTL TAX LDA TTLCODE,X ORA TTLFLG STA TTLFLG BNE DEFBPE ; DEFCOP JSR DSETUP LDA #$80 BMI DEFBEN ; DEFBP JSR DSETUP DEFBPE LDA #0 DEFBEN STA MODE LDX #0 DEFBLP LDA (TEXTP),Y CMP #$27 ;STARTING QUOTE? BEQ QTSTR CPX #STRMAX BCS TOLONG CMP #EOL BEQ TOLONG JSR EVALAB LDA VALUE LDX LEN STA DATBUF,X INX DEY ENDBS STX LEN LDA MODE ORA DATBUF-1,X ;SET THE HIGH BIT OF THE LAST CHAR STA DATBUF-1,X LDA (TEXTP),Y INY CMP #',' BEQ DEFBLP EXITBS BIT TTLFLG BMI LDTITL BVS LDSTTL EXITWS LDX #6 CPYTXT LDA DATBUF-1,X STA OPCODE-1,X DEX BNE CPYTXT STX MODE JSR DATOBJ IGNTTL CLC RTS ; QTSTR INY LDA (TEXTP),Y CMP #$27 ;END QUOTE? BEQ CLQUOT CMP #EOL BEQ TOLONG STA DATBUF,X INX CPX #STRMAX BCC QTSTR ; TOLONG LDA #'S' STA ADRERR DEY ;INSURE WE SEE EOL LATER ; CLQUOT INY BNE ENDBS ; LDTITL LDX #60 LDTITA LDA DATBUF-1,X STA TITLE-1,X DEX BNE LDTITA TTLXIT STX LEN LDA #$80 STA ISVAL LDA TTLFLG AND #3 STA TTLFLG RTS ; LDSTTL LDX #60 LDSTTA LDA DATBUF-1,X STA SUBTTL-1,X DEX BNE LDSTTA BEQ TTLXIT ; DOEJECT JSR DSETUP LDA CURLINE BEQ ALREADY LDA #$FF STA CURLINE ;FORCE A PAGE EJECT ALREADY JSR IFARG BCC NOARG JSR EVALAB LDA VALUE+1 BNE TERROR LDA VALUE BMI TERROR STA LPP NOARG CLC RTS ; IFARG JSR NXTFLD CMP #EOL BEQ NOARG CMP #';' BEQ NOARG ; TERROR SEC RTS ; TTLCODE = *-1 DB $41,$82 ; ; DIREC.ASM ; ; HANDLE ASSEMBLER DIRECTIVES (Byte 2 of opcode table > 0x40) ; ASSDIR DEC LEN AND #$3F CMP #DIRTBH-DIRTBL TAX LDA DIRTBH,X PHA LDA DIRTBL,X PHA RTS DIRTBL DB LOW[ASSORG-1] DB LOW[ASSEQU-1] DB LOW[ASSEND-1] DB LOW[ASSDEFS-1] DB LOW[ASSLIST-1] DB LOW[ASSINCL-1] DB LOW[GETTTL-1] DB LOW[GETSTL-1] DB LOW[DEFWP-1] DB LOW[DEFBP-1] DB LOW[DEFCOP-1] DB LOW[DOEJECT-1] DB LOW[DOMACRO-1] DB LOW[DOMEND-1] DIRTBH DB HIGH[ASSORG-1] DB HIGH[ASSEQU-1] DB HIGH[ASSEND-1] DB HIGH[ASSDEFS-1] DB HIGH[ASSLIST-1] DB HIGH[ASSINCL-1] DB HIGH[GETTTL-1] DB HIGH[GETSTL-1] DB HIGH[DEFWP-1] DB HIGH[DEFBP-1] DB HIGH[DEFCOP-1] DB HIGH[DOEJECT-1] DB HIGH[DOMACRO-1] DB HIGH[DOMEND-1] ; ASSORG JSR EVALAB LDA VALUE LDX PC STA PC STX VALUE LDA VALUE+1 LDX PC+1 STA PC+1 STX VALUE+1 INC ISVAL RTS ; ASSEQU JSR EVALAB INC ISVAL RTS ; ASSEND LDA (TEXTP),Y CMP #';' BEQ NOENDV CMP #EOL BEQ NOENDV JSR EVALAB DEY LDA (TEXTP),Y INY CMP #',' BNE RUNEND LDA VALUE STA INIPT LDA VALUE+1 STA INIPT+1 DEC INIFLG BNE ASSEND ; RUNEND LDA VALUE STA ENTPT LDA VALUE+1 STA ENTPT+1 DEC ENTPTF NOENDV DEC ENDFLG RTS ; ASSDEFS JSR EVALAB LDA VALUE STA LEN LDA VALUE+1 STA LEN+1 LDA #$FF STA MODE RTS ; BMPFIL STX FILE CMTXIT JMP COMMNT ; ASSINCL LDX #0 ASSINL LDA (TEXTP),Y CMP #'z'+1 BCS ICLXIT CMP #'.' BCC ICLXIT STA FNBUF,X INY INX CPX #FNSIZE BNE ASSINL ; ICLXIT LDA #EOL STA FNBUF,X JSR BLDFNB CLC LDA FILE ADC #$10 BMI TMINCF TAX LDA #LOW[FNBUF] LDY #HIGH[FNBUF] JSR OPENIN BPL BMPFIL ; TMINCF LDA #'I' STA ADRERR BNE CMTXIT ; ASSLIST EQU CMTXIT ;NOT IMPLEMENTED YET