--- title: "Partial Pascal" id: 51747 type: "computer_media" slug: "partial-pascal" url: "http://localhost/computer_media/partial-pascal/" markdown_url: "http://localhost/computer_media/partial-pascal.md" published_at: "2023-08-13T23:14:30+00:00" modified_at: "2026-04-04T20:18:02+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2019/02/20230809-041332.jpg" excerpt: "A full Pascal compiler packed almost entirely into a single REM statement, transferring control to machine code via USR to compile and run Pascal programs." 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: "Semper Software" slug: "semper-software" taxonomy: "post_tag" url: "http://localhost/tag/semper-software/" - 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: "Pascal (programming language)" slug: "pascal-programming-language" taxonomy: "genre" url: "http://localhost/type/pascal-programming-language/" - name: "Programming" slug: "programming" taxonomy: "genre" url: "http://localhost/type/programming/" media_type: "Cassette" download_url: "https://archive.org/download/timex-sinclair-software-archive/Partial Pascal (1983)(Semper Software)(US)(TS1000)(Cassette).zip" mediadate: "1983" producer_company: - id: 11273 title: "Semper Software" type: "company" url: "http://localhost/company/semper-software/" related_products: - id: 13506 title: "Partial Pascal" type: "product" url: "http://localhost/product/partial-pascal/" media_type_tags: "Pascal (programming language), Programming" --- # Partial Pascal Partial Pascal is a Pascal-language compiler for the ZX81/TS1000, implemented almost entirely in machine code embedded within a REM statement at line 0. The BASIC portion of the program is minimal: line 10 uses `IF USR 27256 THEN REM` as the entry point that transfers control into the machine code, and line 9999 provides an alternate entry via `RAND USR 13303`. The REM block at line 0 is enormous, containing the entire compiler binary; this was a standard technique for storing machine code in ZX81 BASIC programs since REM data is preserved in memory and accessible via USR. A SAVE at line 100 preserves the program with a named filename, and `LIST 1` at line 110 displays the short human-readable portion of the listing. The compiler is described as a “one-way door” in the REMs, meaning loading it replaces the BASIC environment with the Pascal runtime. *** ## Program Analysis ### Program Structure The program consists of two distinct regions: a massive machine-code payload stored in the `REM` statement at line 0, and a tiny BASIC stub occupying lines 1–9999. The BASIC stub serves only as a loader and documentation layer; all meaningful work is performed by the machine code. | Line(s) | Purpose | | --- | --- | | 0 | Giant `REM` containing the entire machine-code compiler binary | | 1–6 | Human-readable `REM` comments describing usage | | 10 | `IF USR 27256 THEN REM HI` — primary machine-code entry point | | 11 | Empty `REM` spacer | | 100 | `SAVE "POOKAH*PASCA[L]"` — saves the program to tape | | 110 | `LIST 1` — lists the readable BASIC stub after saving | | 111 | `STOP` — halts after the save/list sequence | | 9999 | `RAND USR 13303` — alternate machine-code entry point | ### Machine Code Storage Technique Storing machine code inside a `REM` statement at line 0 was a well-established ZX81/TS1000 idiom. Because the BASIC line table begins at a fixed RAM address, a `REM` at line 0 places its data at a predictable offset from the start of the program area. The `USR` keyword returns the address of the first byte of a `REM` statement’s content, so `USR 27256` at line 10 jumps directly into the binary payload. The value 27256 is the expected RAM address of that payload, implying the program must be loaded at a specific memory location for the entry point to be valid. The secondary entry at line 9999 uses `RAND USR 13303`. The `RAND USR` idiom (calling machine code via the RANDOMIZE statement’s USR argument) is functionally identical to `IF USR` for the purpose of jumping to machine code, but discards the return value silently. Address 13303 (0x33F7) falls in ROM territory on the ZX81, suggesting this may be a warm-restart or system-call vector rather than a direct entry into the REM payload — possibly used to reinitialize the system after the compiler has run. ### Entry Point Logic Line 10 reads `IF USR 27256 THEN REM HI`. The `IF ... THEN REM` construct is used here as a no-op BASIC consequence: if the machine code returns a non-zero value the interpreter would execute `REM HI`, which does nothing. In practice, the machine code at 27256 takes over completely and never returns to BASIC, so the `THEN` clause is never reached. This is a common pattern to satisfy the syntax requirement of `IF ... THEN` while keeping the BASIC side effect harmless. ### The “One-Way Door” Note Lines 3–5 warn: `USE RUN TO ENTER PASCAL` and `NOTE*ITS A ONE WAY DOOR`. This is technically accurate: once the machine code takes control it replaces the BASIC system variables and workspace, making it impossible to return to the BASIC editor without reloading the program from tape. This is typical of compiler/runtime systems of this era that repurpose the entire memory map. ### Save and List Sequence Lines 100–111 form a simple maintenance sequence. `SAVE` at line 100 writes the whole program (including the machine-code REM) to tape. `LIST 1` at line 110 then displays only the short human-readable BASIC from line 1 onward, avoiding the unreadable binary dump of line 0. `STOP` at line 111 halts execution cleanly. This sequence would typically be reached by `GO TO 100` from the command line, not via `RUN` (which would invoke the compiler). ### Notable Techniques - **REM-as-binary-store:** The line-0 `REM` payload is the entire compiler; no `POKE` loops are needed to load machine code. - **Dual entry points:**`USR 27256` (line 10) for normal launch; `RAND USR 13303` (line 9999) as a secondary or reset entry. - **IF USR … THEN REM:** Syntactically valid no-op consequence used to invoke machine code cleanly from a BASIC line. - **Minimal BASIC stub:** Only seven active BASIC lines exist outside the REM payload, keeping the interpreter overhead negligible. ### Anomalies and Observations The address 27256 (0x6A78) is well into the upper RAM area of a 16 KB or larger machine, which is consistent with a program designed to run on an expanded ZX81/TS1000. On a stock 1 KB machine the address would be out of range. The compiler’s self-description within the REM data references “SEMPER SOFTWARE” and “POOKAH” as the transposing party, and the title “PARTIAL PASCAL COMPILER” appears embedded in the binary text, suggesting the machine code contains its own embedded string constants for error messages and UI prompts — visible in the decoded REM content as strings like `ERROR:`, `1. EDIT`, `2. COMPILE`, `3. LOAD AND EXECUTE`, and `LOSE CHANGES (Y,N)>`. ## Source Code ``` 0 REM *PASCAL*###M[9]RND6""#6A# FOR 6 DIM #LN LLIST ▒50#LN PRINT #Y▀E▖RND RAND PRINT OR ▞ #LN █### LET ▗X#:0£#7 FASTVAL ,<▘▘ CLEAR### RETURNNC6Q# RETURNPC0:5QINKEY$ RETURNSC=:▌Q5 RETURNT4[T] OR #CHR$ ▌S6## OR 77#,,AT (B FASTE▖RND OR SGN GOSUB #S: FOR E""#:#,,6A# GOSUB # FOR Z)4#Y2 AND [C]# RAND U[9]RND▗/[2]([3]#LN CONT #[,,] COPY█## P A R T I A L P A S C A L #(C) COPR. 1983 SEMPER SOFTWARE # TRANSPOSED BY POOKAH # # # # # # # # # # # # # # # # # # # # # # OR 5 ACS [A]#▗**Y85Y6#[2]#▒["]#[N]#*[P]5[Q]#3[M][R]["]INKEY$ 8[R][L]([?]LN ##LN SQR #LN ##7#TAN OR EY##?SPEEK ?#SQR NEW LET #ACS #4#Y4# CLEARACS V# PRINT FASTVAL LN F?AT LPRINT LET PRINT [T]C# FAST£VAL E[N]## RETURN#4▘7#▖((▞█#[C]#[T]4▒ FAST5 COPY COPY6 CLS# LPRINT FASTVAL LN PAUSE #AT LPRINT RETURNRNDC STOP#AT RETURN#4▀$CLEN VAL PRINT RETURN#4▝Y#LN [M]# LET RETURN#C[Z]AT LPRINT FAST,,# RETURN#C~~ RETURN#4[D]Q# LPRINT ACS NEWY LPRINT ACS THEN$4▌ACS CHR$ 7#F LET #""#7?LN TAB #LN ##ACS [-] RETURNRND4▖LN ##[*] RETURN##"" PLOT ▖#7#FTAN ▒# [Y]#~~[O][A] [U]##[8][*]▟?[B][A]#[8][A]#[Y]# [4]▙ PRINT #-[4]#[H][A] [Y]▐▘▒~~[P]0[R][4]([?] FOR ## PLOT [3]#ACS #COS ACS #"" FAST▗ACS #ATN [5]# LPRINT # RETURN[Z]"" FAST77#7#7# FAST FOR ## GOSUB # STOPAT LN [M]# LPRINT #TAN LN TAB #7 FASTLN [R]▛#F#F#F#~~▀#7# FOR [R] GOSUB PI▞ LPRINT #FSQR ACS #C THENO[*]TAN VAL ▘[=] Y CLEAR<= RETURNPEEK COPY3ACS #K5C-▞,$<= RETURN*ACS ##S PRINT ( PRINT 4▖ RETURN#K<>ZAT TAN (<=/* FAST GOSUB #COS #L LPRINT FASTLN [S]▛YILN S#STR$ GOSUB # AND #L ▞KLN [*]#S RAND ( RAND LN [*]#ACS (S LIST Y[9][S]4 POKE )J# LPRINT FAST▘ £LN ##[-]7[L]#( RUN 4#SGN LPRINT FASTSTR$ #LN ## NEW([Q]#77#7##7#7LN ##LN ##. FOR #F# FAST,, FOR #7#SGN STR$ VAL LN ##"#[L]4 SAVE #LN ###LN ###AT SGN FASTLN ##SGN GOSUB #YA47SGN 50#LN PRINT #LN ▛▝ LPRINT TAN VAL :▘LN [*]#ACS )K RAND #>< GOSUB [4]▖#>:£LN █## SCROLL▝5 VAL ,<[H]#▞▛*[D]( UNPLOT ###DDD[G]##D[G][D]##AT "#[L]4 LPRINT TAN ▒""▝Y[M]5#I[P]#[M][Q][S]▝[O]["]# IF [R][A][,][A][,,]#[M]▛[X][Q][A]▛[V]▐▘[F]▘#[9]▘[M][A][R]""▝▘[M][R][E]##[M] [U]#/[(]""▀#[N] [F][M][A]#[E]▐▘[F][,,]▗[M][K]4[?]/1/(/▞LN 7?#[O]# OR LN F?▞ /▒ OR AT LN P?LN PAUSE #### OR 5## FAST GOSUB #▝RND-/##▒ CLEARQ#-▘ABS LN P?[*]#52MLN [V]▝▘[Z] CLEAR#ACS CODE 6 CLS# GOSUB PI4 INPUT 1 IF +#4 REM £C▌$#LN [X]▛▞ YRNDSQR # RETURN#COS RETURN#C? CLEARACS ##COS RETURNRNDACS COPY**:#,,#TAN CLEARO#[*] CLEARACS ##C▝Y[G]M.#/PEEK STOP OR LPRINT AT #7# FOR ,,S# FOR ▀ GOSUB PI GOSUB PI FAST▞ OR STOPTAN FASTLN FOR # PAUSE ## LLIST ##CFXCF FOR SGN FAST[R]LN FOR # PAUSE ## REM ##J FOR SGN PRINT ####▞)[R] GOSUB #;S▝ GOSUB #ACS )*( POKE # LET ?TAN Y05Y15Y3 OR 5Y2/~~EY#F).# GOSUB [4] OR #YAT E▖RND RAND ▞(5#RNDQ COPY7( CLSVAL CLEAR##EPEEK ##7###£,,,, FOR GOSUB # FAST50#6[N]#5ABS #6""#:#,,6A# OR ▞ VAL )[B]#/,,STR$ 5 ,,,,#7#, NEW▛▗5#RND#,,#7#VAL PI# FOR 5 T6▖# FOR #F#~~▀ NEW SAVE ???JWA COPY4▌~~▀#~~▀#D;K,,77 FOR 5 GOSUB # FOR ##ABS [,]# RAND /##[E]#/ CLS/#▞ COPY/#/;/#▞ COPY/#/(/#▞ COPY/#/(/[+]5[V]#,,,, DIM R PRINT STR$ )##/[(] FOR #7#7#7#▀,,,,,,",, FOR ; STOPSTR$ FAST FOR FFF#F# STOP FOR GOSUB #C" FOR STOP"#[L]4 GOSUB LPRINT LPRINT FASTY LPRINT F#F# LPRINT /▛CHR$ ## LET S; FOR ,, FOR Y CLEAR<= RETURN3S?Y RETURN<= RETURN3S▒/ LIST RETURN#K STOP#VAL ▞ ,<▗KINKEY$ IF 4# RETURNSK3# RETURN2K+5Q#,,??ACS #C▌K▌,<#K▀,<# DIM 5 GOTO #,, DIM OR #SGN RETURN#K~~5W#,, FAST## GOSUB #TAN 5[N]#,, STOP RETURN#**/ NEXT ? RETURN#S[H] RETURN#K/5 CHR$ #K▀9CHR$ ▖LEN ▖#,,3ABS K#AT #F#/[*]CHR$ █▌/[(] PRINT NEW:#5#RND,,#7#,<# RETURN▒[3]J# LET ▗▗K▌# FOR # FOR 0 LET 4:Y LET TAB [,,]#LN FOR ####Y45Y5#[2]# FAST7##7:3 GOSUB [K]:3ACS #Y4ASN ▙# LPRINT 7# RETURN#""#FACS CHR$ TAN OR LN ##[S]4[?]LN ##/ SAVE LN ##7#VAL )##STR$ FACS #TAB RETURN#ACS #C#ACS EXP ACS #COS OTAN LN SQR # OR LN ##ACS #C PRINT LN SQR ####STR$ )##/(:▞VAL LPRINT ACS #C▀5▘ FASTSTR$ )-## LIST #/J/C/#/[N]/[9]/EXP / OR /<>/ THEN/#/▌/▛ LPRINT /" LPRINT #7Y LPRINT #/▞ UNPLOT PI##7##[L]#5[L]#/▀5[M]# OR SGN 5#RND# NEW▛▗#,,PI##7# FOR FF RAND OR AT OR FOR SGN #F# OR SGN OR ACS S3ACS S3 NEW RETURN##T RAND ▞▛5#RND#7#7#7#[U]4▝#[V]K▝##( LET FOR 6▖# OR DIM OR LN PAUSE # OR #[K]#F[Y]4▀F[Y]COS #/K5## FASTLN W#ACS EXP ▗Y#K# RETURNRNDCOS ACS # GOSUB #▝RNDTAB #▒58INKEY$ RETURN#C<#ACS [L] RETURN#Y#CATN [Y]ATN USR ##76[N]#TAN )COS #STR$ LN RAND # FOR 7) IF # FAST GOSUB # LPRINT **58INKEY$ ""VAL FAST CLEARP#ATN CONT #SGN 5#INKEY$ ▘[P]▝ GOSUB [K]AT ##Y##7[Y]4 CLS FOR TAN FOR LN ##??/▜5## FAST#LN X#ACS [:]▗#S[>] RETURN#C▖ RETURNRND4,, PRINT YRND FASTLN 9# LPRINT LET ACS #COS PRINT 77#7#7#LEN ▌[U]ATN [H]# LET ><#F#TAN # FOR DT FASTFFVAL # FASTLN "# LPRINT AT $4 NEXT LPRINT RAND /#LN ## RETURN[4]EXP ## RETURN#4>Y7#[5]#LN ## RETURN[Z]4#77#7#7#/#/<>/ GOTO /▜/V/[▒]/[X]/;/V..=# FOR PI#SGN LPRINT IF INPUT #C#,, FOR ,, FOR .F GOSUB [S]5 GOSUB [K]/# LPRINT PAUSE UNPLOT #D.#[N]4 IF C#ACS WACS 1<#[N]/ PRINT REM M# IF T#/J/##7/#/RND/Q/H/#/#/#/3/-/(/ ▀ 1 ▌ 2 ~~ 3 ?["]#1#[C]["]#.#[C]["]#█#[C]RND#[C]#RND[U]▚PEEK [6]["]RND[$] ▀#["]#ABS [I]#:#######[▒]#[?]#EXP #▞#,#####SGN #H###[H]#[R]#CHR$ #M#[Z],,- [+]ERROR=▞""▝[3][5]#▘[*][/],,[?],,#[$]▘#█[?]5"" PRINT "" PAUSE [+]"" PRINT 5[Q]"" PAUSE [R]"" POKE [R]##[,]###[,][,,]█[R][K][)]SQR UNPLOT "" UNPLOT RND[U]▚ LIST ##[K]▘[?])#-[U]#,,[(])"" RAND SQR RETURN▘##[A]#[W]▐J"" RETURN"" RETURN[,][R]SQR RETURN"" RETURN"" CLEAR[W]▐/"" RETURN▝[R]SQR CLEAR"" CLEAR"" SAVE [V]#▘[$]▝"" RETURN▝[K]"" RETURN[9] [K][A]#[A][9]#[T]▚SGN [B],,[?],,#[$]▖▐K"" IF #[R][$]▌"" CLS [K]"" CLS"" CLS[9]3[D]"" RETURN▝[R]"" CLS"" RETURN[9][,][R]"" RETURN[,]▝[S][D]5#[Q]"" POKE [R]SQR NEXT "" CLS"" NEXT 4[D],,[?],,#SQR PRINT "" PRINT [9]SQR PRINT "" PRINT [$]▖▚ PRINT SQR PAUSE ▘[?]D#"" RETURN[,][S]#"" CLEAR#[R]"" SAVE [V]# #▟H# [V]#"" RETURN"" RETURN#[R]"" RETURN"" CLEAR[S][D]▟("" RETURN"" RETURN[,][R]####[R]"" CLEAR#[S][D]"" CLEAR#[R]SQR CLEAR▘SQR COPY▘#,,[(],,->[+]"" SAVE "" CLEAR[S]▌""▝[3][*]▘[?])[:]▀"" IF +[R][$]▌"" IF [$]▌ #+[A]#[W]▐V#[$]▖▐I"" CLS [K]"" CLS"" CLS[9]3[D]"" RETURN▝[R]"" RETURN[9][,]"" CLS[R]"" RETURN[,]▝[S][D]"" CLS#5[Q]"" POKE [R]4[D]"" RETURN[,]"" RETURN[R]SQR RETURN[A]#[A][9]#[T]▚VAL [B]-/[+]"" IF ▖""▝[3][*]"" PRINT [$]▞[$],,[:]▝▘[?];"" PRINT [$]▖"" LIST [M]▐#"" CLS3[R]##[,] [T]##[8]#▙ PLOT "" CLS##"" CLS[W]##[,] [T]##[9]#▙ PLOT ##[S]▀[R]##[$]▒▐*"" RETURN#[K]"" RETURN[9]#"" CLS[S][K]#"" RETURN▝[R]#▝[S][D]▟▌▝[$]▘[$]~~▘SQR COPY SQR LIST [$],,▘[?],,#▐0"" PAUSE #[R]SQR PAUSE "" PAUSE [Y]#3SQR PAUSE ##▟~~"" PAUSE 3[V]# SQR PAUSE ▝##[H]▝[T]▐4[$]""" PRINT #▝[O][R]SQR PRINT "" PRINT [Y]#-SQR PRINT ▟▒"" PRINT -[V]# SQR PRINT "" PRINT [$]▞,,[?],,[$]""" IF #[R]SQR IF "" IF [Y]#"" PRINT "" IF [R]#[S]SQR PRINT SQR IF ▟▞"" PRINT #[S]SQR PRINT "" PRINT [Y]"" PRINT +[V][N]"" PRINT [$]▖[F][N]#[$]▛[$]~~,,[?],,[$]▛ SQR IF [$]~~▘[?]5"" RAND ####[,]▝[V]#####[,][R]##"" CLEAR[W]▚ INPUT ##[,][R]#▘[(]5[$]"-4▝[O][+]#[1][$]?#"" RAND ###[Y]▐INKEY$ #[,]▝[V]▐L▘##[9][,][A]#[W]# #[3][4][A]#[A][9]#[T]▚ POKE [B]#▝[R]##[,]#[R][8][A]#[W]##[,]#[3][4][A]#[A][9]#[T]▚ NEXT [B]#[3][/]#[,]#[R]#▙[U]#[1][$]~~,,[?]5- [+]"" [0] #"" [,][F]▐##[9]#[W]#▞[$]▘"" [1]▟#### [T]"" [2][F][M]##[9]#"" [3][>]#▙ GOSUB #[9]# [U]#[Q][K]###▝[R]## [U]▐6##[K]#[9]#"" [2][F]▐-"" [3][>]###[V]#▞[$]▘▟▞##[K]#[9]#▙ SLOW##[S]#[9][,][R]4▝[R][V]#▛[$]▘#[9] [K]#▀[R]####[S][K]"" [3][>]#▙█##)[(])"" COPY"" LIST [N]▐#N# [+]LOSE CHANGES (Y,N)>""▝[3][5]?[4][/]""▝[0] =[+]""▝[2][F]#""▝[3][>]#[=]""▝[1]#Y[T]#N[T][N]▚LEN #Y[U]#[$]~~XSQR UNPLOT ▘[?][▒]["]RND£[.][9]SQR POKE SQR LIST #""▝[1][,,] COPY[7] [T]#▝[$]▝[,,] COPYSQR SAVE "" SAVE ▖[R]SQR SAVE "" SAVE [7] [T]▚ NEXT "" SAVE [,,]#[S][7]▝[R]SQR RAND "" RAND "" SAVE [R][,,]#[S]SQR SAVE "" SAVE A[K]"" SAVE [9]#"" RAND ▝[S][;]#[$]: SQR LET [$]▀#[£]▘# < AND + # N STOP # STEP # <= █ LPRINT ▚ <> [~~] LLIST [8] "" [J] SLOW [M] # [Q] # [U] # [Y] # TAB THEN LEN TO ASN # TO #▘▘ >=▘F"" PRINT [$]▖#[$]"#[,]▝[Q][$]▒[F]#▝[$]▘[$]~~[C]"" PRINT [$]▖▐*[$]"#[,]▝[R][$]▒##▝[K]#[9] [K]▟▀▝[$]▘[$]~~[C]"" PRINT [$]▖▐M[$]""" PRINT [$]▞[$]?###[S]###[S]"" SAVE #[S]#[G][D]##[S]"" SAVE #[S]G[S][$])#"" SAVE #[S]##[D]##[R]#▘#[$]~~[C]"" PRINT [$]▖#[$]" [$]▒#[$]~~[C] SQR LIST [$]~~[C]#[$]( #[C]#[$]([C][$]"[$]>#[,,] LLIST [T]#"" RAND "" SAVE G[S][$])# SQR LIST #[$]:[C][$]"[$]>#[,,]""[T]SQR LET [C][:] [C]#[$]£[C]▘[$]£[C]#[$]£[C]▝[$]£[C]"[$]$[C]#[$]$[C][$]"#[9][,]SQR PAUSE ▝[$]£#[,]▝[V]##[9][,]SQR PAUSE [C]"" PRINT [$]▖▐.#"" PAUSE [R][9]#"" PAUSE [R]3"" PAUSE [S][D]#3[R] [K]▘SQR LIST #"" NEXT 4[D][C]"" PRINT [$]▖#3[R][,] [T][M]▐0#"" PAUSE [R]#"" PAUSE [R][9]"" PAUSE 3[S][D]#"" PAUSE [R] [K]▘SQR LIST #"" NEXT 4[D][C]"" PRINT [$]▖▐5#[,,][Z][M]##"" PAUSE [R][,]#[U]"" LIST [N]SQR LIST #"" PAUSE [R]#[K]"" NEXT "" PAUSE [R]#[K]▘[$]£[C]"" LET ▗ RETURN#▝[7][$]?[J]#[1]#[1]""▝[1]/[?]#T#▟#COS # AND # LLIST # GOTO # SAVE #▖#(#;#B#M#PI#####[*]#""#ASN #######<#4#C###K###W#[?]#[7]# UNPLOT #G#########▄#[£]#INT #▞# IF ####### OR # NEXT #[,,]#LEN ##### DIM ,, PARTIAL PASCAL COMPILER/""▝[3][5][/] POOKAH 1983 SEMPER SOFTWAR1""▝[3][5]E▘[5][/]▘[?],,ERROR:▞""▝[3][5]#▀[*]#█[?],,###[$]▝)[?]) #[R][.]▛[M]#,,[(]) #[R][.]([M] [U]#,,[(]) #[R][.]▒[M] [U]#,,[(]) #[R][.]([M] [U]#,,[(],,"" STOP#[S]SQR STOP,,[?],,#"" [3][4]#[$]▒ SQR PLOT ,,[?],,##[E][$],,#[$],,,,[?],,"" SCROLL#[R]SQR SCROLL"" SCROLL3[V]9[$]▀,,[?],,"" [3][/]#[$],,#[$]~~▀[$]▒)[?],,#[,,]█[R][$],,,,[?],,"" STOPSQR FAST#[~~] [Y]#[,,] COPY[V][N]#"[$]$#[$]~~▟,##[Y]##[V][N]#,,# [Y][R][$]$#[$],,▟▞#[,,]#[M][$],,▘SQR PLOT #SQR FOR ▘[$]",,[?],,#AT ▝[9][T]D[$]▀RNDAT ▝▝[S][$]£#[$]~~#AT ▝[,,] COPY[R][X]▝[R]#AT ▝)[R][X]#[Q][R][$]▒;[?],,INKEY$ #[$]£#[$]~~)[?],,""▘[,]▐#"" SAVE "" CLEAR[V]▐F"" CLEAR"" COPY[W]/[$]▀▘SQR LET "" LET "" SAVE [,][X]# ""▝[3][4]"" LET [9]SQR LET ▙ GOSUB "" SAVE [9]SQR SAVE "" CLEAR"" CLEAR[,][R]SQR CLEAR"" SAVE [,]SQR LET "" SAVE "" CLEAR[T]# SQR LET ""▝[3][/]▟▞"" LET ""▝[3][4]"" SAVE [9]SQR SAVE "" SAVE "" CLEAR[T]SQR RUN ▟5""▘[2]#""▘[3][>]SQR LET ""▝[3][/]▟£""▘[3][>]SQR LET "" LET ""▝[3][4]""▘[2]SQR RUN ▘[?],,"" RUN £[$]▀▘[?]~~"" STEP #[T]##SQR TO >[?]D"" LET [T]#[$])▙ RUN "" LET #[$])#A[W]#Z[X][M]▗▘COS #0[S]SQR LPRINT "" LPRINT SQR STEP "" LET 0[W]"" LET Z[X][M]▐;"" LET 0[S]#"" LPRINT 9[Q]#[R]SQR LPRINT "" STEP B[Q]#[R]SQR STEP [$])▙>= SQR TO "" LPRINT [£] UNPLOT 8 S AND ▛#[K] :[W][M] +# LIST 0RG 7#Y E▘ RAND L INPUT # S## Z#Y # CLS# ##ASN #LEN S #$[,] # LLIST # #▝[D] #▝[L] #▄# ##F ▐#[I] [£]#[=] [<]▀▗ [,]▀[<] [5][+] RUN [C]# PLOT [J]:# [Q] UNPLOT # [X]SQR [B] CODE [*] TO ACS SIN ? ABS ▖# OR 7▚ STEP #<> SCROLL[B]# INPUT [9]A PRINT 48 CLS["]Y SAVE /[$]=[C]["]]▞[$]=[C]["]0#9[$]=[C]["] STEP [W]*[$]=[C]["]#,.[$]=[C]["]▝<$[$]=[C]["] IF [X]~~[$]=[C]["]H;;[$]=[C]["]#[W]1[$]=[C]["]▘ GOTO "[$]=[C]["]# LLIST 3[$]=[C]["] LET -,[$]=[C]["]##<[$]=[C]["]:["],,[$]=[C]["]▝LN :[$]=[C]["]▝STR$ ?[$]=[C]["][3]H▘[$]=[C]["]▚#6[$]=[C]["]["]#7[$]=[C]["][£]#8[$]=[C]["]▀[R]([$]=[C]["]▀#)[$]=[C]["]<>+▝[$]=[C]["]##5[$]=[C]["]CODE #=[$]=[C]["]<>5£[$]=[C]["]##▒[$]=[C]["][C][.]▀[$]=[C]["][A] PRINT ▛[$]=[C]["]▖▄>[$]=[C]["]$[,]-[$]=[C]["]▙ LOAD 2[$]=[C]["][T]SQR ▌[$]=[C]["]##▖[$]=[C]["]##+[$]=[C]▄▘SQR #0[W]#9[X][M]▐##0[S]SQR DIM "" LET 0[W]"" LET 9[X][M]▐/"" DIM ["]£ATN [V]=[$]▀"" DIM ~~[Q]"" LET [R]0[S]SQR DIM [$])▙<>"" LET A[W]"" LET Z[X][M]+[$]▀"" DIM [Y]"" DIM ["]█ [U]"" TO K[U][N][M]=[$]▀ SQR POKE ASQR TO ▄▘##[£]▘R : ( # ; # : # < # > # = ▙ " [H] + [L] - [P] * [T] ) [X] , AT . <= $▘ASSQR TO ▘#"" LET .[T]#[$])USQR TO ▟J"" LET *[T]▐D[$])"" LET #[$])#*[T]"" LET )[T][M]▚ LET [$])"" LET [T]#[$])▙ RUN "" LET ([T]# #[$])▟▝[$]<#▚""[C]OSQR TO [C]NSQR TO "" LET =[T]#[$])PSQR TO [C]ISQR TO "" LET >[T]#[$])ESQR TO ▟~~"" LET =[T]#[$])HSQR TO [C]FSQR TO "" LET =[T]#[$])GSQR TO [C]DSQR TO [C]"" LET "[T]#[$])"" LET "[U]-[$]▀[$]>"" LET SQR DIM [$])"" LET "[T]#[$])BSQR TO ▟▌[$]>CSQR TO ▘SQR POKE [C]JSQR TO [C]KSQR TO [C]LSQR TO [C]TSQR TO [C]MSQR TO [C]RSQR TO "" LET )[T]#[$])VSQR TO ▟~~"" LET .[T]#[$])QSQR TO [C]"" LET I[T]▐,"" RUN [F]#[$])▙ SAVE [$])"" LET [U]["]▀K[$]▀""▘[0][$]<▟E SQR DIM ▘#"" LET 0[W]"" LET F[X][M]# #"" DIM ([Q]"" LET [R]0[S]SQR DIM [$])▙ FAST#*[$]▀ SQR POKE ASQR TO [C]"""▝[3][-]#[4]"[-]=[-]#[-],[$]▝[C]▘[?],,"" TO #[U]#E#[R][$]▝,,[?],,#[$]+[$]<,,[?],,[$]< [$]+▘[?]~~"" STEP TAB ▝[U]▘[$]▀AT RETURN [R]#[L]AT RETURN▝[R]#[L],[?];"" COPY▖[R]"" LPRINT [L]"" COPY▞[R]"" STEP [L]"" RETURN▒[R]##▒[S]##▖[R][.]"" LPRINT [T]▚ NEXT #▞[R][.]"" STEP [T]▚ REM ###"" COPY[T]▗▘"""" LPRINT [£]▘R 4 9C ▒ RETURNSQR (["]▛ /G SCROLL 6~~[V] E[6]ABS N[O]# X[T]TAN #RH ### ##[:] # POKE DIM ### #▙# ▟▜# ["]PI[W] [+] TO NEXT [3] FAST" [D][)] FOR [N]## [X][8][+] SIN ASN # SGN #[N] <=/) FASTSGN [-] LOAD ▘[?] RAND ##▘▘▐ TO ▘"[~~]#▘+LEN #▘3["]#▘D[$]TAN ▘N["]?#▝ [$];[C]["] SLOWLEN ▝▘[$];[C]["]USR [D]~~RND[$];[C]["] SAVE "▝["]# COPY[$];[C]["]*[,,]▀▘[$];[C]["]#Q"[,,] COPY[$];[C]["] RAND TO 7["]# COPY[$];[C]["][/]$< [$];[C]["]XN▘["]H▘[$];[C]["]# FASTINKEY$ ["],▘[$];[C]["]X SLOWINKEY$ ["]2▘[$];[C]["][M]#,,)▒[E][$];[C]["]▟2▘["]E▝[$];[C]["][(][4]▘["]▘▘[$];[C]["][>]TAB ▘["]▘▘[$];[C]["]# RETURN,,["]▘▘[$];[C]["][D][L]▘["]▒▝[$];[C]["]##▘["]8▘[$];[C]["][6]▛▘["]7▘[$];[C]["]£6▘["]9▘[$];[C]["][Q][1]▘["]I▌[$];[C]["]#1 ["]█ [$];[C]["]#[J] ["]▟▘[$];[C]["]**[)] ["]▙ [$];[C]["]PEEK ▜ ["]▄ [$];[C]["]▘[7] ["]+▝[$];[C]["][5] LPRINT ▘[$];[C]["]#; ["]D▀[$];[C]["] THENSIN RND["]6▘[$];[C]["]5# ["]▖▀[$];[C]["]##RND["]0▘[$];[C]["]PVAL RND["]1▘[$];[C]▘[$]▝[C]▘[(]>"" TO [T]▐/[$]/##[$]▖▝[U],,[$]▀▝#[R][.]SQR DIM #[$]▞SQR POKE ▟£"" TO A[U]"" TO B[U][M],,[$]▀▝[?])"" TO K[T]##"" TO J[T][N]▐>[$]<[$]."" POKE ;[$]▀##"" DIM [G]SQR DIM ▟▝[$].[$]<▘[?];"" REM [8]###COS THEN[X]##[8]#▙ PRINT ##,,[(],,,,AT ▝[S][$]"AT ▝▒[T]AT ▝~~[T][N]##[W][M]#▘[X][M]#"" REM [8][T][M]▐<[,,]##▞[R]▛[M]▝[Q][R]AT ▝~~[T][R][$],,▟8AT ▝▀[E]#[~~]▒[Y]#▛[V][N]▌[E][R]#[R]SGN ▝AT ▝[$]$AT ▝#[E]###[E][$],,#[$],,;[?],,#"" COPY[S]RND[X]▐.,,#[S][$]",▝[S]K,[S]#"[T][Q][R]#"" COPY[S]▒[O][R][$]$▟~~##[$]0▝#[R][.][$]1)[?],,#"" STOP[S][~~]▝[W]# [U][M]##[8][$]$#"" STOP[S][8][$],,▟"#[$]$#"" STOP[S]▝[S][$]~~)[?],,▀#[$]3,,[?],,▛#[$]3#[$]",,[?],,Z"" FAST[$]£"" FASTSQR STOP#[$]"▘[?],,"" PLOT #[$]6#[$]:▟▀#[$]$)[?],,#[$]$#[$]",,[?])▘SQR PAUSE #"" TO S[T]#[N]▐ES[$]-▘#"" TO [T]▐3[$]/[$]▖▖[T]▐*[$]/#[$]<"" TO T[T]##$[$]▀ #[$]<▟▀M[$]-# [T]"[$]▀#SQR RAND )[(])"" RETURN▒[R]SQR RETURN"" RETURN▝[7][S]▒[R]#RND#[R][7] [T]5[$]▀#[7]#▖"" RETURN[R]AT ▀[L]▞"" RETURN[R]AT ▝[L] "" RETURN[R]#[L]▝"" RETURN[R]#[L]5[?])"" LPRINT "" STEP #▀[E]AT ▝[R]#[$]A"" REM [8]COS THEN▒[R]##"" RETURN[Y]▐S▖#[R][.]"" LPRINT [T]▐D▞#[R][.]"" STEP [T]▐4AT ▝ [U]#[$]▖ [U][N]#[$]▛[F][N]▝[$]▀"" LLIST [8]SQR LLIST #SQR LIST "" RETURN▒[S]SQR RETURN#▒[R]#▙TAB ;[?]~~U[$]-[$]DV[$]-▝[?]6▝#[R][.]# #"" TO S[T]▐L #[R][.]#[E]#[$]<#▐< [$]-[$]/[$]▖▖[U]?[$]▀▒[$]/[$]2▟▝[$]D##[E]##[9]#"" TO M[U]▚ OR T[$]-#[,,] COPY[M]#[U]▀[$]▀##[E]##"" COPY[S]RND[V]#$[$]$#[$],,▘SQR PAUSE ▟:#▘[U]##Z[V]#:[$]$#[$]$#[G][$]"~~[?]~~"" PAUSE #▒"" RAND [$]23[$]$#"" PAUSE [S][$]"#[$]$ SQR PAUSE >[?]7 #"" TO 8[T]##[F]#[$]<▙ POKE "" TO [£] # ▖ # A # B # S #[$]/##[$]▞#[$]<#[$]▖[£] E ▖ ▝ ▛ ▌ £ ▞ < ▘ A▝#[R][.][$]:[C]▒#[$]2[C][$]E,,#[$]2[C]#[$]F#"" COPY[S]▒▒[Q][T]#Q[$]$▘[$]"[C]▖[$]▝[C]#SQR POKE [C]"" DIM [$]:[$]<[C][$]<[$]DT[$]-[C]▖[$]▝[C]##F"" FOR [F][$]7▀[?]<[$]H"" TO [£] ? ▖ / ▀ L ▞ . ,, 6 £M#[C]Q#[C]O#[C]P#[C] #[C]# [U]#[$]<[$]H#[$]8# [T]▚COS ▀[?]<"" TO K[T]##"" TO J[T][N]#[$]<[$]I##G"" FOR [G][$]7"" TO [£] £ ▀ J ▀ K ▞ ) ,,R#[C]S#[C]N#[C] #[C]# [U]▐RND[$]<[$]I"" PLOT ▐L"" FOR ▘[T]▐F#R[T]#[$]69[$]$##▟2#S[T]#[$]68[$]$##▟)"" FOR [T]##R[T]#S[T][N]#[$]6### [V]##[$]8# [T]▚[+]▀[?]>[$]J"" TO D[W]"" TO I[X][M]#TD[S]"" TO [R]#[$]<[$]J#[$]8▝[?]E"" TO ▞[T]###[$]<"" TO [£]▝[O] £ ▘# ▞▘# :▘[-] ▖▘ASN ▒▘ STEP 9▝# 3▝[J] O▝[J] 1▝[J] ;▝[J] 2▝[J] ▝▝[K][$]/##"" COPY[S]▒[O]#[$]<#[£]▘O ▖ ▞ ▛ [,] ▖ [,] ▌ STOP#▛[T]##[F]"" IF [$]9▐▗"" TO C[T]▐#[$]>"" DIM [$]:▘#"" LET ##"[U]#[$])"" SCROLL3▝[S][W]##[$]:5##[S][$]G ##[$]:#[9]##"[T]#[$]>[$])"" LET ##"[U]#[$]>[$])#"[T]"" LET "[U][M]▚ACS #[$]:5##[S][$]G[$]<▟2[$]D"" POKE #4#[$]G▟<"" TO N[T]#[$]<[$]D*#[$]G▟▖-#[$]G"" TO M[T]###[$]<#[F]▚#T[$]-##/ [$]G[C]#▌[T]##[F]"" CLS[$]9▐Q [$]-[$]/##[$]▖##▌[U]##▞[U])[$]▀[$]E<#[$]▞[S]▘[$]G~~▌[S]#[R]#[$]2"" TO M[T]###[$]<#[F]▚LN T[$]-##= [$]G[C]#[$]▖[£] Q ▖ ▖ ▌ : ▞ , ▘ M#[$]F[C]P[$]-[$]D~~#[$]2[C][$]EP[$]-[$]D"#[$]2[C]#[$]0[9]##COS THEN#[U]▒[$]▀P[$]-[$]D~~##[$]1[C]▛[$]▝[C][C][C][$]K[C][$]<[$]D▛[$]- [$]5"" STOP#[$]K"" TO ;[U]##"" STOP▘[$]?▟1 [$]4"" STOP#[$]<[$]K#"" STOP [$]?##"" STOP#[,,] COPY[R][X][S]▘[$]?[C][$]<"" STOP#[$]D$[$]- [$]5"" STOP#[$]K#"" STOP#[,,] UNPLOT [R][X][R]"" STOP#:[R]"" STOP#["]▘ [R][X][R][X][R][$]4#"" STOP▘[$]?[C]"" STOP#[$]<[$]K"" TO O[U]▚ PLOT 2[$]-[$]D#[$]5[C][$]<[$]D([$]+£[$]$"" STOP###[$]<[$],#"" STOP#[S][$](#▝[R]"" DIM [$](#▖[R]#"" TO M[U]▚ SLOWN[$]-[$]KC[$]$"" TO O[U]▚CHR$ #"" STOP#[S]"" TO ▝[U][S][$]("" TO ▝[T]#[$]<[$]KC[$]$1[$]-###[S]#[E][$](#"" STOP#[S]▖[S][$](#[$]"[C][$]*[$]/##[$]▖▌[U]([$]▀[$][U]###~~[$]+[$]<~~#[$]2[$]D$[$]-A[$]$▒#[$]2W#[R][$]$ [$]5"" STOP#[$]KA[$]$▝[$]"▒#[$]2A[$]$9#[S][$]$~~#[$]2T[$]8#[$]5#"" STOP▘[$]?B[$]$#[$]"[C][C]▞[$]▝[C]"" TO O[U]#[F][N]▗ CLEAR▌##1[$]-▝[?], SQR NEXT "" TO S[T]▐7 SQR NEW#SQR SLOW[$]*"" SLOW[9]SQR SLOW▝"" SLOW [$]B[$]<"" TO M[U]▚ FOR T[$]- SQR POKE ▟#▘#"" TO [T]▐B[$]/##[$]▖▀[T]▐1 #[R][.]4[M][G]SQR NEW▝#[R][.]SQR SLOW#[$]▞SQR POKE #[$]▌SQR NEXT #[$]<#▐*[$],"" DIM SQR NEWQ[$]-[$],"" DIM SQR SLOW"" NEW"" SLOW[V]~~[$]▀▝[?]~~# [U]#▒#[$]2#[$]$#[$]">[?];"" TO *[T]▐D[$]*"" LPRINT SQR GOSUB "" STEP SQR GOTO [$][$]▀#[$]▞▐-"" INPUT # #[R]▒▌[R][L]#▒[R]##"" RETURN[V]▚ LOAD ▟N#[$]▌▐I"" LIST ~~[V]3[$]▀"" INPUT # #[R]▖[L] #[R] #[R][.]4#"" RETURN[S]▒[O]"" LIST [R][E][R][L]#"" RETURN[R]##"" RETURN[V]▚>="" TO O[U]▚▟T[$]-"" LIST [,,] COPY[V]7[$]▀ #▝"" RETURN[R]#▒[Q][S]#[L]#[9]##"" LIST [W]▚ GOSUB ▝#[R]▝#[R][.]"" LIST [R][L]"" PRINT ▐9N[$]- [$]-[$]/##[$]▖▀[U]>[$]▀ #[R] #[R][.]▒#[$]▞[Q][R][L]#[$]▌<[$]▀O[$]-"" TO ,[T]▐5#[$]▛"" LIST [U][N]"" PRINT [N]0[$]▀"" LLIST [9]SQR LLIST #[R] #[R][.]([R][L][$]<▟G#"" PRINT [S]▝#[R][.]#[E][$]C #[R] #[R][.]#[8][M][L]▝#[R][.]▒[E]#[E]"" REM [R][8][$]:?#[$]▖[R][$]$"" REM [8]SQR REM "" REM COS THENSQR RETURNO[$]-▄ RETURN#▞[$]+#[9]"" REM [S]"" LLIST [S]▝[Q]"" STOP"" CONT "" REM [S]"" LLIST [S]▝[Q][S][$]("" REM [8]#▀[E]#[~~] LPRINT [W][Q][S][$],,#[~~] LPRINT [Y]##[$]~~ SQR SCROLL# [T]#"" IF 1[$]M"" CLS0[$]M"" REM [8]COS THEN▒[R]##"" RETURN[X]▐A#[$]▖ [T]#[$]▛[M].[$]▀#[$]▖▞[T]## #[R][.]#[E][S][$]:~~#[$]2#▒[R]#▙USR [$]K(*▝""▝[3][5]"" STOP"" CONT "" REM [S]"" LLIST [S]▝[Q][S][-]*)▝[5][/]"" SCROLL [U]#"" SCROLL""▝[3][-]A[$]▝)[?] COPYSTR$ ""▝[1]#SQR THEN[$]▘[:]▀Z[7]▝[R]##▝[T]/[$]▀#▝[S][;]##~~[R]#[S][7] [T]5[$]▀#[9]SQR SAVE ##["]#£["]RND#▞ [$]A["]#TAB ["]▜ INPUT : [$]A["]#E["]RND#▞ [$]A["]E[G]["]VAL : [$]A["]O GOTO ["]ACS # [$]A["]# LIST ["]#** [$]A["]#[(]["]SGN [6] [$]A["][;][;]["][E]#▘["]A▘[$]A #** THEN[,,]COS SQR SCROLL SQR PLOT ▘SQR REM ▘SQR CONT SQR STOP SQR LET [$]<=[$]- [$]- # # #S[$]+[$]< [$]-▖ [$]B"" LPRINT ["]) LET [T]"" STEP ["]ABS #[T][M]###"" LPRINT ["]##[T]"" STEP ["] LET RAND [T][M]####[9]##,[V]8[$]▀"" TO M[U]▚SIN T[$]- SQR LLIST ▝#[R]"" LLIST ▒[Q][S]"" LLIST [L]"" LLIST [9]SQR LLIST "" LLIST #[T]▚ REM O[$]- SQR LLIST #[1]# [$]CR[$]+"" LLIST [U]C[$]▀▒ "" LLIST [$]11[$]$"" LLIST [9]SQR LLIST "" LLIST #[T]▚ GOTO "" REM ▘[U]B[$]▀#▀[E][$]:?[$]$PI#[$]£"" CONT [$]~~#[1]#[1]""▝[1]/[?]#[Z]#[▒]#[,]#[8],,*ERROR*▛""▝[3][5]#[-]#█[?];"" [3][>]###▘[(];"" [2]#▖[$]▘[$]▝#"" [2]#▌[$]▘#▒[E][$]▝[R]#▘[(]S""▝[1]#[0][,,] COPY[7][;]####[2][F]#▘[$]▘[$]▝#[$]▝##INKEY$ [U]#▝[$]▘[$]▀#[R]##[£] ▐ ▀ Z ▀ INKEY$ = RND ▟##[C]##▝[R]##[S][D]#[$]▀[J]#▝[R]#[C]##[;][$]▀[R][J]#[;][,,] COPY[X]▐##[;] [Y]▐,MEM2(.WORD.)<0:""▝[3][5][)] [U]▚ CLS▟Y#[;])[X]#[8][,][,,]▗[T][M]▐3#[8]##[;][R][K]#[;] [T]##[8][,,][B][K]#▝[S]##▝[R]###[S][D]▟>#[8]##[8][,][R][K]#[8]##[9]###[S][D][C]▀[$]▘[C]#[2][F]##[$]▝[K]#[9]#▙ NEXT [$]▝#[$]▝##PI[T]▚#[$]▀#[$]▀# ##[8][A]#[W]▐,#▝[Q]#[R]#▝[Q]#[R][;]#▝[Q][R]#[R][J][A]#[A][9]#[T]▚ NEW[B]["]RND[$] ###[I]##[1]#[1]""▝[1]/[?]#USR ▝ ▝[9] [N]) #STR$ ▘ RAND DLN CHR$ # FOR E RAND # GOSUB #▘▖ LPRINT "")#RND▘ RAND D GOSUB [K]57INKEY$ 6£RND#[F]#5 VAL ,<[H]#▞▛*[D]( UNPLOT ###DDD[G]##D[G][D]##AT "#[L]4 LPRINT TAN RETURN#LN SCROLL▝57INKEY$ 6£RND#[F]# 1 REM ***POOKAH PASCAL*** 2 REM 3 REM USE RUN TO ENTER PASCAL 4 REM 5 REM NOTE*ITS A ONE WAY DOOR 6 REM 10 IF USR 27256 THEN REM HI 11 REM 100 SAVE "POOKAH*PASCA[L]" 110 LIST 1 111 STOP 9999 RAND USR 13303 ```