9 'BIGTYPE  18 DEC 82  Hal Sampson
10 'add: roam thru larger screen
20 ' print screen translation to Epson, multiple character sets
30 ' scrolling
40 ' cursor off during screen print
50 ' absorb auto repeat when type too fast?
1000 REM Program to display dot matrix characters from ROM patterns
1010 REM Will Fastie -- 19 Nov 81     Creative Computing  March 1982
1020 REM Entered by Patrick Leabo    Tuscon
1030 DEFINT A-Z
1035 DIM B$(256),C$(256)
1040 DOTCHAR = 219
1065 CUR$=STRING$(7,DOTCHAR)
1070 GOSUB 1410
1072 KEY OFF
1075 DEF SEG:POKE 106,0   'FOR USE OF RUN SOFT KEY
1080 DEF SEG=&HF000
1090 BASEADR=&HFA6E
1100 BYTESPERCHAR=8
1115 FOR I=0 TO 15:M=1:D$="":FOR B=1 TO 4:D$=CHR$((I AND M)>0 AND DOTCHAR OR 32 AND (I AND M)=0)+D$:M=M+M:NEXT B:C$(I)=D$:C$(I16)=D$:I16=I16+16:NEXT I
1122 FOR I=0 TO 255:B$(I)=C$(I AND &HF0)+C$(I AND &HF):NEXT I
1130 CLS:LOCATE ,,0
1140 FOR X=1 TO 19 STEP 9
1150 FOR Y=1 TO 73 STEP 8
1160 RM=7+(X=19):CM=8+(X=19 AND Y=73)
1162 CHAR$=INKEY$:IF CHAR$<>"" THEN 1180
1165 LOCATE X+6,Y:PRINT CUR$;:FOR R=RM TO 0 STEP -1:LOCATE X+R,Y:PRINT LEFT$(   "        ",CM);:NEXT R
1170 CHAR$=INKEY$: IF CHAR$="" THEN 1165
1180 CODE =ASC(CHAR$):IF CODE=0 THEN CODE=ASC(RIGHT$(CHAR$,1))+300
1190 IF (CODE = 8 OR CODE=375) AND Y>8 THEN Y=Y-8:GOTO 1160
1195 IF CODE = 372 AND X>9  THEN X=X-9:GOTO 1160
1197 IF CODE = 377 AND Y<66 THEN Y=Y+8:GOTO 1160
1198 IF CODE = 380 AND X<19 THEN X=X+9:GOTO 1160
1199 IF CODE>=300 OR CODE =8 THEN 1160
1200 ADR = BASEADR + (CODE*BYTESPERCHAR)
1260 FOR ROW=0 TO RM:LOCATE X+ROW,Y:PRINT LEFT$(B$(PEEK(ADR+ROW)),CM);:NEXT ROW
1265 NEXT Y:NEXT X
1270 GOTO 1140
1410 REM Initialize display
1420 SCREEN 0:SCREENWIDTH=80
1430 RETURN