Hi-Res Word Processor

Date: 1983
Type: Cassette
Platform(s): TS 1000

Hi-Res Word Processor is a word processing program that captures keyboard input and formats text for output to either a Timex/Sinclair thermal printer in 32- or 64-character modes or an external 80-column printer. The program relies heavily on machine code routines invoked via RAND USR calls at addresses such as 16609, 16698, 16737, 16900, 19092, 21136, 27377, 27393, and 27423, with the BASIC acting largely as an initialization and dispatch shell. Line 97 dimensions a 1216-byte string array X$, which serves as a text buffer; line 115 computes the column width as 32*C-1 (yielding 31 or 63 for the two printer modes). The main input loop at lines 130–180 fills X$ with lines returned by the machine code input routine (USR 27423), terminating when that routine signals end-of-input by returning 255. For the 80-column path, a separate simpler loop at lines 230–260 uses LPRINT to send each captured line directly.


Program Analysis

Program Structure

The visible BASIC portion (lines 1–5 are REM blocks containing embedded machine code data; the executable logic begins at line 10) acts as a thin shell around a collection of machine code routines. The overall flow is:

  1. Lines 10–25: Initialize — dimension B$, POKE a value into address 16900, then invoke several machine code setup routines via RAND USR.
  2. Line 27: Jump to the main menu at line 65.
  3. Lines 65–95: Display a mode-selection menu, accept a numeric choice C (1–5), and branch accordingly. Choice 4 stops, choice 5 loops back to line 10, choices 1–3 proceed.
  4. Line 97: Dimension the text buffer X$(1216).
  5. Lines 100–180: Handle the T/S printer paths (32 or 64 characters per line).
  6. Lines 200–265: Handle the 80-column external printer path.

Machine Code Usage

The program is dominated by machine code. Lines 1, 2, and 4 are REM statements whose bodies contain encoded machine code loaded into memory at fixed addresses. All substantive work — keyboard scanning, character rendering, hi-res display, and printer formatting — is performed by these routines. The BASIC calls them with RAND USR, which discards the return value as a random seed, a standard idiom for invoking machine code subroutines that are not expected to return a meaningful BASIC value.

AddressRole inferred from context
16609Early initialization routine
16698Called both at line 40 (unreachable) and line 65; likely display/mode setup
16737Secondary initialization
16900Target of POKE 16900,63; likely a width or mode parameter byte
19092Further setup
2274Called in 80-column path at line 213; probably printer configuration
27377Main word-processor machine code entry point
27393+C*4Dispatch into printer-mode-specific routine (C=1 → 27397, C=2 → 27401)
27423The input/capture loop; returns 255 as an end-of-input sentinel
1747432-column print finalizer
2113664-column print finalizer

Key BASIC Idioms

  • Buffer sizing: DIM X$(1216) at line 97 allocates a flat string to hold multiple lines of text. At 32 characters per line this holds 38 lines; at 64 characters per line it holds 19 lines.
  • Width calculation: Line 115 uses LET C=32*C-1 to convert the menu choice (1 or 2) directly into a zero-based column width (31 or 63), reusing C as a dual-purpose variable.
  • Substring slicing: Line 150 copies B$(2 TO C+2) into the appropriate slice of X$, using B$ as a line-length-prefixed buffer where byte 1 encodes the captured length.
  • Sentinel-driven loop: The machine code routine at 27423 returns 255 via USR to signal end of input; lines 175 and 245 test IF B=255 to exit the capture loop.
  • CHR$ 118 initialization: LET B$=CHR$ 118 at lines 135 and 230 pre-fills B$ with a newline character (code 118 is NEWLINE in the character set), which likely acts as a sentinel or framing byte for the machine code input routine.

Notable Techniques

The computed RAND USR dispatch at line 110 — RAND USR (27393+C*4) — is an efficient jump table: multiplying the mode index by 4 strides over 4-byte machine code entries, avoiding a chain of IF tests. This is a compact and fast pattern for selecting among a small set of machine code handlers.

Line 40 (RAND USR 16698 followed by STOP) is never reached from the normal flow (line 27 jumps to 65, which calls 16698 directly). It may be a leftover debugging entry point or an alternative cold-start hook reachable by a direct GOTO 40.

The 80-column path (lines 200–265) is architecturally simpler: it bypasses the X$ buffer entirely and uses LPRINT directly in a line-at-a-time loop, reflecting that the 80-column printer does not need the hi-res rendering pipeline used for the T/S thermal printer.

Line 215 uses POKE 27522,C-1 to write the user-entered column width (minus 1) directly into the machine code, a common technique for passing parameters to assembled routines without a calling convention.

Anomalies

  • Line 125 is referenced by GOTO 125 at line 180 but does not appear in the listing; the capture loop must restart at the nearest lower extant line, which would be line 130. This is the well-known technique of branching to a non-existent line number to land at the next line.
  • The DIM B$(90) at line 10 allocates only 90 characters, yet line 150 references B$(2 TO C+2) with C potentially equal to 63, meaning B$(2 TO 65) — well within the 90-byte dimension. The machine code at 27423 presumably writes into B$ directly via its address.

Content

Appears On

Related Products

Lowercase on screen, full cursor movement. Prints 64 characters per line sideways on 2040 printer in upper and lower case....

Related Articles

Related Content

Image Gallery

Source Code

   1 FOR  NEXT  CLEAREP#)5 ▘T#5[V]RND FAST  5[2]RND DIM [2]RND DIM  GOSUB # GOSUB # CLEAR;\~~ RETURN COPYC\,,▀ GOSUB # GOSUB #Y  CLEAR DIM ▘U#Y= GOSUB # CLEAR DIM  GOSUB # GOSUB #[B]▘# E(RND GOSUB PI CLEAR5 RNDY2 GOSUB #ACS  UNPLOT ▘▘▀Y INPUT ▘▘▀  GOSUB # CLSY<> DIM /[7] GOSUB #UI# RETURN ""5▀ LN **\,,77 FAST[B]#7#5█- GOSUB #C▝INT $ LPRINT ▘▌ \,, FASTQ#7Q CLEAR7Q FAST7Q LPRINT 7Q#7Q DIM   Y DIM )5 ▞[I];# ( CLSQ LPRINT 7#[J] LPRINT  FAST).  GOSUB #ACS  UNPLOT 6P#A#YM# THEN#5I#ACS #COS ACS ▚E(RND▘;▀[J] GOSUB PI GOSUB #£RND6£RND FOR Q TAN ES#6XPI#JPI  5WRND6XPI5[H] 6QRNDLN  LLIST ▒5#RNDQ<>LN HPIEJ# FAST▘▒▘\,,SGN  FOR ▘#+ GOSUB [K]TAN ES# GOSUB #W# FAST\,, FOR  LPRINT VAL LN #\~~AT [J]## GOSUB PI FAST   E(#FFAT #7# FOR \,, FOR #F#..PI#TAN    # NEW▛A #DDDDDD▐#Y [£]#)[K]#; FAST#A #DDDDD▞ \,,▐##[£]# GOSUB #J#; FOR  LPRINT TAN STR$  RETURNINKEY$ S▝ PLOT "": ACS #C▀J:█- #;>TAN Z$ LN CHR$ # GOSUB #QRNDY3[(]**Y[H][)]#**LN [S]INKEY$ U5RND# CONT INKEY$    LN 7?5▀ #[(]#TAN   LN CHR$ #E£RND▘▞ \,,6J#5[~~]# GOSUB #QRND GOSUB #F#4=5WRND6XPIQ<7QE7Q>7Q<>#JPI7 FAST▘ ▒ACS #LN <# VAL A  NEWZ#DDD GOSUB #N#; FOR AT UO# RETURN2,4▝ACS ZACS INKEY$ C▘JM5RNDVAL STR$ LN \~~PISGN AT <5QRNDP( STEP 5RRNDOACS #4\,,UF#MQRND LPRINT /[/]UQRNDMF#UG#MRRND LPRINT /[,,]   0MM+ 444WMM0    0440 ▝▝▝0MMW    0MW40 ▞▒▒2▒▒   ▝0M0▝W 44WMMM  ▖ ▖▖▖▛  ▝ ▝▝▝▝0 446S66 ▖▖▖▖▖▖▀    ME66    0MMM    0MM0    06W44   060▝▝   IK44    040▝0 ▖▖?▖▖▀    MMM0    MM=▒    MMQM    M0▖M    QQ0▝0   2▖▒2 11LN **\,, FAST77#7#[B]5█- GOSUB #4▝AT TAN  LPRINT  FAST▘▜-LN [2]\,, LPRINT ▘█-Q 7Q▀7#7#7Q REM 7Q1""##< GOSUB [K]Q#▘▜-EDRND\,,6DRNDTAN  GOSUB # GOSUB #5I#ACS #""INT ?I DIM [Y]4BI GOSUB [Y]46YEI FOR [Y]4.I LIST [Y]4-YLI GOTO /▞5WRND#ZPIY▘MI# LPRINT 6£RNDTAN INT ▀▞ ACS (#[-]INKEY$ 4▌5 2/▀5[:]INKEY$ 6N#TAN  GOSUB # GOSUB # GOSUB # GOSUB # GOSUB #[H] # #### 2INKEY$ USR ##=0=▞:▞=> COPYLN 7?VAL - 5STR$ ##RND#PEEK  CLS LPRINT LN #?S▌3PEEK  CLSAT TAN <= CLS▗ IF  THEN▒K INPUT  FAST#CZ#█#STR$ ACS #▘ 2C▀▘RND#▗▗▗A ##ACS =;\,,▘3#<= CLS3K CLS#PEEK  CLS( LET SGN  LPRINT /SIN <= CLS3K CLS[J]#0ACS #C[9]AT /[3]AT # AND ▒▌I,GJ▝[V]2[~~]$[U]?[F]▝[V]2[E]$[5]W;R[X][A][~~]?)?[~~]W[T]7S8+COO[X][A]6"((OK[N]K6:[5]W[B][A][X][A]6?[T]Q[T]7[T]7HO[4]BM£ZJ▙;YJ8JIJ8[W][7][5][5]([H][V][~~]TI▀[~~]█I▀[~~]0??9X[3][V]9F++▌█+▌▌F?[N][7]XD[V]=F[E][N][N]█[E])[6]6[3]J0[L]UK[R][L]▝W/W,W[S][L][V]▘[O][O]X5[6]5MY//,Y[S][I]4▌GCX["][6]CQ[7]=)[;]HHHZGGGX[6][6]$9TT$[;][;][;][I]8*[Q][9]5[C]Z66-344/[U]/▗L[P]▚E.[£]D▗[2][P][P]▗X▗,▗\~~GKGK[£][R][B]W[H]J7S(S[N]\~~[H]▚▚[R][£][R][R]W[H],V,,,["]"▀[T][B][B]£C£[7]▜)[V])[0]▙[7]█[M])[F][R][~~]["]6H▜["][V]D[0]["][7]█ZXU[R];[R]6[R]K(/?[Y]?[R]█[+][F][F]D[2][J]6HQDDD[Y]███GRO[+]5£[V]N[V]Z/▞▛N/B[V]Z?[W][W][<][<]"▛;?[Y][Y]BBB[T];-GGGM"ADD[S]>███[T];8[F]E"""[T][6]4[6][T][6]U[6][T]K7HK[N]JL▜[N][E]V=VWV[N][N][X][/][/][/]0T[C]U[E]===WW[?][2]\,,<*<[Q][Z];F33["]V[P]V[?][2]G▌[£]U[Q]U[C]UO["]["][2][?][2][?][2],HIP[U]7/[U][U][V])[0]▀<//[U]JNCN[W][W][8][5]JJ/N[▒]JT█[?]M[X]MCN[8][5]9=ZR9RT█-[X][X][5][8][5][8][5]-[X]T█T█T█YLN CHR$ ##PI#▞▞
   2 REM COPYRIGHT 1983...SW-HI-RES BY NISSIM ELMALEHES# GOSUB #W# FASTVAL LN [2]\,,AT  LPRINT VAL Q ##"< GOSUB [K]#[2]INKEY$ LN 7??[~~]#3       [H]         TAN  COS  ▘ ##COS    [H] ""   ▘     4   5▖PI6-RNDLN 0) AND #$ FASTAT ▀TAN [J]#▘;-LN  PRINT ▒E>#7▘ LIST **LN  LPRINT ▛ FASTVAL #[H]\~~ FASTLN ## LPRINT  RETURN#C SCROLLUM##▘  5[:]##[U]C▛ RETURN COPYCOS £7/ PRINT  LPRINT 5##\,,\,,\,,AT  DIM <> LPRINT  STEP #### STOP FAST##"" SLOW LLIST # OR >= COPY THEN#S[N] LPRINT Y COPYVAL  GOSUB #>#▘  /\~~Y COPYVAL  GOSUB #/#)█▝E(#\,,6##;6▟# RETURN COPYASN PI##[(]#      E£RND▘[1]<\,,##▘▒▘\,, FOR ▘[/]< GOSUB [S]5[H] 6QRNDTAN  RUN  FASTEJ###▘▒▘\,, ▘[/]< GOSUB [K]5+ 6QRNDTAN ABS #7( SAVE  FOR  LPRINT /PEEK [*][T]COS [B] GOSUB # GOSUB # FOR [B]TAN 6MRNDACS [W]SGN TAN  UVRND PRINT LN F?LN ##[B]4▝INT  COPY RETURNC4 POKE  LET ACS #""#7?###P?### PRINT ▒#▘  ##"VAL ▞(##5  DACS )*K▘;( RUN AT TAN :▘/▞:▝/▝: #[E] NEW█#STR$ LN [V]# STOPLN [V]# FOR  LPRINT #[B]CQ#[L] FAST GOSUB # GOSUB # FASTAT SGN 5  RZ PRINT ##2▒DK▌[?] GOSUB #/\,,▗ GOSUB #S▀ GOSUB PIXW14 GOTO # LET K LLIST ACS #4▘ FOR ACS #COS /"LN ##ACS (SQR /▀#▛SQR  FOR [B] GOSUB # GOSUB #TAN #▛S▞[P]COS 5▘ TAN 5 COPY COPYTAN [B] GOSUB #TAN [B] GOSUB ##[P]5  ""GTAN [B] GOSUB #COS / STOP FOR ▘ █/▖ FOR ▘▘█#[C]##[C]# GOSUB #A ##** INPUT ▘#TAN #[P]5  COS #[N]COS GTAN #[P][M] GOSUB #/ PRINT Y▘/▘[J] STOP#7#7 STOPFD;[B]C▒ FOR  LPRINT  STOP FOR #7#TAN #7# FOR TAN  FOR LN T# FOR TAN STR$ )#  GOSUB #MRND▀##LN \,,< FAST##LN \,,<AT #▟K▘▖##[(]K▘9#F#,#  U5RNDACS #4,ACS #4\~~ACS #C▞Y-NOT LN [Y]#▘ LIST **2 COPYVAL LN  LPRINT ▛LN [H]\~~ FASTAT 5#RND#20#ACS #C▘#[*] GOSUB #▄NOT [*] GOSUB #▄NOT ACS #ACS  IF C LOAD TAN  LPRINT #7 RETURN#CJ RETURN#4▀NOT / NEXT LN ##/ INPUT [*]/▝Y[(]##5KRND##STR$  FASTLN [M]" LPRINT SGN #TAN LN  AND ##[P] STOP#7#7 STOP"" LPRINT  FOR  DIM # NEW3# CLEARACS ▘#C\~~ CLEAR[-]SACS  COPYLEN WUSR #▒ CLEAR▚T RETURN5UURND THEN▘LN  IF ▒ CLEARACS ▘LEN TAN  LPRINT #7#7 FASTSTR$ 5▛ ;▞▖#F#FSTR$ ( RAND  LPRINT AT SGN #; FOR  LPRINT  STOP#7#VAL  LPRINT ▛K▘ FOR LN  DIM # LPRINT **AT  DIM  FOR #TAN AT  FASTAT TAN #A TAN )U#STR$  FASTTAN VAL  LPRINT TAN  FOR LN ## FOR TAN LN ##S CLSLN ##K CLSSTR$ LN [V]▝ FASTAT G#C▖LN [X]▛#A #SGN TAN #[9]##[L]## STOP##*##\~~## DIM ##[£]##T##[£]##AT #####["]##U#####PEEK ##[B]#### LN RND#5▝ \,,6(# GOSUB #(#5 COPY COPY;LN K# FOR 5 ▘LN ## FOR 5 RETURN COPY; FAST GOSUB #(#5 RETURN COPY;LN K# FOR  LPRINT ;6>#5  6=#5  6-#5  6/#5[H] 6,#5  60#5  62#5 COPY COPY64#5  66#56RND FAST5  SGN LN D#5QRND FAST5  SGN LN D#55RND FAST5 COPY SGN LN D#5  68#53 6A#5▘ 6C#5K#6E#5RRND FASTE8#SGN LN D#5▛PILN O#6MRNDLN  CLEAR#8#LN F?###5  68#EG#6A#5▘ 6C#5##6E#LN  CLEAR#8#E0#6I#E,#6K#LN ##6M#LN ▐#) RETURN EM#LN  DIM #LN COS ###5COS  6G#5##LN O#6MRND5C 6G#)  EM#LN  INPUT # FAST)" EM#LN  LOAD # FOR  LPRINT LN ▀# FAST)Z EM#LN  INPUT # FOR  LPRINT LN :#LN COS ####[;]#5  6I#LN ##EQ#6O##=# GOSUB #(#E/#;6S#LN 7?5#INKEY$ LN O#6MRND)█▝ES#;6Q#5QRND FAST5[H] SGN LN D#5RRND FAST5  SGN LN D#5 COPY COPY64####5RRND FASTE0#SGN LN D#5QRND FASTE,#SGN LN D#5  64# GOSUB #(#ES#;6S# GOSUB #(#EQ#;6Q#EQ#LN K#6U# GOSUB #(#EQ#LN PEEK # FAST)▘ E>#; FOR  LPRINT LN  CONT #LN ACS #▐#EQ#Q<>    5#INKEY$ LN O#6MRND GOSUB #(#EQ#LN PEEK # FAST)▘ E>#; FOR  LPRINT LN  CONT #LN ACS #[P]#EQ# FASTEU#SGN LN D#LN F?) COPY COPYE4#LN NOT #LN COS ### GOSUB #(#ES#LN PEEK #6S# GOSUB #(#EQ#LN PEEK #6Q#LN G# GOSUB #/#5█ CLEAR;6/#)  E/#LN  LOAD #LN ACS #▝#5  6/#E/#6-#5[H] 6,#5  60## FAST#)4 E-#LN  LOAD #LN COS ### GOSUB #-#5 STEP  COPY;6-# GOSUB #/#E-#LN  LOAD #LN COS ###)▒ E,#;6K##▚#5  6G#5▘ 66#LN ▐# GOSUB #/#5 STEP  COPY;6/#5USR #LN O#6MRNDE/#6S#)4 ES#;6Q#LN V#### GOSUB #,#5▖ LN ## FOR E/#LN PEEK #)[O]▝; GOSUB #0#;6S#)▘ ES#;6Q#LN 9#)▘ E6#LN NOT #LN COS #▘#EI#60#EK#6,#5£RNDLN K# FAST5$RNDLN K# FOR 5 ▘LN ## FOR  LPRINT ;)U*; FAST GOSUB #,#55 LN ## FOR  LPRINT LN PEEK # GOSUB #0#; FAST5[H] SGN LN D#5  66#LN G#)4 E-#;6O# GOSUB #>#EO#LN  INPUT # FAST)  EO#LN  LOAD # FOR  LPRINT LN :#LN COS ###)+ E,#LN  INPUT #LN COS ###5▘ 66#LN ▐#)4 E/#;6/#EO#6-#5 LIST #LN O#6MRND)#▝E/#;6S#EI#60####EO#6-# GOSUB #,#5 SAVE  COPY;6K#LN ▐####5M 6G# GOSUB #>#E-#LN  DIM # FAST) COPY COPYE/#; FOR E-#LN NOT # FOR  LPRINT LN :#LN COS ###)▘ E-#;6-#)3 E0#LN  LOAD #LN COS #NOT #E-#F6-##PEEK #  E0#7)4 LN ##6I##▚#5M 6G# GOSUB #/#E-#LN NOT #LN COS ### GOSUB #0#5 COPY COPY;6I#) COPY COPYEI#LN NOT #LN ACS #1#53 6I# GOSUB #-#5 COPY COPY;6-#)3 EI#LN  LOAD #LN COS #▚##Z# GOSUB #2#5I LN PEEK #62#E2#6Q#5X 6S#5(RNDLN K# FAST5)RNDLN K# FOR 5 ▘LN ## FOR  LPRINT ; GOSUB #S#LN PEEK # FASTEQ#SGN LN D#)S ES#LN  CONT #LN ACS #[,,]#LN G####)█▝E/#;6/# GOSUB #>#E/#LN  INPUT # FAST)  E/#LN  LOAD # FOR  LPRINT LN :#LN ACS #[Y]#)▘ E>#;6/##▝#)4 E-#LN ##)  LN NOT #LN COS ###LN ## GOSUB #S#5 COPY COPY;6S#ES#68# GOSUB #Q#5 RETURN COPY;6A#5▘ 6C#5 #6E# GOSUB #8#E(#; FAST GOSUB #8#E(#;)▘ ;LN K#SGN LN D#LN  CLEAR#8# GOSUB #8#E(#; FAST5  SGN LN D#5RRND FAST GOSUB #0#5 COPY COPY;SGN LN D#LN K#5  6G## RETURN#E-#6S#)4 ES#; FAST)4 E-#LN ## FOR  LPRINT LN PEEK #6Q#LN G# GOSUB #=#5█ LN PEEK #6=#E=#6Q#5INKEY$  6S####56RND FAST5▝ SGN LN D#LN G# GOSUB #>#E-#LN  INPUT #LN COS ###)8 EM#LN  DIM #LN ACS #AT # GOSUB #=#EM#;6M#LN ##)  E2#LN  LLIST #LN COS # TO #)▘ ES#;6Q##8# GOSUB #Q#5 RETURN COPY;68#ES#6A#5 COPY COPY6C#5 UNPLOT #6E# GOSUB #8#5▘ ; GOSUB #(#; FAST GOSUB #8#E(#;LN K#SGN LN D#LN  CLEAR#8#5  6G# GOSUB #(#ES#; FASTEM#SGN LN D#LN 9##[>]#5  6O#5  68#5COS  6A#5▘ 6C#5##6E#LN  CLEAR#8#)0 LN ##LN PEEK #6W#) LLIST  EW#LN  DIM #LN COS ###)# EW#LN NOT #LN COS ###)▘ EW#LN  LOAD # FAST)\,, EW#LN  INPUT # FOR  LPRINT LN :#LN ACS #[C]#5▘ 6W#)0 EW#;6Q#5R 6S#LN ## GOSUB #O#5- LN PEEK #6Q#5S 6S#LN ##LN F?)4 EW#LN ##6W#)4 E-#LN ## FOR E-#LN PEEK #6S#)  EO#LN NOT # FAST GOSUB #S#E>#LN PEEK # GOSUB #W#LN  LOAD # FOR  LPRINT LN ▀#LN COS ###)  EW#LN  CONT #LN COS ### GOSUB #S#E(#;6S#)#▌EO#LN ## FOR 5[▒]INKEY$ ;LN O#6>#5##LN O#6MRND# FAST#5▘ 6O##RND###▖=-#4 +$# RETURN=4VAL  GOSUB #/#[B]E># GOSUB PI FAST)█▝ GOSUB # LPRINT K▘ FOR #[V]#▘STR$ #[B] GOSUB PIASN [G]#\,,7 FAST=###LN 7?E##[J]M5RND FASTLN  LLIST ▒▞▌VAL LN #▒AT ( RAND U5RNDACS # LPRINT "" FAST▘ ▌\,,6#RND2 55RNDACS #ACS [Q] LPRINT C▛E#RND/PEEK / LOAD  FAST-£<>5WRND▘Z \,,#ACS #4#7 FASTF= GOSUB #▟# GOSUB PIS\,,55RNDACS  RETURN: /DACS #▘ 2C▀▘RND#▗▗▗A #ACS =\,,# FAST#▞ 5##\,,# LPRINT :▘#[A]7[(]ZACS )K RUN <># <>7 LPRINT /[L]<>Q [E]0ACS # LPRINT  FASTC\,,2  LPRINT F FAST55RNDO[J]PEEK  CLS<= CLS▗ IF  THEN▒K SAVE 5WRND#7 RETURN[E]C█#▞$[J]ACS )3 PRINT <= CLS3K CLS LET PEEK  CLS( LET Y#<= RETURN3S LPRINT AT TAN ▘▝▖▒(4RND██11111  S▖W#U RNDRND#####   WRNDRNDRNDW ▖▖W###W   S##RNDS /4#4444  ▖S##S▖WRNDRND##### ( ((((£ ( (((((#RNDRND##### ((((((£   #####   #####   S###S   W66W44  W##W▖▖  ##RNDRNDRND   WRNDS▖# 44#444/   ####W   ###C(   ####C   #C(C#   ###W▖W  #▒(4#  FAST[J]#5 ▝( RETURNF[W]4 IF [X]4 RUN ###  REM 
   4 REM YBM▖PILN 3#YZM▖PI77777TAN LN  THEN#6>#5  6=#TAN 6(#TAN    Y3/▝YZM▙#YXLN  STEP #F6##▘""▖\,,6▟#TAN E(# GOSUB #>#U=#▘   RETURN C£[J]M=#:  FOR \,, FOR INKEY$ /▒# RETURN 4▀7/ SAVE # RETURN#4▌▘ COPY /[K] RETURN[9]4\~~M=#76(#▞ TAN  RETURN[8]45U+#CHR$ ▘ GOSUB #M+# FOR Q#7££   RETURN▘YEC▝YF# 7 FOR 7/#Y"[S]S(#><£▖U+# RETURN C▘▖7/[I].▞ 6(#, RETURN;COS  RETURN,COS  RETURN.COS  RETURN"COS  RETURN)COS ., RETURN#<COS # RETURN COS  FOR # RETURN C2 FAST# RETURN C▛ RETURN#F4 PLOT  LPRINT TAN  LPRINT Q F#. FOR 6(# FOR  RETURN 4 PAUSE / ▞ E>#\,,VAL 2 £[J]F$[Y]4▀0/ SAVE 6-# GOSUB [T]C▝AT TAN E-#: F£[J][Y]C▛Y#[Y]4 PRINT / INPUT E-####< GOSUB #-#▀VAL  GOSUB [S]AT  FOR #14 THENAT TAN LN RND#77TAN XXXX
   5 REM COPYRIGH 1983;HI-RES WORD PROCESSOR BY NISSIM ELMALEH
  10 DIM B$(90)
  11 POKE 16900,63
  12 RAND USR 16931
  15 RAND USR 16609
  20 RAND USR 16737
  25 RAND USR 19092
  27 GOTO 65
  40 RAND USR 16698
  45 STOP
  65 RAND USR 16698
  70 CLS
  75 PRINT AT 5,0;"   SELECT :",,,,,,"1 T/S PRINTER 32 CHR$ PER LINE","2 T/S PRINTER 64 CHR$ PER LINE","3 80 COLUMN PRINTER","4 EXIT FROM WORD PROCESSOR","5 RETURN TO WORD PROCESSOR"
  80 INPUT C
  85 IF C<1 OR C>5 THEN GOTO 70
  90 IF C=4 THEN STOP
  95 IF C=5 THEN GOTO 10
  97 DIM X$(1216)
 100 RAND USR 27377
 102 FAST
 105 IF C=3 THEN GOTO 200
 110 RAND USR (27393+C*4)
 115 LET C=32*C-1
 130 LET I=1
 135 LET B$=CHR$ 118
 145 LET B=USR 27423
 150 LET X$(I TO I+C)=B$(2 TO C+2)
 155 LET I=I+C+1
 160 IF I<LEN X$ THEN GOTO 135
 165 IF C=31 THEN RAND USR 17474
 170 IF C=63 THEN RAND USR 21136
 175 IF B=255 THEN GOTO 10
 180 GOTO 125
 200 CLS
 205 PRINT " ENTER LINE WIDTH"
 210 INPUT C
 213 RAND USR 2274
 215 POKE 27522,C-1
 230 LET B$=CHR$ 118
 240 LET B=USR 27423
 245 IF B=255 THEN GOTO 260
 250 LPRINT B$(2 TO B+1)
 255 GOTO 230
 260 LPRINT B$(2 TO C+1)
 265 GOTO 10

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.

People

No people associated with this content.

Scroll to Top