Listing of file='BSPNTR.BAS;01' on disk='vmedia/chip_22-sector.ccvf'
64000 REM *** COPYRIGHT (C) 1980 BY COLORSOFT *** 64010 REM WRITTEN BY DENNIS L. MARTIN 64020 REM 8470 OHERN STREET 64030 REM OMAHA, NE 68127 64040 REM 402-331-7099 64050 REM THIS PROGRAM IS DESIGNED TO TRANSMIT CLEAR ASCII TEXT 64060 REM FROM THE COMPUCOLOR II TO A PRINTER. 64070 REM IT ASSUMES THAT THE PRINTER DOES ALL PAGING AND PERFORATION 64080 REM SKIPS. IF YOUR PRINTER DOES NOT HAVE THESE FUNCTIONS THEN 64090 REM THEN FOLLOWING MODS WILL HAVE TO BE MADE: 64100 REM 1. FOR EVERY OUT 6,13 INCREMENT A COUNTER 64110 REM 2. WHEN THE COUNTER REACHES THE DESIRED LIMIT, SEND 64120 REM OUT ENOUGH LINEFEEDS TO TAKE YOU TO THE TOP OF THE 64130 REM NEXT PAGE. (YOU CAN ALSO PUT PAGE #'S ON THEM) 64140 REM 3. RESET YOUR COUNTER AND YOU'RE READY TO CONTINUE. 64145 REM 64150 REM THIS PATCH SHOULD BE ADDED TO THE BASIC PROGRAM 64160 REM YOU WISH TO LIST. THEN 'RUN 65000' WILL PRINT THE 64170 REM LISTING UNTIL THE FIRST 'END' IS FOUND. 64180 REM 64190 LIST :END 64195 REM 64999 REM **THIS VERSION IS SET TO GO TO A PRINTER @ 1200 BAUD** 65000 DIM T$(200):REM SET UP DIM FOR TOKEN VALUES 65005 RESTORE 65190 65010 FOR Y= 1TO 127:T$(Y)= "":NEXT :FOR Y= 128TO 197:READ T$(Y):NEXT :REM FILL T$ WITH TOKENS 65020 AD(1)= 256* PEEK (32983)+ PEEK (32982):REM FIND END OF BASIC PROGRAM 65030 AD(2)= 33434 65040 FOR X= AD(2)TO AD(1) 65045 Z= 0 65050 X= X+ 2:LN= 256* PEEK (X+ 1)+ PEEK (X):REM SKIP STARTING ADDR FOR NEXT INSTRUCTION AND DETERMINE LINE NUMBER 65060 LN$= STR$ (LN):LN$= RIGHT$ (LN$,LEN (LN$)- 1):REM CONVERT LINE # TO STRING AND SUBTRACT IMPLIED SPACE 65065 IF LEN (LN$)< 5THEN LN$= " "+ LN$:GOTO 65065 65070 OUT 6,13:OUT 6,10:FOR D= 1TO 35:NEXT :FOR O= 1TO LEN (LN$):OUT 6,ASC (MID$ (LN$,O,1)):REM OUTPUT CR & LF - GIVE CARRIAGE TIME TO RETURN 65080 FOR D= 1TO 5:NEXT :Z= Z+ 1 65090 NEXT :OUT 6,32:Z= Z+ 1 65100 X= X+ 2:REM BUMP MEMORY PAST LINE NUMBER 65110 IF Z> = 75THEN GOSUB 65232:REM Z CONTROLS LINE LENGTH 65115 IF PEEK (X)= 0THEN NEXT :REM END OF LINE ? 65120 IF PEEK (X)< 32THEN X= X+ 1:GOTO 65110:REM CONTROL CHAR ? IF SO SKIP IT 65130 IF PEEK (X)= > 128AND PEEK (X)< = 197THEN 65150:REM IS IT A TOKEN ? 65131 REM NOW CHECK TO SEE IF IT'S A COLON AND WHETHER IT IS AT END OF LINE OR IN TEXT. IF SEPERATOR DO A CR & LF AND TAB IN TO CONT. 65132 IF PEEK (X)= 58AND PEEK (X+ 1)< > 32AND PEEK (X- 1)< > 32THEN OUT 6,13:OUT 6,10:FOR D= 1TO 6:OUT 6,32:NEXT :Z= 10 65140 OUT 6,PEEK (X):Z= Z+ 1:FOR D= 1TO 5:NEXT :X= X+ 1:GOTO 65110:REM NONE OF THE ABOVE -- SEND IT. 65150 FOR O= 1TO LEN (T$(PEEK (X))):OUT 6,ASC (MID$ (T$(PEEK (X)),O,1)):REM SEND A TOKEN 65160 FOR D= 1TO 5:NEXT :Z= Z+ 1 65170 NEXT :IF PEEK (X)= 128THEN OUT 6,13:OUT 6,10:OUT 6,10:GOTO 65240:REM BAILOUT FOR THIS PROGRAM IS AN 'END' STATEMENT 65180 X= X+ 1:GOTO 65110:REM GO GET NEXT BYTE 65185 REM ******* TOKEN TABLE ******* 65190 DATA "END ","FOR ","NEXT ","DATA ","INPUT ","DIM ","READ ","FILE ","GOTO ","RUN ","IF ","RESTORE ","GOSUB " 65200 DATA "RETURN ","REM ","GET ","OUT ","PUT ","PLOT ","SAVE ","LOAD ","POKE ","PRINT ","LIST ","CONT " 65210 DATA "CLEAR ","DEF ","WAIT ","ON ","TAB( ","TO ","FN ","SPC( ","THEN ","NOT ","STEP ","+ ","- ","* ","/ ","^ " 65220 DATA "AND ","OR ","> ","= ","< ","SGN ","INT ","ABS ","CALL ","FRE ","INP ","POS ","SQR ","RND ","LOG " 65230 DATA "EXP ","COS ","SIN ","TAN ","ATN ","PEEK ","LEN ","STR$ ","VAL ","ASC ","CHR$ ","LEFT$ ","RIGHT$ ","MID$ " 65232 OUT 6,13:OUT 6,10:FOR D= 1TO 6:OUT 6,32:Z= 10:NEXT :RETURN :REM CONTROLS CR & LF WITH TAB FOR MULTIPLE STATEMENT LINES 65240 END