Listing of file='SIMCHR.BAS;01' on disk='vmedia/analiz_watals-sector.ccvf'
1 REM 80 07 11 22:10 (C) 1980 C W HENNIG 10 PLOT 6,2,12:PRINT "UNIVERSITY OF WATERLOO LANGUAGE LABS CHARACTER SIMULATOR " 20 HM= 32940:T= PEEK (HM)+ PEEK (HM+ 1)* 256:IF PEEK (T+ 1)+ PEEK (T+ 2)* 256= 2048 GOTO 40 30 T= T- 2050:HI= INT (T/ 256):LO= T- (HI* 256):POKE HM,LO:POKE HM+ 1,HI 40 CLEAR 500:HM= 32940:T= PEEK (HM)+ PEEK (HM+ 1)* 256:POKE T+ 1,0:POKE T+ 2,8:REM 2048BYTES FOR SAVE 90 A= 6:B= 10:C0= 30:D= 2:E= 253:F= 29:Z= 255 100 TE= 0:OFFSET= 0:DA= T+ 3:REM DATA AREA FOR .DAT FILE 120 DEF FN XY(CX)= PEEK (CX)+ PEEK (CX+ 1)* 256 160 DIM HX$(15) 200 RESTORE 620:FOR I= 0TO 15:READ HX$(I):NEXT 209 REM IF NO FILE PRESS RETURN W/NO INPUT 210 INPUT "FILE NAME? ";T$:PLOT 28,11:IF T$= "0"OR T$= ""THEN FL$= "CHAR":AP= 1:GOTO 215 212 FL$= T$ 215 GOSUB 11000 220 CXY= 33234:X0= 59:Y0= 60:RO= 0 240 PLOT 3,0,4,6,4:PRINT "CTRL Q=PRINT U=UPPER D=LOWER, QUIT TO SAVE T+ CHAR=EDIT > "; 260 PLOT F:XY= FN XY(CX):INPUT "";T$:C= PEEK (XY):PLOT F:GOSUB 3000 280 IF T$= "QUIT"THEN GOSUB 960:GOTO 480:REM QUIT PROG & SAVE .ARY 290 IF LEFT$ (T$,1)= ""THEN SWITCH= 1:REM CTRL BLUE (T) FOR EDIT 295 IF LEFT$ (T$,1)= ""THEN OFFSET= 0:PLOT 3,0,2:PRINT "LOWER IS ACTIVE":REM CTRL D = LOWER HALF OF FILE 297 IF LEFT$ (T$,1)= ""THEN OFFSET= 1024:PLOT 3,0,2:PRINT "UPPER IS ACTIVE":REM CTRL U = UPPER HALF OF FILE 299 IF LEFT$ (T$,1)= ""THEN SWITCH= 0:REM CTRL Q=PRINT CHARACTER 300 R= C* 8+ OF+ DA:CH= 0:RO= 1:Y0= 60:REM OFFSET=TOP OR BOTTOM HALF OF FILE 305 IF SW= 0THEN GOSUB 2000:GOTO 240 310 IF SW= 1THEN GOSUB 640:GOSUB 2000 320 PLOT 3,0,6,6,2:INPUT "N=NEXT CHR: +=NEXT ROW: T=-1ROW HEX# > ";T$ 340 IF T$= ""THEN R= R- 1:Y0= Y0+ 1:RO= RO- 1:GOSUB 690:GOTO 320:REM 350 IF LEFT$ (T$,1)= "N"GOTO 240:REM GET NEXT CHAR 355 IF LEFT$ (T$,1)= "+"THEN CH= PEEK (R):GOTO 410:REM SKIP THIS ROW 360 IF T$= "0"THEN CH= 0:GOTO 400 370 IF T$= ""THEN CH= 0:GOTO 400 380 GOSUB 540:CHR= X:IF APF= 1THEN AP= 0:GOTO 320 400 POKE R,CH:REM PUT CHAR IN .DAT AREA 410 GOSUB 640:REM PLOT ROW 420 Y0= Y0- 1:IF Y0< 53THEN Y0= 60:REM CHANGE PLOT ROW 440 ROW= RO+ 1:IF RO> 8THEN RO= 1:GOTO 240:REM LAST ROW OF CHAR 460 R= R+ 1:CH= 0:GOTO 320:REM UPDATE CHAR DATA POINTER 480 PLOT 6,2:END 500 Y= INT (X/ 256):GOSUB 520:Y= X- Y* 256:GOSUB 520:RETURN 520 Z= INT (Y/ 16):PRINT HX$(Z);:Z= Y- Z* 16:PRINT HX$(Z);:RETURN 540 X= 0:FOR Q= 1TO LEN (T$) 560 X= X* 16:A$= MID$ (T$,Q,1) 580 FOR RR= 0TO 15:IF HX$(RR)< > A$THEN NEXT RR:GOSUB 10000:CH= 0:APF= 1:GOTO 610 600 X= X+ RR:NEXT Q 610 RETURN 620 DATA 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 640 REM PLOT CHAR ROW 660 PLOT 3,2,16,6,4:PRINT "CHAR ";:IF CH< = 255THEN POKE FN XY(CX),C 680 PLOT 3,10,16,6,3:PRINT "ADDR."R- DA" ROW"RO" " 690 PLOT 3,64,16:X0= 59 700 FOR I= 7TO 2STEP - 1:X0= X0+ 1:PLOT A,B,F,D,E,X0,Y0,Z:NEXT I:X0= 59 710 FOR I= 7TO 2STEP - 1:X0= X0+ 1:IF CHAND (2^ I)THEN PLOT A,B,C0,D,E,X0,Y0,Z 720 NEXT I 740 X0= 59 760 RETURN 960 REM QUIT & SAVE ARRAY 980 PRINT "SAVE "FL$".DAT":SAVE FL$+ ".DAT":RETURN 2000 REM PLOT COMPLETE CHAR 2010 PLOT 3,64,16:X0= 59:Y0= 60 2020 R1= R:FOR H= 1TO 8:FOR I= 7TO 2STEP - 1:X0= X0+ 1:IF PEEK (R1)AND (D^ I)THEN PLOT A,B,C0,D,E,X0,Y0,Z:GOTO 2040 2040 NEXT I:X0= 59:R1= R1+ 1:Y0= Y0- 1:NEXT H 2060 X0= 59:Y0= 60:PLOT A,D:APF= 0 2080 RETURN 3000 REM CLEAR PLOT AREA 3020 PLOT 3,64,16:X0= 57:Y0= 66 3030 PLOT A,B,F,D,E:FOR H= 1TO 16:X0= 58:FOR I= 1TO 12:PLOT X0+ I,Y0- H 3040 NEXT I:NEXT H:PLOT Z 3050 PLOT A,D 3053 Y0= 65:X0= 59 3054 FOR I= 7TO 2STEP - 1:X0= X0+ 1:PLOT A,B,C0,D,E:IF I= < 4THEN B= 10+ 64 3055 IF 85AND (2^ I)THEN PLOT X0,Y0 3056 IF 168AND (2^ I)THEN PLOT X0,Y0- 1 3057 PLOT 255:NEXT I:B= 10 3060 RETURN 10000 PRINT "INVALID CHARACTER. MUST BE A HEX VALUE. ":FOR I= 0TO 1000:NEXT :PLOT 28,11:RETURN 11000 REM LOAD .DATA FILE 11005 PRINT "INITIALIZING "FL$" DATA AREA 11010 IF AP= 0THEN LOAD FL$+ ".DAT":GOTO 11050 11020 FOR I= DA TO DA+ 2047 11030 POKE I,63 11040 NEXT I:AP= 0 11050 PLOT 28,11 11999 RETURN 12000 REM HEX CONVERSION 12010 HX$= "":Y= INT (X/ 256):GOSUB 12050:Y= X- Y* 256:GOSUB 12050:RETURN 12050 Z= INT (Y/ 16):HX$= HX$+ HX$(Z):Z= Y- Z* 16:HX$= HX$+ HX$(Z):RETURN