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:
- Lines 10–25: Initialize — dimension
B$, POKE a value into address 16900, then invoke several machine code setup routines viaRAND USR. - Line 27: Jump to the main menu at line 65.
- 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. - Line 97: Dimension the text buffer
X$(1216). - Lines 100–180: Handle the T/S printer paths (32 or 64 characters per line).
- 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.
| Address | Role inferred from context |
|---|---|
16609 | Early initialization routine |
16698 | Called both at line 40 (unreachable) and line 65; likely display/mode setup |
16737 | Secondary initialization |
16900 | Target of POKE 16900,63; likely a width or mode parameter byte |
19092 | Further setup |
2274 | Called in 80-column path at line 213; probably printer configuration |
27377 | Main word-processor machine code entry point |
27393+C*4 | Dispatch into printer-mode-specific routine (C=1 → 27397, C=2 → 27401) |
27423 | The input/capture loop; returns 255 as an end-of-input sentinel |
17474 | 32-column print finalizer |
21136 | 64-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-1to convert the menu choice (1 or 2) directly into a zero-based column width (31 or 63), reusingCas a dual-purpose variable. - Substring slicing: Line 150 copies
B$(2 TO C+2)into the appropriate slice ofX$, usingB$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
USRto signal end of input; lines 175 and 245 testIF B=255to exit the capture loop. - CHR$ 118 initialization:
LET B$=CHR$ 118at lines 135 and 230 pre-fillsB$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 125at 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 referencesB$(2 TO C+2)withCpotentially equal to 63, meaningB$(2 TO 65)— well within the 90-byte dimension. The machine code at 27423 presumably writes intoB$directly via its address.
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.