1 REM" 2 REM" Typewriter Listing 2 3 REM" Mike Rawlings 4 REM" For BBCB / B+ / Electron 5 REM" 6th July 1986 6 REM" 7 REM" 8 REM" Printer specific codes 9 REM"marked withREMstatements 10 REM" 11 REM" 12 REM" Codes are correct for 13 REM"Epson DX-100 / Brother HR15 14 REM" 15 : 16 ON ERROR GOTO 80 17 IF PAGE=&2400:*TAPE 18 x1=0:y1=0:PROCesc:PROCtab4 19 x2=0:y2=9:VDU 12,30:PROCres 20 FOR a=0 TO Q% 21 $(F%+a*71)=STRING$(70," "):NEXT 22 : 23 REPEAT x=GET 24 IF x=144 GOTO 47 25 IF x=145 GOTO 48 26 IF x=146 GOTO 49 27 IF x=148 GOTO 50 28 IF x=21 UNTIL 0 29 IF x=136 AND x2=0 UNTIL 0 30 IF x=127 AND x2=0 UNTIL 0 31 IF x=127 OR x=136 PROCbs:UNTIL 0 32 IF x=138 AND y2>(Q%-1) UNTIL 0 33 IF x=138 PROCline(3):UNTIL 0 34 IF x=139 AND y2=0 UNTIL 0 35 IF x=139 PROCline(2):UNTIL 0 36 IF y2>Q% UNTIL 0 37 IF x=13 VDU 2,x,10,3:PROCline(1) 38 IF x2>69 OR x=13 UNTIL0 39 IF x=9 PROCtab1:UNTIL 0 40 IF x=147 GOTO 51 41 IF x=137 OR x=32 PROCht:UNTIL 0 42 IF x>127 UNTIL 0 43 UNTIL x=x 44 : 45 f=x:x3=x2:REPEAT 46 IF f<>0 x=f:f=0:ELSE x=GET 47 IF x=144 PROCtab4:UNTIL 0 48 IF x=145 PROCtab5:UNTIL 0 49 IF x=146 PROCtab3(255):UNTIL 0 50 IF x=148 PROCdef:UNTIL 0 51 IF x=147 PROCtab3(32):UNTIL 0 52 IF x=127 VDU x:x2=x2-1 53 IF x=127 UNTIL x2=x3:GOTO 23 54 IF x=9 AND x2>69 UNTIL 0 55 IF x=9 PROCtab2:UNTIL 0 56 IF x>127 UNTIL 0 57 IF x=21 PROCdel:UNTIL x=x:GOTO 23 58 IF x<>13 AND x<32 UNTIL 0 59 IF x=13 OR x2>69 GOTO63 60 VDU 5,25,4,(POS+5)*16;895-VPOS*32; 61 SOUND0,2,4,1:VDU x,4,9:?(C%+x2)=x+61*(x=96) 62 PROCbell:UNTIL 0 63 UNTIL x=13:!&8B=F%+y2*71 64 ?&8D=x3:?&8E=x2:CALL D% 65 PROCline(1):GOTO 23 66 : 67 DEF PROCdef:x1=POS:y1=VPOS:VDU 28,44,31,76,29:CLS:PRINTTAB(1,1)$N%; 68 REPEAT x=GET:UNTIL (x>47 AND x<58) OR x=13 69 IF x=13 PROCesc:ENDPROC 70 VDU x:x=x-48:REPEAT d=GET:UNTIL d=13 OR d=127 71 IF d=127 VDU d:GOTO 68 72 PRINTTAB(1,1)$M%;:?&8D=23:CALL B%:$H%="KEY"+STR$(x)+""""+$H%+"""":CALL &FFF7:PROCesc:ENDPROC 73 : 74 DEF PROCesc:VDU 28,44,31,76,29:COLOUR 1:COLOUR 128:CLS:PRINT $J%'$K%'$L%;:PROCret:ENDPROC 75 : 76 DEF PROCret:VDU28,5,27,76,4:COLOUR0:COLOUR129:VDU31,x1,y1:ENDPROC 77 : 78 DEF PROCset:x1=POS:y1=VPOS:COLOUR 1:COLOUR 128:ENDPROC 79 : 80 IF ERR=17:PROCesc:GOTO 19 81 PROCres:MODE 7:*FX 4,0 82 PRINT'':REPORT:*FX 202,32 83 *FX 212,144 84 *FX 213,101 85 PRINT" at line ";ERL:*DISK 86 END 87 : 88 DEF PROCline(a):ON a GOTO 91,94,89 89 VDU 10,2:IFx2=0 VDU 13,3:ELSEVDU 1,10,3 90 GOTO 92 91 x2=0 92 y2=y2+1:IF VPOS=23 AND y2<(Q%+1) GOTO 95 93 ENDPROC 94 VDU 11:PROCup:y2=y2-1:IF VPOS<>0 ENDPROC 95 y1=895-VPOS*32:!&8B=F%+y2*71:?&8D=y1 MOD 256:?&8E=y1 DIV 256:CALL E%:ENDPROC 96 : 97 DEF PROCtab1:REPEAT VDU 2,9,1,32,3:GOTO 100 98 : 99 DEF PROCtab2:REPEAT VDU 9:?(C%+x2)=32 100 PROCbell:UNTIL ?(G%+x2)=255 101 ENDPROC 102 : 103 DEF PROCtab3(x):IF x2=0 OR x2>69 ENDPROC 104 PROCset:?(G%+x2)=x:VDU 28,5,28,76,3:VDU 31,x2,0,x,31,x2,25,x:PROCret:ENDPROC 105 : 106 DEF PROCtab4:PROCset:FOR a=0 TO 69:?(G%+a)=32:NEXT:?(G%+a)=255:FOR a=3 TO 28 STEP 25:VDU 28,5,a,76,a:CLS:NEXT:PROCret:ENDPROC 107 : 108 DEF PROCtab5:PROCtab4:PROCset:VDU 28,5,28,76,3:FOR a=10 TO 60 STEP 10:VDU 31,a,0,255,31,a,25,255:?(G%+a)=255:NEXT:PROCret:ENDPROC 109 : 110 DEF PROCbell:IFx2=60 VDU 7 111 x2=x2+1:ENDPROC 112 : 113 DEF PROCdel:FOR a=x3 TO (x2-1):VDU 127:NEXT:x2=x3:ENDPROC 114 : 115 DEF PROCht:VDU 9,2,1,32,3:PROCbell:ENDPROC 116 : 117 DEF PROCbs:x2=x2-1:VDU 2,8,3:ENDPROC 118 : 119 REM"Reset printer 120 DEF PROCres 121 VDU 2,1,27,1,13,1,80,3:ENDPROC 122 REM"Reset printer 123 : 124 REM"Reverse linefeed 125 DEF PROCup:VDU 2,1,27,1,10,3 126 ENDPROC 127 REM"Reverse linefeed