home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.whtech.com
/
ftp.whtech.com.tar
/
ftp.whtech.com
/
compuserve
/
Basic
/
TOKENR.EAD
< prev
next >
Wrap
Text File
|
2006-10-19
|
5KB
|
93 lines
0 DIM C$(254),Y(200):: GOTO 32707 :: !@P-
32707 DISPLAY AT(1,1)ERASE ALL:"TOKEN/READ by B.A. Traver" :: DISPLAY AT(3,6):"I
n purpose, TOKEN/READ":"is similar to my MERGE/READ"
32708 DISPLAY AT(5,1):"program published in the":"March 1984 issue of *THE":"SMA
RT PROGRAMMER*."
32709 DISPLAY AT(9,6):"This program provides":"access to the actual tokens":"use
d by a BASIC program and":"assists you in understanding"
32710 DISPLAY AT(13,1):"the meaning and use of those":"tokens." :: DISPLAY AT(16
,6):"MERGE/READ provided":"*sequential access* to the"
32711 DISPLAY AT(18,1):"program in merge format on":"disk; TOKEN/READ provides":
"*random access* to the pro-":"gram in actual (you guessed"
32712 DISPLAY AT(22,1):"it) RAM.": :"(Press any key to continue.)"
32713 CALL KEY(0,K,S):: IF S=0 THEN 32713
32714 DISPLAY AT(1,1)ERASE ALL:"TOKEN/READ by B.A. Traver" :: DISPLAY AT(3,6):"B
efore you can use this":"program you must first save"
32715 DISPLAY AT(5,1):"it to disk using the commandSAVE DSK1.TOKEN/READ, MERGE."
:: DISPLAY AT(8,6):"To use this program,"
32716 DISPLAY AT(9,1):"follow the following steps:" :: DISPLAY AT(11,6):"(1) Loa
d the program":"you want to inspect into"
32717 DISPLAY AT(13,1):"memory in the usual way,":"i.e., OLD DSK1.PROGRAM." :: D
ISPLAY AT(16,6):"(2) Merge this program"
32718 DISPLAY AT(17,1):"into memory with it, by":"means of the command MERGE DS
K1.TOKEN/READ."
32719 DISPLAY AT(21,6):"(3) RUN the merged":"program." :: DISPLAY AT(24,1):"(Pre
ss any key to continue.)"
32720 CALL KEY(0,K,S):: IF S=0 THEN 32720
32721 DISPLAY AT(1,1)ERASE ALL:"TOKEN/READ by B.A. Traver" :: DISPLAY AT(3,6):"A
ll you have to do is":"provide the line number of"
32722 DISPLAY AT(5,1):"the program line you want toinspect, and this program d
oes the rest!"
32723 DISPLAY AT(9,6):"CAUTION: If you provide":"a non-existent line number,":"y
ou will get nonsense on thescreen."
32724 DISPLAY AT(14,6):"This is in accordance" :: DISPLAY AT(15,1):"with the old
saying in the Army Computer Corps, ""G.I."
32725 DISPLAY AT(17,1):"Gee-Oh!"" (pronounced ""G.I.":"Joe"" with a slight accen
t)!" :: DISPLAY AT(20,6):"(Soon available should"
32726 DISPLAY AT(21,1):"be a program upgrade which allows output to printer.)":
:"(Press any key to continue.)"
32727 CALL KEY(0,K,S):: IF S=0 THEN 32727 ELSE DISPLAY AT(14,7)ERASE ALL:"INITIA
LIZING...."
32728 FOR I=129 TO 254 :: READ C$(I):: NEXT I
32729 DISPLAY AT(12,10)ERASE ALL:"LINE?" :: ACCEPT AT(12,16):L :: DISPLAY AT(14,
9):"SEARCHING...." :: CALL FIND(L,J):: CALL PEEK(J,A1)
32730 FOR I=1 TO A1 :: CALL PEEK(J+I,A):: Y(I+2)=A :: NEXT I :: CALL CLEAR :: DI
SPLAY AT(1,4):"ASCII CODE FOR LINE"
32731 IF L=65535 THEN 32748
32732 L1=INT(L/256):: L2=L-(L1*256)
32733 DISPLAY AT(1,24):STR$(L):: C=1 :: J=2
32734 S1=LEN(STR$(L1)):: DISPLAY AT(3,4-S1):STR$(L1)&" "&STR$(L1)&"*256" :: S2=L
EN(STR$(L2)):: DISPLAY AT(4,4-S2):STR$(L2)&" +"&STR$(L2)
32735 FOR I=3 TO A1+2
32736 R=I+2+2*(C-1):: IF I>40 THEN R=R-16 :: IF I>80 THEN R=R-16 :: IF I>120 THE
N R=R-16
32737 J=J+1 :: DISPLAY AT(R,C+3-LEN(STR$(Y(I)))):STR$(Y(I))
32738 DISPLAY AT(R,C+3-LEN(STR$(Y(I)))):STR$(Y(I))
32739 IF Y(I-2)=201 THEN IF Y(I-1)=0 THEN DISPLAY AT(R,C+4):STR$(Y(I)):: GOTO 32
744 ELSE DISPLAY AT(R,C+4):"+"&STR$(Y(I)):: GOTO 32744
32740 IF Y(I-1)=201 THEN IF Y(I)=0 THEN 32744 ELSE DISPLAY AT(R,C+4):STR$(256*Y(
I)):: GOTO 32744
32741 IF Y(I)>254 THEN DISPLAY AT(R,C+4):"*"
32742 IF Y(I)>128 AND Y(I)<255 THEN DISPLAY AT(R,C+4):C$(Y(I))
32743 IF Y(I)>31 AND Y(I)<128 THEN DISPLAY AT(R,C+4):CHR$(Y(I))
32744 IF J<20 THEN 32747
32745 C=C+14 :: J=0 :: IF C>16 THEN C=1
32746 IF I=40 OR I=80 OR I=120 THEN 32750
32747 NEXT I :: IF I=LEN(X$)+1 THEN 32750
32748 GOSUB 32752
32749 GOTO 32729
32750 GOSUB 32752
32751 IF I<>LEN(X$)+1 THEN 32747 ELSE 32731
32752 DISPLAY AT(24,3)BEEP:"PRESS ANY KEY TO GO ON"
32753 CALL KEY(0,K,S):: IF S=0 THEN 32753
32754 FOR CL=3 TO 24 :: DISPLAY AT(CL,1):"" :: NEXT CL :: RETURN
32755 !@P+
32756 A1,A,C,CL,I,J,K,L,L1,L2,R,S,S1,S2,N$,X$ :: CALL CLEAR :: CALL FIND :: CALL
KEY :: CALL PEEK
32757 DATA ELSE,::,!,IF,GO,GOTO,GOSUB,RETURN,DEF,DIM,END,FOR,LET,BREAK,UNBREAK,T
RACE,UNTRACE,INPUT,DATA,RESTORE,RANDOMIZE
32758 DATA NEXT,READ,STOP,DELETE,REM,ON,PRINT,CALL,OPTION,OPEN,CLOSE,SUB,DISPLAY
,IMAGE,ACCEPT,ERROR,WARNING,SUBEXIT,SUBEND,RUN
32759 DATA LINPUT,,,,,,THEN,TO,STEP,",",;,:,),(,&,,OR,AND,XOR,NOT,=,<,>,+,-,*,/,
^,,""" """,,,EOF,ABS,ATN,COS,EXP,INT
32760 DATA LOG,SGN,SIN,SQR,TAN,LEN,CHR$,RND,SEG$,POS,VAL,STR$,ASC,PI,REC,MAX,MIN
,RPT$,,,,,,,NUMERIC,DIGIT,UALPHA,SIZE,ALL
32761 DATA USING,BEEP,ERASE,AT,BASE,,VARIABLE,RELATIVE,INTERNAL,SEQUENTIAL,OUTPU
T,UPDATE,APPEND,FIXED,PERMANENT,TAB,#,VALIDATE
32762 SUB FIND(L,S)! Michael Riccio assisted with subprogram.
32763 CALL PEEK(-31952,A,B,C,D):: X=A*256+B-65536 :: Y=C*256+D-65536
32764 L1=INT(L/256):: L2=L-256*(INT(L/256)):: S=0
32765 IF X>Y THEN SUBEXIT
32766 CALL PEEK(X,A,B,C,D):: IF A<>L1 OR B<>L2 THEN X=X+4 :: GOTO 32765
32767 S=C*256+D-65537 :: SUBEND