*******TL/1************* nam tl1 ttl TL1 compiler ifp1 use defsfile endc * Module header definitions tylg set Prgrm+Objct atrv set ReEnt+rev rev set $00 edition set 1 mod eom,name,tylg,atrv,start,size TXTTOP EQU $FB7E INDN RMB 1 OUTDN RMB 1 LB RMB 2 GB RMB 2 MHIGH RMB 1 MOD RMB 1 WT1 RMB 1 WT2 RMB 1 RNDH RMB 1 RNDL RMB 1 DREG RMB 1 DBUF RMB 3 XR RMB 2 YR RMB 2 ZR RMB 2 arg equ . PFTBEG RMB 2 prog/func table PC RMB 2 SREG RMB 2 SP RMB 2 PFMAX RMB 2 LSW RMB 1 SY RMB 1 CH RMB 1 VAL RMB 1 GL RMB 1 global 0xff / local 1 OPER RMB 1 GLL RMB 1 left value g 0xff / local l AMODE RMB 1 ACC RMB 1 LSIZE RMB 1 local variable size (including arguments ) GSIZE RMB 1 global variable including array TCOUNT RMB 1 1 search reserved word only, 5 search all local/global var/array, proc TEND RMB 2 table end (search start from here ) include local name WEND RMB 2 word end PMODE RMB 1 0x20 main, 1 proc, 0 ? RSW RMB 1 0 word lookup, 0xff word register mode in tlook GEND RMB 2 end of global name SSW RMB 1 runmod RMB 1 modofs RMB 2 module library offset filepath rmb 2 parmptr rmb 2 stdin rmb 2 adr rmb 2 work rmb 2 bufsiz equ $100-1 ** * LIBRARY ADDRESSS TABLE ** LIBR equ . ioentry rmb $80 readbuff rmb bufsiz+1 OBJSTART RMB 10 * OBJECT PG AREA WTBLE RMB $100+500 MSTACK RMB $140 OBJECT RMB 2048 * NOP RUB equ 8 size equ . name fcs /TL1/ fcb edition ** OBJECT START ****** C tst ' FCB $25,-'<' FCB $26,-'#' FCB $27,-'=' FCB $2D,-'L','T' FCB $2E,-'G','T' FCB $40,-'N','E','G' FCB $43,-'N','O','T' FCB,$43,-'C','O','M' FCB $44,-'L','S','R' FCB $46,-'R','O','R' FCB $47,-'A','S','R' FCB $48,-'A','S','L' FCB $49,-'R','O','L' FCB $06,-'M','E','M' FCB $A0,-'T' FCC "RUE" FCB $A1,-'F' FCC "ALSE" FCB $16,-'M' FCC "HIGH" FCB $17,-'M' FCC "OD" FCB $70,-'R','N','D' FCB $71,-'G','E','T' FCB $72,-'R' FCC "EAD" FCB $A2,-'S' FCC "EEK" FCB $A3,-'S' FCC "EEKR" FCB $A4,-'P' FCC "OSITION" FCB $A5,-'O' FCC "PEN" FCB $A6,-'O' FCC "PENM" WTBLEND ****** * SUPORTING ROUTINES * & I/0 CONTROL ** crt0top ** * RND FUNCTION ** RND PSHS A LDA RNDL LDB #125 MUL ADDD #1 STA RNDL PSHS A LDA RNDH LDB #125 MUL ADDA ,S+ STA RNDH PULS B MUL INCA NONE RTS ** * DVISITION SET MOD ** DIV STB WT1 BEQ ERDIV TFR A,B CLRA STA WT2 DV0 INC WT2 ASL WT1 BCC DV0 DV1 ROR WT1 CMPB WT1 BCS DV2 SUBB WT1 ORCC #1 BRA *+4 DV2 ANDCC #$FE CLR C ROLA DEC WT2 BNE DV1 STB MOD TSTA RTS ** ERDIV STB OUTDN LBSR CRLF LBSR PUTSTR FCC "ERR DIV 0",0 MONIT lbra exit ** MULT MUL STA MHIGH TFR B,A RTS ** * PUT A IN DECIMAL ** PUTDA CLRB PUTDR STB DREG PSHS X LEAX -2,S LEAS -6,S CLR 1,X LDB #3 P0 PSHS B LDB #10 BSR DIV ADDB #$30 STB ,X LEAX -1,X PULS B DECB BNE P0 COM 3,X LDA #'0' LDB #4 P1 LEAX 1,X DECB CMPA ,X BEQ P1 COM 4,S LDA DREG PSHS B SUBA ,S+ BCS PRX BSR SPACEA PRX LDA ,X BEQ P4 LBSR PUTCA LEAX 1,X BRA PRX P4 LEAS 6,S CL1 PULS X,PC ** * GET IN A DECIMAL ** GETDA CLRA PSHS A LBSR GETCA CMPA #RUB BNE GD1 PULS A LDB #10 LBSR DIV BRA GETDA+1 GD1 SUBA #'0' BCS GD2 CMPA #10 BCC GD2 STA DBUF PULS A LDB #10 MUL ADDB DBUF TFR B,A BRA GETDA+1 GD2 PULS A,PC ** * SPACE A TIMES ** SPACEA BEQ CL1 PSHS A LDA #' ' LBSR PUTCA PULS A DECA BRA SPACEA ** * STR OUT ** PUTSTR PSHS X LDX 2,S STR1 LDA ,X+ BEQ STR2 LBSR PUTCA BRA STR1 STR2 STX 2,S PULS X,PC ** * CRLF ** CRLF LDA #$0D BSR PUTCA LDA #$0A BRA PUTCA ** * CRLF A TIMES ** CRLFA BEQ CL1 PSHS A BSR CRLF PULS A DECA BRA CRLFA Exit lbsr setecho * ldx