--- title: "Hi-Res Word Processor" id: 51896 type: "computer_media" slug: "hi-res-word-processor" url: "http://localhost/computer_media/hi-res-word-processor/" markdown_url: "http://localhost/computer_media/hi-res-word-processor.md" published_at: "2023-08-16T01:42:21+00:00" modified_at: "2026-04-03T00:35:47+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2019/02/20230809-041332.jpg" excerpt: "A machine-code-backed word processor offering 32-column, 64-column, and 80-column printer output modes from a compact BASIC dispatch shell." category: - name: "Archived Media" slug: "archived-media" taxonomy: "category" url: "http://localhost/category/archived-media/" post_tag: - name: "Downloadable" slug: "downloadable" taxonomy: "post_tag" url: "http://localhost/tag/downloadable/" - name: "Nissim Elmaleh" slug: "nissim-elmaleh" taxonomy: "post_tag" url: "http://localhost/tag/nissim-elmaleh/" - name: "TS 1000" slug: "ts1000" taxonomy: "post_tag" url: "http://localhost/tag/ts1000/" model: - name: "Timex/Sinclair 1000" slug: "ts-1000" taxonomy: "model" url: "http://localhost/model/ts-1000/" genre: - name: "Word Processor" slug: "word-processor" taxonomy: "genre" url: "http://localhost/type/word-processor/" media_type: "Cassette" download_url: "https://archive.org/download/timex-sinclair-software-archive/Hi-Res Word Processor (1983)(Nissim Elmalehes)(US)(TS1000)(Cassette).zip" mediadate: "1983" producer_company: - id: 11140 title: "Nissim Elmaleh" type: "company" url: "http://localhost/company/nissim-elmaleh/" related_products: - id: 12832 title: "Hi-Res Word Processor" type: "product" url: "http://localhost/product/hi-res-word-processor/" media_type_tags: "Word Processor" --- 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. | 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-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. ## 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]▀#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 \,,#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##\,,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