<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://bitchin100.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=97.89.182.164</id>
	<title>Bitchin100 DocGarden - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://bitchin100.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=97.89.182.164"/>
	<link rel="alternate" type="text/html" href="https://bitchin100.com/wiki/index.php?title=Special:Contributions/97.89.182.164"/>
	<updated>2026-04-29T22:02:34Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://bitchin100.com/wiki/index.php?title=Format_Your_Words_With_This_TEXT_Aid&amp;diff=893</id>
		<title>Format Your Words With This TEXT Aid</title>
		<link rel="alternate" type="text/html" href="https://bitchin100.com/wiki/index.php?title=Format_Your_Words_With_This_TEXT_Aid&amp;diff=893"/>
		<updated>2009-01-25T19:39:39Z</updated>

		<summary type="html">&lt;p&gt;97.89.182.164: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With a little Basic help, your 100 can be a hot-shot word processor.&lt;br /&gt;
By RICHARD RAMELLA&lt;br /&gt;
Portable 100/September 1983&lt;br /&gt;
Page 27-28&lt;br /&gt;
____&lt;br /&gt;
Though its text-handling capabilities are diverse, the Model 100&#039;s built-in, word-processing program lacks features needed by many wordsmiths.  So I wrote TEXTHELPER, a fairly short basic program that formats printed documents in useful ways.&lt;br /&gt;
&lt;br /&gt;
With this program, you may set side margins from 0 to 20, single-,  double- or triple-space, and print page numbers, headers, and footers. The text is automatically printed in a spaced format so it continues  from page to page with uniform margins at top and bottom. It is for use with standard 8 l/z-by-11 -inch paper.&lt;br /&gt;
&lt;br /&gt;
And just to show you my heart&#039;s in the right place, I&#039;ve thrown in a little routine that counts the words in a document.&lt;br /&gt;
&lt;br /&gt;
FASTER THAN HAND. The format printing process occurs quite slowly by computer standards but still is perhaps 10 times faster than the human hand and unerring in following your instructions. Sophisticated and lightning quick word processing is on the horizon for the Model 100, but those programs you won&#039;t get for the cost of a few magazine pages.&lt;br /&gt;
&lt;br /&gt;
The experts may want to skip ahead here, because I&#039;m starting at the beginning for the many Model 100 owners just getting acquainted with  their machine. &lt;br /&gt;
&lt;br /&gt;
The Model 100 has several kinds of files. The two we&#039;ll deal with are text documents and Basic programs. The program TEXTHELPER is a Basic program. It calls up material in a text file and sends it to the line printer, which prints it on paper in the format you have determined.&lt;br /&gt;
&lt;br /&gt;
What you need to know about creating a text file is in chapter eight (pages 43-60) of the manual that came with the computer. Once you are able to create a text file, write words in it, and save the file, you can use this program.&lt;br /&gt;
&lt;br /&gt;
MENU MODE, In the menu mode, the text file you create will be followed by  the file name extension .DO. Using TEXTHELPER, you may call up only .DO files for formatting.&lt;br /&gt;
&lt;br /&gt;
Before you Run TEXTHELPER, there, must be a text file in the system, and you must know the exact name of it. This isn&#039;t difficult because you named the file when you created it.&lt;br /&gt;
&lt;br /&gt;
A note of caution is warranted here. When you create the text file, make sure you don&#039;t use the tab key on your 100. And although your typing teacher may have taught you to leave two spaces between sentences, don&#039;t do it here. The results will be bizarre.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s say you want to format a file listed in the menu as MOM.DO. (It&#039;s a long overdue letter to your poor old gray-haired mother.)&lt;br /&gt;
&lt;br /&gt;
This program is so user-friendly many experienced computer jockeys are going co be kicking out program lines left and right. But it protects the novice computer user from mistakes in numerous ways.&lt;br /&gt;
&lt;br /&gt;
As the program begins, a two-item menu is shown. Type 1 and tap enter to try the word counter. Or type 2 and tap enter to try the document formatter. Tap anything else and you must try again until you get one of the two acceptable answers.&lt;br /&gt;
&lt;br /&gt;
WORD COUNTER. If you try the word-counter routine, it asks for the name of the file to be accessed. The file name is MOM.DO, but you just type in the word MOM in any mix of upper and lower case, and the machine understands. The program displays WORDS: followed by a number that grows as each word is counted. When it&#039;s through counting, you know it because you&#039;re told Tap &amp;quot;M&amp;quot; to return to &amp;quot;MENU.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The document formatting pan of the program is more complex in its workings but not complex in use.&lt;br /&gt;
&lt;br /&gt;
DECISIONS, DECISIONS. To format, you must make several decisions. I&#039;ll list them in turn:&lt;br /&gt;
• You&#039;re asked what margin from 0 to 20 you wish. A choice less than zero or more than 20 is unacceptable. Paper sized at 8 1/2-by-ll inches will hold about 85 characters on a line. Note that 9 1/2-by-11-inch computer paper is actually 8 1/2 inches wide after you tear off the tractor-feed margins. If your line printer allows changing the width of letters, I advise you to set it at 10 characters per inch so 85 characters fit snugly between one edge and the other. Otherwise, this program may give you unintended results.&lt;br /&gt;
&lt;br /&gt;
The number you choose for a left margin is exact but on the right it is approximate. Both are about the same, but the right margin allows a bit of grace. This is because the program doesn&#039;t go to the next line until it encounters a line feed or blank space occurring after passing the line length determined by the margins it passed. This prevents line feeds in mid-word.&lt;br /&gt;
&lt;br /&gt;
• That brings us to the next choice. If you select a right margin of 10 and a left margin of 10, then you&#039;ll have a line with about 65 characters (85 minus 20) in it. The program tells you this and asks: &amp;quot;Is this okay?&amp;quot; If it isn&#039;t, type N for no and tap Enter.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll get another try at setting margins and may keep trying until satis­fied. Answering Y for yes sends the program onward.&lt;br /&gt;
• A menu for line spacing is shown. Your choices are 1 for single space. 2 for double space, and 3 for triple space. If you are printing a single-spaced document on a single page, it&#039;s better to use the print function included with the Model 100&#039;s text-processing program. Single-spaced text gives you 50 lines a page, double-spaced 25 lines, and triple-spaced 16 lines.&lt;br /&gt;
&lt;br /&gt;
• Now choose your header. A header is just word-processing jargon for a title. You don&#039;t need a header on a letter to mom, but in other cases it&#039;s very useful: War and Peace — Fifth Draft... Annual Re­port... and the like. You are given a limit here for the number of characters you may put in the header. It&#039;s based on the number of characters in the formatted line. If your header is too long, you get a chance to write a shorter one. In fact, it&#039;s mandatory.&lt;br /&gt;
&lt;br /&gt;
The header also includes three other interesting things: the date, the time, and the page number. These are provided automatically. I&#039;m afraid that by including the exact time on each page, I&#039;ve re­vealed exactly how slow this pro­gram can be - more than two min­utes for a double-spaced page 65 characters wide.&lt;br /&gt;
&lt;br /&gt;
• The final format choice is the footer. It goes below the final line on the page and approximately flush with the right of that line. A footer may say (MORE), (CONTINUED) or any other message you want on each page. Don&#039;t make It too long; if it is longer than the number of characters in your line, you may get an error message and a crashed program. Trusting you to follow this advice, I have not built in a rescue should your footer exceed the number of characters in the line.&lt;br /&gt;
&lt;br /&gt;
GENTLE REMINDER. Now the program reminds you to turn on the printer and position the paper. On my ancient Line Printer III the paper is positioned if the top of the print head is even with the perforation across the top of the first fan-fold page on which I will he printing.&lt;br /&gt;
&lt;br /&gt;
You may have to experiment for the best setting on your printer.On the same screen display as your final reminders are the words: &amp;quot;Enter name of text file to be formatted.&amp;quot; In our hypothetical case, we type the word &amp;quot;mom&amp;quot; and stand back for some turtle-like formatted printing.&lt;br /&gt;
&lt;br /&gt;
If your printer doesn&#039;t jam the first time you look away from it, you might go into the kitchen for milk and cookies while it does its work. You can get pretty bored watching this program run - even when it&#039;s printing your own deathless words.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
100 REM*TEXTHELPER*&lt;br /&gt;
101 REM*TRS-80 Model 100*&lt;br /&gt;
102 REM*By Richard Romella*&lt;br /&gt;
110 CLS&lt;br /&gt;
120 PRINT&amp;quot;Menu:&amp;quot;&lt;br /&gt;
130 PRINT STRING$(24,&amp;quot;-&amp;quot;)&lt;br /&gt;
140 PRINT&amp;quot;1-Word Counter&amp;quot;&lt;br /&gt;
160 PRINT&amp;quot;2-DocumentFormatter&amp;quot;&lt;br /&gt;
170 PRINT STRING$(24,&amp;quot;-&amp;quot;)&lt;br /&gt;
180 INPUT&amp;quot;Number of your choice&amp;quot;;A&lt;br /&gt;
190 IF A&amp;lt;&amp;gt;1 AND A&amp;lt;&amp;gt;2 THEN CLS:PRINT&amp;quot;Choiceslimitedlo...&amp;quot;:GOTO 120 &lt;br /&gt;
200 CLS:H=0:P=0&lt;br /&gt;
210 IF A=2 THEN 340 &lt;br /&gt;
220 REM*WordCountRoutine*&lt;br /&gt;
230 W=1&lt;br /&gt;
240 INPUT “Name of file for word count&amp;quot;;N$&lt;br /&gt;
250 OPEN N$ FOR INPUT AS 1 &lt;br /&gt;
260 A$=INPUT$(1,1) &lt;br /&gt;
270 Z$=Z$+A$ &lt;br /&gt;
280 N=N+1&lt;br /&gt;
290 IF N&amp;gt;3 THEN Z$=RIGHT$(Z$,3) &lt;br /&gt;
300 IF EOF(1) THEN 780&lt;br /&gt;
310 IF A$=CHR$(10) THEN W=W+1&lt;br /&gt;
311 IF LEFT$(Z$,1)&amp;lt;&amp;gt;CHR$(32) AND MID$(Z$,2,1)=CHR$(32) AND RIGHT$(Z$,1)&amp;lt;&amp;gt;CHR$[32)THEN W=W+1 &lt;br /&gt;
320 PRINT @165,”WORDS:”;W &lt;br /&gt;
330 GOTO 260&lt;br /&gt;
340 REM* Document Formatter * &lt;br /&gt;
350 INPUT”Margin width (0 to 20)”;M &lt;br /&gt;
360 IF M&amp;lt;0 OR M&amp;gt;20 THEN CLS: PRINT &amp;quot;Note limits”: GOTO 350 ELSE M=INT(M):CLS&lt;br /&gt;
370 WL=85-{M*2) &lt;br /&gt;
380 PRINT&amp;quot;Margins of”M&amp;quot;left and right yield&amp;quot; &lt;br /&gt;
390 PRINT”a line of about ”WL” characters.” &lt;br /&gt;
400 INPUT”Is this okay(y/n)”;G$ &lt;br /&gt;
410 IF G$&amp;lt;&amp;gt;”y” AND G$&amp;lt;&amp;gt;&amp;quot;Y&amp;quot; AND G$&amp;lt;&amp;gt;”n” AND G$&amp;lt;&amp;gt;”N&amp;quot; THEN CLS:GOTO 380 &lt;br /&gt;
420 IF G$-&amp;quot;n&amp;quot; OR G$-&amp;quot;N&amp;quot;THEN CLS:GOTO 350 ELSE CLS &lt;br /&gt;
430 PRINT &amp;quot;Spacing:&amp;quot;  &lt;br /&gt;
440 PRINT STRING$(15,&amp;quot;-”) &lt;br /&gt;
450 PRiNT”1-single” &lt;br /&gt;
460 PrlNT”2-double&amp;quot;&lt;br /&gt;
470 PRINT”3-triple&amp;quot; &lt;br /&gt;
480 PRINTSTRING$(15,&amp;quot;-&amp;quot;) &lt;br /&gt;
490 INPUT”Choose 1, 2or 3”;SP &lt;br /&gt;
500 IF SP&amp;lt;&amp;gt;1 AND SP&amp;lt;&amp;gt;2 AND SP&amp;lt;&amp;gt;3 THEN CLS:GOTO 430 ELSE CLS &lt;br /&gt;
510 PRINT”Header up to”WL-19&amp;quot;characters”&lt;br /&gt;
520 INPUT”Header choice&amp;quot;;HE$ &lt;br /&gt;
530 IF LEN(HE$)&amp;gt;WL-19 THEN CLS:PRINT HE$:PRINT”too long.”:PRINT:GOTO510 &lt;br /&gt;
540 CLS&lt;br /&gt;
550 INPUT”Footer choice”;FO$ &lt;br /&gt;
560 CLS 5&lt;br /&gt;
570 PRINT”Line printer on? Paper positioned?&amp;quot;&lt;br /&gt;
580 PRINT”Enter name of text file to be formated.&amp;quot; &lt;br /&gt;
590 INPUT N$ &lt;br /&gt;
600 P=1&lt;br /&gt;
610 FOR A=1 TO 4 &lt;br /&gt;
620 LPRINT&lt;br /&gt;
630 NEXT&lt;br /&gt;
640 XX=1&lt;br /&gt;
650 GOSUB 880&lt;br /&gt;
660 LPRINT&lt;br /&gt;
670 LPRINT&lt;br /&gt;
680 OPEN N$ FOR INPUT AS 1&lt;br /&gt;
690 LPRINT SPACE$(M);&lt;br /&gt;
700 A$=INPUT$(1,1)&lt;br /&gt;
710 IF EOF(1) THEN PRINT”Document has been printed in chosen format.&amp;quot;:GOTO 780&lt;br /&gt;
720 LPRINT A$; &lt;br /&gt;
730 H=H+1 &lt;br /&gt;
740 IF H&amp;gt;WL AND A$=CHR$(32) THEN FOR=1 TO SP:LPRINT:J=J+1:NEXT V:LPRINT SPACE$(M);:H=0 &lt;br /&gt;
750 IF A$=CHR$(10) AND SP&amp;gt;1 THEN J=J+1:FOR V=1 TO SP-1:LPRINT:J=J+1:NEXT V:LPRINT SPACE$(M);:H=0:ELSE IF A$=CHR$(10)THEN J=J+1:H=0:LPRINT SPACE$(M); &lt;br /&gt;
760 IF SP-1 AND J-50 OR SP-2 AND J-50 OR SP=3 AND J=48 THEN GOSUB 810 &lt;br /&gt;
770 GOTO 700&lt;br /&gt;
780 CLOSE 1 &lt;br /&gt;
790 PRINT@240,&amp;quot;Tap M to return to MENU&amp;quot;&lt;br /&gt;
800 IF INKEY$=”” THEN 790 ELSE 110 &lt;br /&gt;
810 LPRINT &lt;br /&gt;
820 LPRINT &lt;br /&gt;
830 LPRINT SPACE$(85-(M+LEN(FO$))),FO$ &lt;br /&gt;
840 FOR S=1 TO 8 &lt;br /&gt;
850 LPRINT &lt;br /&gt;
860 NEXTS &lt;br /&gt;
870 IF SP=3 THEN LPRINT:LPRINT &lt;br /&gt;
880 J=00:IF XX=0 THEN P=P+1 &lt;br /&gt;
890 LPRINT SPACE$(M);CHR$(32);HE$;CHR$(32);CHR$(32);DATE$,CHR$(32);TIME$;SPACE$(3);P &lt;br /&gt;
900 LG=LEN(HE$+CHR$(32)+DATE$+CHR$(32)+TIME$;SPACE$(7))&lt;br /&gt;
910 LPRINT SPACE$(M);STRING$(LG,&amp;quot;-&amp;quot;) &lt;br /&gt;
920 IF XX=1 THEN XX=0:RETURN&lt;br /&gt;
930 FOR S=1 TO 3 &lt;br /&gt;
940 LPRINT &lt;br /&gt;
950 NEXTS&lt;br /&gt;
960 LPRINT SPACE$(M); &lt;br /&gt;
970 RETURN &lt;br /&gt;
980 END&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Model 100 Classics]]&lt;/div&gt;</summary>
		<author><name>97.89.182.164</name></author>
	</entry>
	<entry>
		<id>https://bitchin100.com/wiki/index.php?title=Category:Model_100_Classics&amp;diff=886</id>
		<title>Category:Model 100 Classics</title>
		<link rel="alternate" type="text/html" href="https://bitchin100.com/wiki/index.php?title=Category:Model_100_Classics&amp;diff=886"/>
		<updated>2009-01-25T00:59:55Z</updated>

		<summary type="html">&lt;p&gt;97.89.182.164: Format Your Words With This Text Aid, By RICHARD RAMELLA Portable 100/September 1983&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Format Your Words With This Text Aid&lt;br /&gt;
&lt;br /&gt;
With a little Basic help, your 100 can be a hot-shot word processor.&lt;br /&gt;
By RICHARD RAMELLA&lt;br /&gt;
Portable 100/September 1983&lt;br /&gt;
Page 27-28&lt;br /&gt;
____&lt;br /&gt;
Though its text-handling capabilities are diverse, the Model 100&#039;s built-in, word-processing program lacks features needed by many wordsmiths.  So I wrote TEXTHELPER, a fairly short basic program that formats printed documents in useful ways.&lt;br /&gt;
&lt;br /&gt;
With this program, you may set side margins from 0 to 20, single-,  double- or triple-space, and print page numbers, headers, and footers. The text is automatically printed in a spaced format so it continues  from page to page with uniform margins at top and bottom. It is for use with standard 8 l/z-by-11 -inch paper.&lt;br /&gt;
&lt;br /&gt;
And just to show you my heart&#039;s in the right place, I&#039;ve thrown in a little routine that counts the words in a document.&lt;br /&gt;
&lt;br /&gt;
FASTER THAN HAND. The format printing process occurs quite slowly by computer standards but still is perhaps 10 times faster than the human hand and unerring in following your instructions. Sophisticated and lightning quick word processing is on the horizon for the Model 100, but those programs you won&#039;t get for the cost of a few magazine pages.&lt;br /&gt;
&lt;br /&gt;
The experts may want to skip ahead here, because I&#039;m starting at the beginning for the many Model 100 owners just getting acquainted with  their machine. &lt;br /&gt;
&lt;br /&gt;
The Model 100 has several kinds of files. The two we&#039;ll deal with are text documents and Basic programs. The program TEXTHELPER is a Basic program. It calls up material in a text file and sends it to the line printer, which prints it on paper in the format you have determined.&lt;br /&gt;
&lt;br /&gt;
What you need to know about creating a text file is in chapter eight (pages 43-60) of the manual that came with the computer. Once you are able to create a text file, write words in it, and save the file, you can use this program.&lt;br /&gt;
&lt;br /&gt;
MENU MODE, In the menu mode, the text file you create will be followed by  the file name extension .DO. Using TEXTHELPER, you may call up only .DO files for formatting.&lt;br /&gt;
&lt;br /&gt;
Before you Run TEXTHELPER, there, must be a text file in the system, and you must know the exact name of it. This isn&#039;t difficult because you named the file when you created it.&lt;br /&gt;
&lt;br /&gt;
A note of caution is warranted here. When you create the text file, make sure you don&#039;t use the tab key on your 100. And although your typing teacher may have taught you to leave two spaces between sentences, don&#039;t do it here. The results will be bizarre.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s say you want to format a file listed in the menu as MOM.DO. (It&#039;s a long overdue letter to your poor old gray-haired mother.)&lt;br /&gt;
&lt;br /&gt;
This program is so user-friendly many experienced computer jockeys are going co be kicking out program lines left and right. But it protects the novice computer user from mistakes in numerous ways.&lt;br /&gt;
&lt;br /&gt;
As the program begins, a two-item menu is shown. Type 1 and tap enter to try the word counter. Or type 2 and tap enter to try the document formatter. Tap anything else and you must try again until you get one of the two acceptable answers.&lt;br /&gt;
&lt;br /&gt;
WORD COUNTER. If you try the word-counter routine, it asks for the name of the file to be accessed. The file name is MOM.DO, but you just type in the word MOM in any mix of upper and lower case, and the machine understands. The program displays WORDS: followed by a number that grows as each word is counted. When it&#039;s through counting, you know it because you&#039;re told Tap &amp;quot;M&amp;quot; to return to &amp;quot;MENU.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The document formatting pan of the program is more complex in its workings but not complex in use.&lt;br /&gt;
&lt;br /&gt;
DECISIONS, DECISIONS. To format, you must make several decisions. I&#039;ll list them in turn:&lt;br /&gt;
• You&#039;re asked what margin from 0 to 20 you wish. A choice less than zero or more than 20 is unacceptable. Paper sized at 8 1/2-by-ll inches will hold about 85 characters on a line. Note that 9 1/2-by-11-inch computer paper is actually 8 1/2 inches wide after you tear off the tractor-feed margins. If your line printer allows changing the width of letters, I advise you to set it at 10 characters per inch so 85 characters fit snugly between one edge and the other. Otherwise, this program may give you unintended results.&lt;br /&gt;
&lt;br /&gt;
The number you choose for a left margin is exact but on the right it is approximate. Both are about the same, but the right margin allows a bit of grace. This is because the program doesn&#039;t go to the next line until it encounters a line feed or blank space occurring after passing the line length determined by the margins it passed. This prevents line feeds in mid-word.&lt;br /&gt;
&lt;br /&gt;
• That brings us to the next choice. If you select a right margin of 10 and a left margin of 10, then you&#039;ll have a line with about 65 characters (85 minus 20) in it. The program tells you this and asks: &amp;quot;Is this okay?&amp;quot; If it isn&#039;t, type N for no and tap Enter.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll get another try at setting margins and may keep trying until satis­fied. Answering Y for yes sends the program onward.&lt;br /&gt;
• A menu for line spacing is shown. Your choices are 1 for single space. 2 for double space, and 3 for triple space. If you are printing a single-spaced document on a single page, it&#039;s better to use the print function included with the Model 100&#039;s text-processing program. Single-spaced text gives you 50 lines a page, double-spaced 25 lines, and triple-spaced 16 lines.&lt;br /&gt;
&lt;br /&gt;
• Now choose your header. A header is just word-processing jargon for a title. You don&#039;t need a header on a letter to mom, but in other cases it&#039;s very useful: War and Peace — Fifth Draft... Annual Re­port... and the like. You are given a limit here for the number of characters you may put in the header. It&#039;s based on the number of characters in the formatted line. If your header is too long, you get a chance to write a shorter one. In fact, it&#039;s mandatory.&lt;br /&gt;
&lt;br /&gt;
The header also includes three other interesting things: the date, the time, and the page number. These are provided automatically. I&#039;m afraid that by including the exact time on each page, I&#039;ve re­vealed exactly how slow this pro­gram can be - more than two min­utes for a double-spaced page 65 characters wide.&lt;br /&gt;
&lt;br /&gt;
• The final format choice is the footer. It goes below the final line on the page and approximately flush with the right of that line. A footer may say (MORE), (CONTINUED) or any other message you want on each page. Don&#039;t make It too long; if it is longer than the number of characters in your line, you may get an error message and a crashed program. Trusting you to follow this advice, I have not built in a rescue should your footer exceed the number of characters in the line.&lt;br /&gt;
&lt;br /&gt;
GENTLE REMINDER. Now the program reminds you to turn on the printer and position the paper. On my ancient Line Printer III the paper is positioned if the top of the print head is even with the perforation across the top of the first fan-fold page on which I will he printing.&lt;br /&gt;
&lt;br /&gt;
You may have to experiment for the best setting on your printer.On the same screen display as your final reminders are the words: &amp;quot;Enter name of text file to be formatted.&amp;quot; In our hypothetical case, we type the word &amp;quot;mom&amp;quot; and stand back for some turtle-like formatted printing.&lt;br /&gt;
&lt;br /&gt;
If your printer doesn&#039;t jam the first time you look away from it, you might go into the kitchen for milk and cookies while it does its work. You can get pretty bored watching this program run - even when it&#039;s printing your own deathless words.&lt;br /&gt;
&lt;br /&gt;
100 REM*TEXTHELPER*&lt;br /&gt;
101 REM*TRS-80 Model 100*&lt;br /&gt;
102 REM*ByRichardRomella*&lt;br /&gt;
110 CLS&lt;br /&gt;
120 PRtNT&amp;quot;Menu:&amp;quot;&lt;br /&gt;
130 PRINTSTRING$(24,&amp;quot;-&amp;quot;)&lt;br /&gt;
140 PRINT&amp;quot;1-Word Counter&amp;quot;&lt;br /&gt;
160 PRINT&amp;quot;2-DocumentFormatter&amp;quot;&lt;br /&gt;
170 PRINTSTRING$(24,&amp;quot;-&amp;quot;)&lt;br /&gt;
180 INPUT&amp;quot;Number of your choice&amp;quot;;A&lt;br /&gt;
190 IFA&amp;lt;&amp;gt;1ANDA&amp;lt;&amp;gt;2THENCLS&lt;br /&gt;
    :PRINT&amp;quot;Choiceslimitedlo...&amp;quot;&lt;br /&gt;
    :GOTO120 &lt;br /&gt;
200 CLS&lt;br /&gt;
    :H=0&lt;br /&gt;
    :P=0&lt;br /&gt;
210 IFA=2THEN340 &lt;br /&gt;
220 REM*WordCountRoutine*&lt;/div&gt;</summary>
		<author><name>97.89.182.164</name></author>
	</entry>
	<entry>
		<id>https://bitchin100.com/wiki/index.php?title=Category:Model_100_Classics&amp;diff=849</id>
		<title>Category:Model 100 Classics</title>
		<link rel="alternate" type="text/html" href="https://bitchin100.com/wiki/index.php?title=Category:Model_100_Classics&amp;diff=849"/>
		<updated>2009-01-22T23:14:39Z</updated>

		<summary type="html">&lt;p&gt;97.89.182.164: ROM ADDRESSES: GETTING BASIC TO DO WHAT YOU WANT [PORTABLE 100 - September 1983..FW&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How does Basic do what you tell it to do? Clues to the language&#039;s subservience lie in ROM.&lt;br /&gt;
By JAKE COMMANDER &lt;br /&gt;
How on earth does Basic know what to do? All those state­ments, commands, and functions, yet the interpreter untiringly plods   through   your   code   always knowing what&#039;s required next. Just how does it do it?&lt;br /&gt;
&lt;br /&gt;
Well, if the answer were simple, everybody would be writing Basic interpreters and putting Microsoft out of business. But it is possible to follow at least some of the pathways Basic uses to perform its duties.&lt;br /&gt;
&lt;br /&gt;
Most addresses of the ROM routines which comprise Basic are held in two tables. These can be unravrelled to give a list of routines used to perform various tasks. &lt;br /&gt;
&lt;br /&gt;
JUMP ADDRESSES. One table contains jump addresses for the commands ( or verbs, as it were) which will always be the first thing the interpreter picks up from a statement. The whole repertoire of such commands is catered for the table located at 0262 hex.&lt;br /&gt;
&lt;br /&gt;
Basic gets the appropriate jump address by using the token number for the command it&#039;s about to execute. All tokens are numbers from 128 to 255; therefore subtracting 128 gives numbers from zero to 127. As each jump address in the table is two bytes long, the token (minus 128) is multiplied by two to give an offset into the table. This points straight at the address which is needed. The two-byte address is picked up and jumped to ― and we&#039;re now executing a Basic command in pure machine code.&lt;br /&gt;
&lt;br /&gt;
What happens next depends entirely on the machine code for the  command itself. Various syntaxes are allowed for some commands but not for others. For instance, the print command would allow an expression such as TAB(22);l/3 , so would an LPR1NT. But a LET would have none of that. LET X = TAB(22); 1/3 would have you on the carpet in no time.&lt;br /&gt;
&lt;br /&gt;
Also various combinations of tokens can do different things. The comparison operators, for example, can be used pretty much interchangeably. These operators, &amp;gt;― &amp;lt;&amp;gt; = &amp;lt; , etc are all OK syntactically. This versatility means a table for such a wide set of possibilities is nigh impossible.&lt;br /&gt;
&lt;br /&gt;
SECOND TABLE However, there is a second table at location 004E in the ROM. This contains many addresses used in the evaluation of Basic math functions and expressions. These are extracted and jumped to in a similar fashion to the first table.&lt;br /&gt;
&lt;br /&gt;
Any Basic word excluded from either of these tables is handled separately by the interpreter according to its particular use. However, out of a possible 128 tokens, these two tables give us a mechanism by which we can follow the machine-code execution of many of them. It is the combination of these routines and the syntax checking required to logically execute them that makes up an interpreter.&lt;br /&gt;
&lt;br /&gt;
The following list has been compiled from the two tables I&#039;ve described and a disassembly of other parts of the ROM. It shows the entry points for all important Basic statements and functions. Certain functions can have more than one possible syntactic use and the list does not cover all such uses. (An example is the statement OFF, which can be SOUND OFF or MOTOR OFF etc.) The list is in four columns. The first is the address in ROM where the Basic word occurs in the vocabu­lary table. The second entry is the word itself. Third is the token assigned to that word when it is encoded by the Basic interpreter. &lt;br /&gt;
&lt;br /&gt;
FOURTH COLUMN. The fourth column contains the address the interpreter jumps to to execute the token representing the statement or function desired. Once again, some statements can have more than one use such as MID$ (LH$)=RH$, and LH$=MID$ (RH$). In these cases, two addresses are given: one for use on the left hand side of the equals sign and one for the right hand side of the sign.&lt;br /&gt;
&lt;br /&gt;
Perhaps unsurprisingly, things get a little more complicated with the mathematical functions in Basic. It&#039;s not simply a matter of taking an address for, say, a multiply routine and then jumping to it. The Basic interpreter has to know the numeric type of operator it has to work on. For instance, with the addition operator, Basic has four choices: signed integer, single precision, double precision, and string. None of the other binary operators allow string manipulation, so they&#039;re limited to the numeric variable types only.&lt;br /&gt;
&lt;br /&gt;
The addresses of these binary operators can be confirmed (if you need confirmation) from three short tables in ROM ― one each for double precision, single precision, and integer numbers respectively. &lt;br /&gt;
&lt;br /&gt;
The tables contain six addresses apiece for addition, subtraction, multiplication, division, exponentiation, and comparison. Rather than clutter the token-addresses table, these addresses are contained separately at the end.&lt;br /&gt;
&lt;br /&gt;
In a following article, I&#039;ll be looking at ways to use some of these addresses in your own machine-code programs. For the more adventur­ous, an experiment will probably prove irresistible. Remember, though, in a RAM-file machine such as the Model 100, a lock-up may cost you all your files. Use caution.&lt;br /&gt;
&lt;br /&gt;
JAKES ROM ADDRESSES FOR BASIC KEYWORDS&lt;br /&gt;
 &lt;br /&gt;
0080   =&amp;gt;  END	=   80 @ 409F&lt;br /&gt;
	   &lt;br /&gt;
0083   =&amp;gt; FOR	=   81 @ 0726&lt;br /&gt;
	   &lt;br /&gt;
0086   =&amp;gt; NEXT  =   82 @ 4174&lt;br /&gt;
	   &lt;br /&gt;
008A   =&amp;gt;  DATA	=   83 @ 099E&lt;br /&gt;
	   &lt;br /&gt;
008E   =&amp;gt; INPUT	=   84 @ 0CA3&lt;br /&gt;
	   &lt;br /&gt;
0093   =&amp;gt; DIM  =   85 @ 478B&lt;br /&gt;
	   &lt;br /&gt;
0096   =&amp;gt; READ =   86 @ OCD9&lt;br /&gt;
	   &lt;br /&gt;
009A =&amp;gt; LET =   87 @ 09C3&lt;br /&gt;
	   &lt;br /&gt;
009D =&amp;gt;  GOTO =   88 @ 0936&lt;br /&gt;
	   &lt;br /&gt;
OOA1  =&amp;gt; RUN =   89 @ 090F&lt;br /&gt;
	   &lt;br /&gt;
OOA4  =&amp;gt;  IF =   8A @ OB1A&lt;br /&gt;
	   &lt;br /&gt;
OOA6 =&amp;gt; RESTORE =   8B @ 407F&lt;br /&gt;
	   &lt;br /&gt;
00AD =&amp;gt; GOSU8 =   8C @ 091E&lt;br /&gt;
	   &lt;br /&gt;
0082  =&amp;gt; RETURN =   8D @ 0966&lt;br /&gt;
	   &lt;br /&gt;
OOB8  =&amp;gt;  REM =   8E  @ 09AO&lt;br /&gt;
	   &lt;br /&gt;
OOBB   =&amp;gt;  STOP =   8F  @ 409A&lt;br /&gt;
	   &lt;br /&gt;
OOBF   =&amp;gt; WIDTH =  9D @ 1DC3&lt;br /&gt;
	   &lt;br /&gt;
OOC4 =&amp;gt; ELSE = 91  @ 09AO&lt;br /&gt;
	   &lt;br /&gt;
OOC8 =&amp;gt;  LINE =  92 @ OC45&lt;br /&gt;
	   &lt;br /&gt;
OOCC =&amp;gt; EDIT = 93 @ 5E51&lt;br /&gt;
	   &lt;br /&gt;
OODO =&amp;gt; ERROR = 94 @ OBOF&lt;br /&gt;
	   &lt;br /&gt;
00D5  =&amp;gt;  RESUME =  95 @ OABO&lt;br /&gt;
	   &lt;br /&gt;
OODB =&amp;gt;  OUT =  96 @ 11OC&lt;br /&gt;
	   &lt;br /&gt;
OODE =&amp;gt; ON =  97 @ OA2F&lt;br /&gt;
	   &lt;br /&gt;
OOEO  =&amp;gt;  DSKOS =  98 @ 5071&lt;br /&gt;
	   &lt;br /&gt;
OOE5  =&amp;gt; OPEN =  99 @ 4CCB&lt;br /&gt;
	   &lt;br /&gt;
OOE9   =&amp;gt;   CLOSE =   9A © 4E20&lt;br /&gt;
	   &lt;br /&gt;
OOEE   =&amp;gt;  LOAD =  98 @ 4D70&lt;br /&gt;
	   &lt;br /&gt;
OOF2  =&amp;gt; MERGE =  9C @ 4D71&lt;br /&gt;
	   &lt;br /&gt;
OOF7   =&amp;gt;  FILES = 9D @ 1F3A&lt;br /&gt;
	   &lt;br /&gt;
OOFC  =&amp;gt;   SAVE =   9E   © 4DCF&lt;br /&gt;
	   &lt;br /&gt;
0100   =&amp;gt; LFILES =  9F @ 506F&lt;br /&gt;
	   &lt;br /&gt;
0106   =&amp;gt;  LPRINT =  AO @ OB4E&lt;br /&gt;
	   &lt;br /&gt;
010C =&amp;gt; DEF =  A1  @ 0872&lt;br /&gt;
	   &lt;br /&gt;
010F   =&amp;gt;  POKE =  A2 @ 128B&lt;br /&gt;
	   &lt;br /&gt;
0113   =&amp;gt; PRINT =  A3 @ 0B56&lt;br /&gt;
	   &lt;br /&gt;
0118   =&amp;gt; CONT  =  A4 @ 40DA&lt;br /&gt;
	   &lt;br /&gt;
011C   =&amp;gt;  LIST =  A5 @ 1140&lt;br /&gt;
	   &lt;br /&gt;
0120   =&amp;gt; LLIST =  A6 @ 113B&lt;br /&gt;
	   &lt;br /&gt;
0125   =&amp;gt; CLEAR =  A7 @ 40F9&lt;br /&gt;
	   &lt;br /&gt;
012A   =&amp;gt; CLOAD =  A8@ 2377&lt;br /&gt;
	   &lt;br /&gt;
012F   =&amp;gt; CSAVE =  A9 @ 2280&lt;br /&gt;
	   &lt;br /&gt;
0134   =&amp;gt;  T1ME$ = AA @ 19AB 1904&lt;br /&gt;
	   &lt;br /&gt;
0139   =&amp;gt;  DATES = AB @ 19BD 1924&lt;br /&gt;
	   &lt;br /&gt;
013E   =&amp;gt;  DAYS =  AC © 19F1 1955&lt;br /&gt;
	   &lt;br /&gt;
0142   =&amp;gt; COM =  AD @ 1A9E&lt;br /&gt;
	   &lt;br /&gt;
0145   =&amp;gt;  MDM =   AE @  1A9E&lt;br /&gt;
	   &lt;br /&gt;
0148   =&amp;gt;  KEY =   AF @ 1BB8&lt;br /&gt;
	   &lt;br /&gt;
014B   =&amp;gt;  CLS =  BO @ 4231&lt;br /&gt;
	   &lt;br /&gt;
014E   =&amp;gt; BEEP =  B1  @ 4229&lt;br /&gt;
	   &lt;br /&gt;
0152   =&amp;gt;  SOUND =   B2  @ 1DC5&lt;br /&gt;
	   &lt;br /&gt;
0157   =&amp;gt; LCOPY = B3 @ 1E5E&lt;br /&gt;
	   &lt;br /&gt;
015C  =&amp;gt; PSET =  B4 @ 1C57&lt;br /&gt;
	   &lt;br /&gt;
0160   =&amp;gt;  PRESET =  B5 @ 1C66&lt;br /&gt;
	   &lt;br /&gt;
0166   =&amp;gt;  MOTOR =   B6 @ 1DEC&lt;br /&gt;
	   &lt;br /&gt;
016B   =&amp;gt;  MAX =   B7 @ 7FOB   19DB&lt;br /&gt;
	   &lt;br /&gt;
016E   =&amp;gt; POWER =  B8 @ 1419&lt;br /&gt;
	   &lt;br /&gt;
0173   =&amp;gt;  CALL =  B9 @ 1DFA&lt;br /&gt;
	   &lt;br /&gt;
0177   =&amp;gt;  MENU =  BA @ 5797&lt;br /&gt;
	   &lt;br /&gt;
017B   =&amp;gt;  IPL =  BB @ 1A78&lt;br /&gt;
	   &lt;br /&gt;
017E   =&amp;gt; NAME =  BC @ 2037&lt;br /&gt;
	   &lt;br /&gt;
0182   =&amp;gt; KILL =  BD @ 1F91&lt;br /&gt;
	   &lt;br /&gt;
0186   =&amp;gt;  3CREEN =   BE   @ 1E22&lt;br /&gt;
	   &lt;br /&gt;
018C  =&amp;gt;  NEW =  BF @ 20FE&lt;br /&gt;
	   &lt;br /&gt;
018F   =&amp;gt; TAB( = CO @ OC01&lt;br /&gt;
	 � &lt;br /&gt;
0193  =&amp;gt; TO = C1 @ 076B&lt;br /&gt;
	&lt;br /&gt;
0195  =&amp;gt; USING = C2@ 4991&lt;br /&gt;
	&lt;br /&gt;
D19A  =&amp;gt; VARPTR = C3 @ OF7E&lt;br /&gt;
	&lt;br /&gt;
01AO  =&amp;gt; ERL = C4@ OF56&lt;br /&gt;
	&lt;br /&gt;
01 A3  =&amp;gt; ERR = C5@ OF47&lt;br /&gt;
	&lt;br /&gt;
01 A6  =&amp;gt; STING$ = C6@ 296D&lt;br /&gt;
	&lt;br /&gt;
01 AD   =&amp;gt; INSTR = C7 @ 2A37&lt;br /&gt;
	&lt;br /&gt;
0182  =&amp;gt; DSKI$ = C8 @ 5073&lt;br /&gt;
	&lt;br /&gt;
01B7  =&amp;gt; INKEY$ = C9@ 4BEA&lt;br /&gt;
	&lt;br /&gt;
01BD  =&amp;gt; CSRLIN = CA@ 1D90&lt;br /&gt;
	&lt;br /&gt;
01C3  =&amp;gt; OFF = C8 @ various&lt;br /&gt;
	&lt;br /&gt;
01C6  =&amp;gt; HIMEM = CC @ 1DB9&lt;br /&gt;
	&lt;br /&gt;
01CB  =&amp;gt; THEN = CD® OB2A&lt;br /&gt;
	&lt;br /&gt;
01CF  =&amp;gt; NOT = CE @ 1054&lt;br /&gt;
	&lt;br /&gt;
01D2  =&amp;gt; STEP = CF @ O783&lt;br /&gt;
	&lt;br /&gt;
01 06  =&amp;gt; + = D0 *&lt;br /&gt;
	&lt;br /&gt;
01D7  =&amp;gt;  - = D1 *   	See&lt;br /&gt;
	&lt;br /&gt;
01D8  =&amp;gt;  * = D2 *	table&lt;br /&gt;
	&lt;br /&gt;
01 D9  =&amp;gt; / = D3 *	at end&lt;br /&gt;
	&lt;br /&gt;
010A  =&amp;gt;  /\ = D4 *&lt;br /&gt;
	&lt;br /&gt;
01 DB  =&amp;gt; AND = D5 @ 1097&lt;br /&gt;
	&lt;br /&gt;
01 DE  =&amp;gt; OR  =	06 @ 108C&lt;br /&gt;
	&lt;br /&gt;
O1EO  =&amp;gt; XOR  = D7 @ 10A2&lt;br /&gt;
	&lt;br /&gt;
01E3  =&amp;gt; EQV  = D8 @ 10AD&lt;br /&gt;
	&lt;br /&gt;
01E6  =&amp;gt; IMP  = D9 @ 10B5&lt;br /&gt;
	&lt;br /&gt;
01E9  =&amp;gt; MOD  = DA@ 37DF&lt;br /&gt;
	&lt;br /&gt;
01 EC  =&amp;gt; \   = DB @ 377E&lt;br /&gt;
	&lt;br /&gt;
01ED  =&amp;gt; &amp;gt;    = DC@ OE29&lt;br /&gt;
	&lt;br /&gt;
01EE  =&amp;gt; =    = DD@ OE29&lt;br /&gt;
	&lt;br /&gt;
01EF  =&amp;gt; &amp;lt;    = DE @ OE29&lt;br /&gt;
	&lt;br /&gt;
01FO  =&amp;gt; SGN  = DF @ 3407&lt;br /&gt;
	&lt;br /&gt;
01F3  =&amp;gt; INT  = E0 @ 3654&lt;br /&gt;
	&lt;br /&gt;
OIF6  =&amp;gt; ABS  = E1 @ 33F2&lt;br /&gt;
	&lt;br /&gt;
01F9  =&amp;gt; FRE  = E2 @ 2B4C&lt;br /&gt;
	&lt;br /&gt;
01FC  =&amp;gt; INP  = E3 @ 1100&lt;br /&gt;
	&lt;br /&gt;
01FF  =&amp;gt; LPOS = E4 @ 10C8&lt;br /&gt;
	&lt;br /&gt;
0203  =&amp;gt; POS  = E5 @ 10CE&lt;br /&gt;
	&lt;br /&gt;
0206  =&amp;gt; SQR  = E6 @ 305A&lt;br /&gt;
	&lt;br /&gt;
0209  =&amp;gt; RND  = E7 @ 313E&lt;br /&gt;
	&lt;br /&gt;
020C  =&amp;gt; LOG  = E8 @ 2FCF &lt;br /&gt;
	&lt;br /&gt;
020F  =&amp;gt; EXP  = E9 @ 30A4&lt;br /&gt;
	&lt;br /&gt;
0212  =&amp;gt; COS  = EA @ 2EEF&lt;br /&gt;
	   &lt;br /&gt;
0215  =&amp;gt; SIN  = EB @ 2F09&lt;br /&gt;
	&lt;br /&gt;
0218  =&amp;gt; TAN  = EC @ 2F58&lt;br /&gt;
	&lt;br /&gt;
021B  =&amp;gt; ATN  = ED @ 2F71&lt;br /&gt;
	&lt;br /&gt;
021E  =&amp;gt; PEEK = EE @ 1284&lt;br /&gt;
	&lt;br /&gt;
0222  =&amp;gt; EOF  = EF  @ 1889&lt;br /&gt;
	&lt;br /&gt;
0225  =&amp;gt; LOG  = F0  @ 506D&lt;br /&gt;
	&lt;br /&gt;
0228  =&amp;gt; LOF  = F1  @ 506B&lt;br /&gt;
	&lt;br /&gt;
022B  =&amp;gt; CINT = F2  @ 3501&lt;br /&gt;
	&lt;br /&gt;
022F  =&amp;gt; CSNG = F3  @ 352A&lt;br /&gt;
	&lt;br /&gt;
0233  =&amp;gt; CDBL = F4  @ 35BA&lt;br /&gt;
	&lt;br /&gt;
0237  =&amp;gt; FIX  = F5  @ 3645&lt;br /&gt;
	&lt;br /&gt;
023A  =&amp;gt; LEN  = F6  @ 2943&lt;br /&gt;
	&lt;br /&gt;
023D  =&amp;gt; STR$ = F7  @ 273A&lt;br /&gt;
	&lt;br /&gt;
0241  =&amp;gt; VAL  = F8  @ 2A07&lt;br /&gt;
	&lt;br /&gt;
0244  =&amp;gt; ASC  = F9  @ 294F&lt;br /&gt;
	&lt;br /&gt;
0247  =&amp;gt; CHR$ = FA  @ 295F&lt;br /&gt;
	&lt;br /&gt;
0248  =&amp;gt; SPACE$ = FB  @ 298E&lt;br /&gt;
	&lt;br /&gt;
0251  =&amp;gt; LEFT$  = FC @ 29AB&lt;br /&gt;
	&lt;br /&gt;
0256  =&amp;gt; RIGHT$ = FD @ 29DC&lt;br /&gt;
	&lt;br /&gt;
025C  =&amp;gt; MID$   = FE  @ 2AC2   29E6&lt;br /&gt;
	&lt;br /&gt;
0260  =&amp;gt; &#039;      = FF  @ OA90&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	+       -      *      /        &amp;gt;    Cmpr&lt;br /&gt;
D.P.   2B78    2B69   2CFF   2DC7   3D8E    34FA&lt;br /&gt;
S.P.   37F4    37FD   3803   380E   3D7F    3498&lt;br /&gt;
INT    3704    36F8   3725   OFOD   3DF7    34C2&lt;br /&gt;
Siring 28CC                                 270C&lt;br /&gt;
	 &lt;br /&gt;
Portable lO0 September 1983&lt;/div&gt;</summary>
		<author><name>97.89.182.164</name></author>
	</entry>
</feed>