ZX81 Listing for tabular.p


ZX81 program listing for **TABULAR**SLR/1983****

**TABULAR**SLR/1983**** (tabular.p)

A word processor for the ZX81 that prints lowercase letters to the printer!


SYSTEM VARIABLES

PROG  : 16509
D-FILE: 22217
VARS  : 23010
E-LINE: 27079
STKBOT: 27079
STKEND: 27079


LEGEND

9999 means line number
PRINT means treat as KEYWORD P


PROGRAM LISTING

   1 REM ****    TABULAR    ****
         ****WORD  PROCESSOR****
   2 REM ****BY: STEVEN REID****
   8 FAST
   9 CLS
  10 GOSUB 1000
  15 GOSUB 4000
  20 DIM A$(4,620)
  21 DIM X$(640)
  22 FOR Z=1 TO 4
  24 PRINT AT 21,0;"TEXT PAGE BE
ING ENTERED IS ";Z;AT 3,11;"TABU
LAR";AT 5,9;"BY:STEVEN REID";AT
15,0;"ENTER IN TEXT ADDING A SPA
CE AT THE END OF EACH LINE.(EX: 
      HELLO ALL YOU BOYS AND GIR
LS... )THE TEXT SHOULD START EAC
H LINEJUST PAST THE QUOTATION."
  25 INPUT X$
  26 FOR S=0 TO 19
  27 LET A$(Z,31*S+1 TO 31*(S+1)
)=X$(32*S+1 TO 32*(S+1))
  35 NEXT S
  36 NEXT Z
  37 GOSUB 5900
  38 FOR S=1 TO 620 STEP 31
  39 LET S$=A$(Z,S TO S+30)
  40 GOSUB 3000
  50 FOR P=1 TO LEN S$
  60 LET C=CODE S$(P)-37
  61 IF C=-37 OR C=91 THEN LET C
=27
  62 IF C=117 THEN LET C=28
  63 IF C=115 THEN LET C=29
  64 IF C=107 THEN LET C=30
  65 IF C=108 THEN LET C=31
  66 IF C=118 THEN LET C=32
  67 IF C=104 THEN LET C=33
  68 IF C=111 THEN LET C=34
  69 IF C=114 THEN LET C=35
  70 IF C=113 THEN LET C=36
  71 IF C=105 THEN LET C=37
  76 IF C>63 THEN LET C=C-63
  77 IF C<1 THEN LET C=C+65
  78 GOSUB 5000
  79 IF INKEY$="S" THEN GOTO 600
0
  80 NEXT P
  90 GOSUB 2000
  95 NEXT S
 100 GOTO 6000
 110 LET C=27
 120 GOTO 72
 200 FAST
 210 LET A$(Z,1 TO 610)=""
 220 LET Z=Z-(Z>1)+(Z=1)
 230 GOTO 6000
 500 FAST
 501 CLS
 510 PRINT AT 21,0;"TEXT PAGE BE
ING ENTERED IS ";Z;AT 3,3;"TABUL
AR GO OVER MODE...";AT 15,0;"ENT
ER IN TEXT ADDING A SPACE AT THE
 END OF EACH LINE.(EX:       HEL
LO ALL YOU BOYS AND GIRLS... )TH
E TEXT SHOULD START EACH LINEJUS
T PAST THE QUOTATION."
 520 INPUT X$
 530 FOR S=0 TO 19
 540 LET A$(Z,31*S+1 TO 31*(S+1)
)=X$(32*S+1 TO 32*(S+1))
 550 NEXT S
 560 GOTO 6000
1000 REM **INITIAL SETUP**
1001 REM IF PEEK 16388+256*PEEK
16389=31744 THEN GOTO 1030
1010 REM PRINT "MEMORY NOT RESER
VED"
1020 REM STOP
1030 FOR I=0 TO 112
1040 POKE 31744+I,PEEK (2161+I)
1050 NEXT I
1060 POKE 31800,63
1070 POKE 31857,201
1080 RETURN
2000 FOR H=0 TO 31
2010 POKE 16444+H,H
2020 NEXT H
2030 LET H=USR 31744
2040 LET L=0
2050 RETURN
3000 FOR I=0 TO 31*8
3010 POKE 32255+I,0
3020 NEXT I
3030 RETURN
4000 DIM L$(91,8)
4010 LET L$(1)="  SôW"+CHR$ (68)
+"W "
4020 LET L$(2)=" RNDRND"+CHR$ (1
20)+CHR$ (68)+CHR$ (68)+CHR$ (12
0)+" "
4030 LET L$(3)="  SRNDRNDRNDS "
4040 LET L$(4)=" ôôW"+CHR$ (68)+
CHR$ (68)+"W "
4050 LET L$(5)="  S"+CHR$ (68)+
CHR$ (124)+CHR$ (96)+"S "
4060 LET L$(6)=" £(S((( "
4070 LET L$(7)="  S"+CHR$ (68)+
CHR$ (68)+"SôS"
4080 LET L$(8)=" RNDRND"+CHR$ (1
20)+CHR$ (72)+CHR$ (72)+CHR$ (72
)+" "
4090 LET L$(9)="  ( ((( "
4100 LET L$(10)="  ( ((("+CHR$ (
96)
4110 LET L$(11)=" RNDRND"+CHR$ (
80)+CHR$ (96)+CHR$ (80)+CHR$ (72
)+" "
4120 LET L$(12)=" (((((( "
4130 LET L$(13)="  RND"+CHR$ (10
4)+CHR$ (84)+CHR$ (84)+CHR$ (84)
+" "
4140 LET L$(14)="  RND"+CHR$ (11
2)+CHR$ (72)+CHR$ (72)+CHR$ (72)
+" "
4150 LET L$(15)="  S"+CHR$ (68)+
CHR$ (68)+CHR$ (68)+"S "
4160 LET L$(16)="  "+CHR$ (120)+
CHR$ (68)+CHR$ (68)+CHR$ (120)+"
RNDRND"
4170 LET L$(17)="  S"+CHR$ (68)+
CHR$ (68)+"S!£"
4180 LET L$(18)="  "+CHR$ (88)+
CHR$ (100)+"RNDRNDRND "
4190 LET L$(19)="  SRNDSôS "
4200 LET L$(20)=" ((S((( "
4210 LET L$(21)="  "+CHR$ (68)+
CHR$ (68)+CHR$ (68)+CHR$ (76)+"O
 "
4220 LET L$(22)="  "+CHR$ (68)+
CHR$ (68)+CHR$ (68)+"C( "
4230 LET L$(23)="  "+CHR$ (84)+
CHR$ (84)+CHR$ (84)+CHR$ (84)+"C
 "
4240 LET L$(24)="  "+CHR$ (68)+"
C(C"+CHR$ (68)+" "
4250 LET L$(25)="  "+CHR$ (68)+
CHR$ (68)+CHR$ (68)+"C("+CHR$ (9
6)
4260 LET L$(26)="  "+CHR$ (124)+
"!(4"+CHR$ (124)+" "
4270 LET L=28
4280 FOR A=0 TO 63
4290 FOR J=0 TO 7
4300 LET P=7688+(A-1)*8
4310 LET L$(L,J+1)=CHR$ (PEEK (P
+J))
4320 NEXT J
4330 LET L=L+1
4340 NEXT A
4350 LET L$(28)=" 4RND     "
4360 LET L$(29)=" MO!(G"+CHR$ (7
6)+" "
4370 LET L$(30)=" 0((((0 "
4380 LET L$(31)=" S!!!!S "
4390 LET L$(32)=" (((( ( "
4400 LET L$(33)=" !0CC0! "
4410 LET L$(34)="  C"+CHR$ (124)
+"C"+CHR$ (124)+"C "
4420 LET L$(35)=" WPI"+CHR$ (90)
+CHR$ (92)+"RNDY "
4430 LET L$(36)="  RND4(!ô "
4440 LET L$(37)=" (((((( "
4999 RETURN
5000 FOR I=1 TO 8
5010 POKE 32255+I+P*8,CODE L$(C,
I)
5020 NEXT I
5030 RETURN
5900 LET Z=1
6000 GOSUB 7000
6010 PRINT "FORWARD/BACKWARD/G
OVER/RESTART"
6015 SLOW
6020 PRINT "EDIT/LPRINT/SAVE/DEL
ETE/QUIT"
6030 PAUSE 4E4
6040 IF INKEY$="" THEN GOTO 6040
6050 LET O$=INKEY$
6060 IF O$="L" THEN FAST
6070 IF O$="L" THEN GOTO 38
6080 IF O$="E" THEN GOTO 8000
6090 IF O$="R" THEN RUN
6091 IF O$="F" THEN LET Z=Z+(Z<4
)
6092 IF O$="B" THEN LET Z=Z-(Z>1
)
6093 IF O$="B" OR O$="F" THEN
FAST
6094 IF O$="B" OR O$="F" THEN
GOTO 6000
6100 IF O$="Q" THEN STOP
6101 IF O$="D" THEN GOTO 200
6102 IF O$="G" THEN GOTO 500
6110 IF O$<>"S" THEN GOTO 6040
6120 CLS
6130 PRINT "DO YOU WISH TO SAVE 
JUST THE    PROGRAM/OR IT AND AL
L ITS DATA?"
6140 IF INKEY$="D" THEN GOTO 630
0
6150 IF INKEY$<>"O" THEN GOTO 61
40
6155 PAUSE 4E4
6200 PRINT ,,,,,,"PLACE IN TAPE 
AND PRESS ANY KEY."
6230 IF INKEY$="" THEN GOTO 6230
6240 PRINT "SAVEING TABULAR(LOAD
 MP)"
6250 PAUSE 100
6260 SAVE "MP"
6270 GOTO 6000
6300 CLEAR
6310 PRINT ,,,,,,"PLACE IN TAPE 
AND PRESS ANY KEY."
6315 PAUSE 4E4
6320 IF INKEY$="" THEN GOTO 6320
6330 PRINT "SAVEING TABULAR(LOAD
 MP)"
6340 PAUSE 100
6350 SAVE "MP"
6360 RUN
7000 CLS
7010 FOR A=1 TO 620 STEP 31
7020 PRINT A$(Z,A TO A+30)
7030 NEXT A
7040 RETURN
8000 FAST
8010 LET X=0
8020 LET Y=0
8025 GOSUB 7000
8026 LET O=CODE A$(Z,X*31+Y+1)
8030 LET O=O+(128 AND O<63)-(128
AND O>63)
8040 LET Z$=CHR$ O
8050 PRINT AT X,Y;Z$;AT 21,0;"1R
ETURN/0CORRECT/5678DIRECTION"
8060 PAUSE 4E4
8070 LET O$=INKEY$
8090 IF O$="1" THEN GOTO 6000
8100 IF O$="0" THEN GOTO 8500
8105 PRINT AT X,Y;A$(Z,X*31+Y+1)
8110 LET X=X+(O$="6" AND X<19)-(
O$="7" AND X>0)
8120 LET Y=Y+(O$="8" AND Y<30)-(
O$="5" AND Y>0)
8130 GOTO 8025
8500 INPUT O$
8510 LET A$(Z,X*31+Y+1)=O$
8520 GOTO 8025