Care Care V1000 is a car maintenance record-keeping system that stores, sorts, and analyzes vehicle service and fuel transactions. The program uses a compact data representation, packing multiple fields into fixed-width string slices within a transaction array T$, with fields for date, mileage, cost, and transaction type (fuel vs. service). A custom numeric formatter at line 368 handles right-aligned decimal output with configurable field width (L) and decimal places (M), returning “99999999” on overflow. The system supports multiple display modes controlled by variable SP, including per-unit cost calculations with conversion factors H3 and H4 to switch between measurement systems (e.g., miles/kilometers and gallons/liters). An insertion-sort routine at lines 297–314 maintains the transaction list in chronological order by date string.
Program Analysis
Program Structure
The program uses a dispatch table at lines 1–11, where each line contains a GOTO to a subroutine entry point. This allows the main menu loop (around line 45–52) to branch to a selected routine via GOTO VAL G$(VAL C$), treating G$ as a string-encoded jump table. Lines are organized into functional clusters:
- Lines 1–11: Dispatch table
- Lines 45–107: Menu handling and data entry for fuel/service records
- Lines 120–133: Record deletion
- Lines 150–190: Category/label editing
- Lines 200–266: Utility subroutines (screen clear, initialization, filtering)
- Lines 278–316: Mileage/date range computation and sorted insertion
- Lines 330–351: Sub-category selection loop
- Lines 368–385: Number formatting subroutine
- Lines 400–480: Universal input handler with validation
- Lines 500–650: Transaction listing and summary display
- Lines 700–735: Save/load and screen scroll utilities
- Lines 800–852: Report type selector
- Lines 900–1000: Cost summary report
- Lines 1008–1091: Per-transaction fuel economy analysis
- Lines 1125–1141: Report initialization
- Lines 5551–5565: Fuel consumption summary report
- Lines 6000–6056: Unit conversion helpers
Data Storage Layout
All transaction records are stored in the string array T$, with each record being a fixed-width string. Fields are addressed by character position slices:
| Slice | Content |
|---|---|
T$(J, TO N6) | Date (6 chars) |
T$(J, N7 TO N13) | Odometer/mileage (7 chars) |
T$(J, N14 TO N19) | Cost or distance (6 chars) |
T$(J, N20 TO N23) | Volume/quantity (4 chars) |
T$(J, N24) | Category code (1 char) |
T$(J, N25) | Transaction type: A$=fuel, D$=service (1 char) |
The constant-named numeric variables (N, N2, N3, etc.) serve as symbolic aliases for small integers, reducing token storage and improving maintainability. Similarly, Z represents zero and is used pervasively in comparisons and initializations.
Input Validation System
All user input passes through the subroutine at line 400, which acts as a universal validated input handler. The variable B is set to a validation mode code before calling this routine via GOSUB N9. The handler displays the current screen (lines 401–403), accepts INPUT R$, and then dispatches to one of several validation branches based on B and the content of R$. Extended input (starting with A$) is re-dispatched through a secondary jump table at line 462: GOTO VAL G$(B+N9), enabling mode-specific extended commands. The sentinel value M$ represents a “back/cancel” key that always causes a GOTO N (return to menu). Error feedback is shown by writing [E][R][R][O][R] into a display line field at line 417 before looping back.
Number Formatting Subroutine
The subroutine at lines 368–385 is a right-aligned decimal formatter. It uses two parameters: L (total field width) and M (decimal places). It builds an 8-character result in C$ initialized to spaces. The integer part is right-justified into positions up to L-M, and the fractional part fills positions L-M+1 to L. A small epsilon (0.0001, 0.005, or 0.05 depending on M) is added before truncation to avoid floating-point underflow artifacts. If the integer part is too wide for the field, the overflow result "99999999" is returned at line 384.
Sorted Insertion Routine
New records are inserted into T$ in sorted order by date string at lines 297–314. The routine walks forward through T$ until it finds the correct insertion point based on lexicographic comparison of the date and odometer fields (lines 299–301). If the new record’s date falls between two consecutive records’ odometer values, a duplicate-date conflict message is displayed using pre-built error strings in L$ (lines 302–308). Otherwise, a standard shift-up insertion sort is performed (lines 309–314), incrementing T (the record count) and shifting all subsequent records up by one position.
Unit Conversion and Measurement Modes
The variable SP selects the display unit system. When SP=N (1), distance conversions use factor H3; when SP=N3 (3), factor H4 is used. These are applied in fuel economy calculations at lines 609–615, 641–650, 1008–1047, and the unit conversion subroutines at 6000–6056. The input handler at line 75 also calls subroutine 6000 when the user enters "G" or "I" to pre-convert a volume entry between gallons and liters.
Screen Management
The display uses a string array L$ as a virtual screen buffer. Line 200’s subroutine clears lines N1 to N20 by filling them with S$ (a blank string). The scroll subroutine at lines 730–735 shifts display line L$(N) rightward by 6 character positions (in a loop from position N32 down to N7), blanking the first 6 positions — used to make room for a page title prefix. The save routine at line 700 increments a version counter stored inside L$(N66) before executing SAVE Z$, auto-incrementing the save filename each time.
Notable Techniques
GOTO VAL G$(VAL C$)at line 52 implements a compact string-encoded menu dispatch table, avoiding a long chain ofIFstatements.- The use of named numeric constants (
N=1,N2=2, etc.) throughout reduces token count and aids readability of slice indices. - The deletion routine at lines 120–133 shifts all records above the deleted index down by one and decrements
T, avoiding array re-dimensioning. - The
GOSUB N2,GOSUB N3, etc. idiom dispatches to the subroutines defined at lines 2, 3, etc. (the dispatch table entries), providing named subroutine-like calls. - Line 700 increments the version number embedded in a display string and uses it directly as the
SAVEfilename, creating a simple versioned backup scheme.
Potential Anomalies
- Line 190 loops back unconditionally to line 180 with
GOTO 180— the speed-units setting routine has no exit path visible in this listing, suggesting the escape relies entirely on theIF C$=M$ THEN GOTO Nat line 186. - Lines 420–450 contain several validation branches that are not directly reachable by fall-through from line 418 (
GOTO 400loops back to the top), implying they are entered only via the secondary dispatch at line 462. The branch labels (e.g.,NE,NS,NF) are symbolic line references that must be defined elsewhere in the full program. - Line 1019 reads
L$(N3,N4)to check if a character is"N", suggesting a flag stored directly in the screen buffer — an unconventional but space-efficient technique.
Content
Source Code
1 GOTO 45
2 GOTO 211
3 GOTO 200
4 GOTO 220
5 GOTO 231
6 GOTO 241
7 GOTO 278
8 GOTO 368
9 GOTO 400
10 GOTO 291
11 GOTO 330
45 GOSUB N3
46 FOR I=N TO N10
47 LET L$(I)=L$(N20+I)
48 NEXT I
49 LET B=N17
50 GOSUB N9
51 IF C$=M$ THEN GOTO N
52 GOTO VAL G$(VAL C$)
60 LET K=Z
61 GOSUB BS
64 FOR I=N TO N5
65 LET B=VAL E$(I)
66 LET L$(N4,N6*I)=K$
67 GOSUB N9
68 IF C$=M$ THEN GOTO N
69 LET I$(I)=C$
70 NEXT I
71 LET B=N13
72 LET L$(N4,N32)=K$
73 GOSUB N9
74 IF C$=M$ THEN GOTO N
75 IF C$="G" OR C$="I" THEN GOSUB 6000
78 LET H$( TO N6)=I$(N)
79 LET H$(N7 TO N13)=I$(N2)
80 LET H$(N14 TO N19)=I$(N3)
81 LET H$(N20 TO N23)=I$(N4)
82 LET H$(N24)=I$(N5)
83 LET H$(N25)=A$
84 GOSUB N10
85 GOTO N
90 LET K=N4
91 GOSUB BS
94 FOR I=N1 TO N4
95 LET B=VAL E$(I+N5)
96 LET L$(N4,N6*I)=K$
97 GOSUB N9
98 IF C$=M$ THEN GOTO N
99 LET I$(I)=C$
100 NEXT I
101 LET H$( TO N6)=I$(N)
102 LET H$(N7 TO N13)=I$(N2)
103 LET H$(N14 TO N19)=I$(N3)
104 LET H$(N24)=I$(N4)
105 LET H$(N25)=D$
106 GOSUB N10
107 GOTO N
120 LET K=N8
121 GOSUB BS
123 LET B=N3
124 GOSUB N9
125 IF C$=M$ THEN GOTO N
126 LET J=VAL C$
127 LET T$(J)=T$(J+N)
128 LET J=J+N
129 IF J<T THEN GOTO 127
130 LET T=T-N
132 GOSUB N2
133 GOTO N
150 GOSUB N3
151 LET L$(N)=L$(26)
152 GOSUB 730
153 LET J$=A$
154 GOTO 330
170 GOSUB N3
171 LET L$(N)=L$(N27)
172 GOSUB 730
173 LET J$=D$
174 GOTO 330
180 LET K=N11
181 GOSUB BS
184 LET B=N8
185 GOSUB N9
186 IF C$=M$ THEN GOTO N
187 LET L$(64,N30)=C$
188 LET SP=VAL C$
190 GOTO 180
200 FOR I=N1 TO N20
201 LET L$(I)=S$
202 NEXT I
203 RETURN
211 LET L$(N20)=L$(33)
212 LET B=N12
213 GOSUB N9
214 RETURN
220 LET FT=Z
221 LET Y$="0000000"
222 LET Z$=Y$
223 LET B=Z
224 LET C=B
225 LET D=B
226 LET J=Z
227 LET TP=Z
228 LET Q=Z
229 LET CP=Z
230 RETURN
231 LET L$(K,I)=CHR$ (CODE (L$(K,I))+128)
232 RETURN
241 LET J=J+N
242 IF J>T THEN GOTO 266
243 IF T$(J, TO N6)<U$ THEN GOTO EX
244 IF T$(J, TO N6)>V$ THEN GOTO EX
245 IF W=N OR W=N3 THEN IF T$(J,N25)=D$ THEN GOTO EX
246 IF W=N2 OR W=N4 THEN IF T$(J,N25)=A$ THEN GOTO EX
247 IF T$(J,N25)=A$ THEN IF W=N6 THEN GOTO 253
248 LET O$=A$
249 FOR I=N TO N9
250 IF T$(J,N24)=X$(I) THEN LET O$=X$(I)
251 NEXT I
252 IF O$=A$ THEN GOTO EX
254 LET Z$=T$(J,N7 TO N13)
255 IF VAL Y$=Z THEN LET Y$=Z$
256 IF T$(J,N25)=D$ THEN GOTO 263
258 LET G=VAL T$(J,N14 TO N19)
259 LET C=C+VAL T$(J,N20 TO N23)
260 LET O(N)=O(N)+N
261 LET TP=TP+G
262 GOTO 266
263 LET D=D+VAL T$(J,N14 TO N19)
264 LET O(N2)=O(N2)+N
266 RETURN
278 LET TP=Z
279 LET J=Z
280 GOSUB N6
282 IF J<=T THEN GOTO 280
283 LET MD=VAL Z$-VAL Y$
284 RETURN
291 LET B=N12
292 IF T<95 THEN GOTO 297
293 GOSUB N3
294 LET L$(N2)=L$(36)
295 GOSUB N9
296 GOTO 316
297 LET K=Z
298 LET K=K+N
299 IF T$(K, TO N13)<H$( TO N13) THEN GOTO 298
300 IF H$(N7 TO N13)<T$(K-N,N7 TO N13) THEN GOTO 302
301 IF H$(N7 TO N13)<=T$(K,N7 TO N13) THEN GOTO 309
302 LET L$(37,N20 TO )=H$( TO N13)
303 LET L$(N6)=L$(37)
304 LET L$(38, TO N13)=T$(K, TO N13)
305 LET L$(38,15 TO )=T$(K-N, TO N13)
306 LET L$(N7)=L$(38)
308 GOTO 315
309 LET T=T+N
310 LET J=T
311 LET T$(J)=T$(J-N)
312 LET J=J-N
313 IF J<>K THEN GOTO 311
314 LET T$(K)=H$
315 GOSUB N2
316 RETURN
330 LET L$(N2)=L$(62)
331 FOR I=N TO N9
332 LET L$(I+N2,N11)=STR$ I
333 LET L$(I+N2,N17 TO N22)=P$(I, TO N5)
334 IF J$=D$ THEN LET L$(I+N2,N17 TO N29)=Q$(I, TO N12)
335 NEXT I
336 LET L$(N13)=L$(63)
337 LET L$(N13,N11)=K$
338 LET B=N10
339 GOSUB N9
340 IF C$=M$ THEN GOTO N
341 LET K=VAL C$
342 LET L$(N13,N18)=K$
343 LET B=15
345 GOSUB N9
346 IF C$=M$ THEN GOTO N
347 IF J$=A$ THEN LET P$(K)=C$
348 IF J$=D$ THEN LET Q$(K)=C$
349 IF L$(N,N7)="5" THEN GOTO 150
351 GOTO 170
368 LET C$=" "
369 IF B<Z THEN LET B=B*-N
370 IF M=Z THEN LET B=B+.5
371 IF M=N THEN LET B=B+.05
372 IF M=N2 THEN LET B=B+.005
373 LET B$=STR$ INT B
374 IF LEN B$>L-M THEN GOTO 384
375 LET O$=STR$ (B-INT B+.0001)
376 IF O$(N)="." THEN LET O$=STR$ Z+O$
377 LET C$(L-M+N TO L)=O$(N3 TO )
378 LET E=Z
379 FOR F=N TO LEN B$
380 LET C$(L-M-F+N)=B$(LEN B$-E)
381 LET E=E+N
382 NEXT F
383 RETURN
384 LET C$="99999999"
385 RETURN
400 CLS
401 FOR Y=N TO N20
402 PRINT L$(Y)
403 NEXT Y
404 INPUT R$
407 LET L$(N,N28 TO N32)=S$
408 IF B=N12 THEN GOTO NE
409 IF LEN R$<N THEN GOTO NS
410 LET C$=R$
411 IF LEN R$>N THEN GOTO 460
412 IF C$=M$ THEN GOTO NE
413 IF C$="N" THEN IF B=N16 THEN GOTO NE
414 IF C$=A$ THEN IF B=N9 OR B=N13 OR B=N14 THEN GOTO NE
417 LET L$(N,N28 TO )="[E][R][R][O][R]"
418 GOTO 400
420 IF LEN C$=N THEN IF CODE C$>=N29 THEN IF CODE C$<=36 THEN GOTO NE
421 GOTO NS
423 IF LEN C$<>B THEN GOTO NS
426 GOTO NF
430 IF C$="G" OR C$="I" THEN GOTO NE
431 GOTO NS
433 IF LEN C$<>N THEN GOTO NS
434 IF CODE C$>=N29 THEN IF CODE C$<=34 THEN GOTO NE
435 GOTO NS
436 IF LEN C$<>N THEN GOTO NS
437 IF CODE C$>=N29 THEN IF CODE C$<=37 THEN GOTO NE
438 GOTO NS
440 FOR E=N TO LEN C$
441 IF CODE C$(E)=Z THEN GOTO 443
442 IF CODE C$(E)<N28 OR C$(E)>"Z" THEN GOTO NS
443 NEXT E
444 GOTO NE
445 FOR E=N TO LEN C$
447 IF CODE C$(E)<N28 OR CODE C$(E)>37 THEN GOTO NS
448 NEXT E
449 IF B=N3 THEN IF (VAL C$>=T) OR (VAL C$<=N) THEN GOTO NS
450 GOTO NE
452 IF C$="1" OR C$="2" OR C$="3" THEN GOTO NE
453 GOTO NS
460 LET C$=R$(N2 TO )
461 IF R$(N)<>A$ THEN GOTO NS
462 GOTO VAL G$(B+N9)
470 IF LEN C$<>N4 THEN GOTO NS
471 GOTO NF
480 RETURN
500 LET K=15
501 GOSUB BM
504 GOTO 512
505 LET K=N20
506 GOSUB BM
509 GOTO 512
512 GOSUB N4
513 FOR K=N5 TO N19
514 GOSUB N6
515 IF J>T THEN GOTO CF
516 LET L$(K,N TO N3)=STR$ J
517 LET L$(K,N5 TO N10)=T$(J, TO N6)
518 LET L$(K,N12 TO N18)=T$(J,N7 TO N13)
519 LET L$(K,N20 TO N25)=T$(J,N14 TO N19)
520 IF T$(J,N25)=D$ THEN GOTO 527
521 LET L$(K,N29 TO N32)=T$(J,N20 TO N23)
522 IF SP=N1 OR SP=N3 THEN GOSUB 6050
524 LET I=N32
526 GOSUB N5
527 LET L$(K,N27)=T$(J,N24)
528 LET I=N18
529 GOSUB N5
530 LET I=N24
531 GOSUB N5
532 LET I=N25
533 GOSUB N5
534 NEXT K
537 LET L$(N20)=L$(51)
538 LET B=N16
539 GOSUB N9
540 IF C$=M$ THEN GOTO N
541 FOR I=N5 TO N20
542 LET L$(I)=S$
543 NEXT I
544 GOTO 513
570 LET K=N30
571 GOSUB 651
573 GOSUB N6
575 GOSUB 621
576 LET L$(K, TO N3)=STR$ O(N2)
577 LET L=N7
578 LET M=N2
579 LET B=Z
580 IF Z$=Y$ THEN GOTO 582
581 LET B=(D/(VAL Z$-VAL Y$))*N100
582 GOSUB N8
583 LET L$(K,N24 TO N30)=C$( TO N7)
584 LET B=D/N100
585 GOSUB N8
586 LET L$(K,N14 TO N20)=C$( TO N7)
587 LET I=N29
588 GOSUB N5
589 LET I=N30
590 GOSUB N5
591 GOSUB 595
594 GOTO CF
595 LET I=N12
596 GOSUB N5
597 LET I=N19
598 GOSUB N5
599 LET I=N20
600 GOSUB N5
601 LET B=N12
602 RETURN
603 GOSUB N2
604 GOTO N
609 LET B=C/N10
610 IF SP=N THEN LET B=B/H3
611 IF SP=N3 THEN LET B=B/H4
612 LET L=N6
613 LET M=N
614 GOSUB N8
615 LET L$(K,N22 TO N27)=C$( TO N6)
616 RETURN
621 LET B=MD/N10
622 LET L=N7
623 LET M=N
624 GOSUB N8
625 LET L$(K,N6 TO N12)=C$( TO N7)
626 RETURN
631 LET L=N7
632 LET M=N2
633 LET B=TP/N100
634 GOSUB N8
635 LET L$(K,N14 TO N20)=C$( TO N7)
636 RETURN
641 LET B=Z
642 IF C=Z THEN GOTO 646
643 LET B=MD/C
644 IF SP=N THEN LET B=B*H3
645 IF SP=N3 THEN LET B=B*H4
646 LET L=N4
647 LET M=N
648 GOSUB N8
649 LET L$(K,N29 TO N32)=C$( TO N4)
650 RETURN
651 GOSUB BM
652 GOSUB N4
653 GOSUB N7
657 LET K=N5
658 RETURN
700 LET L$(N66,N10 TO N13)=STR$ (VAL L$(N66,N10 TO N13)+N)
701 LET Z$=L$(N66,N TO N13)
703 SAVE Z$
704 CLS
705 PRINT L$(N66);S$;S$;L$(N67);S$;S$;L$(N30)
706 STOP
707 GOTO N
710 GOSUB BM
711 GOSUB 730
712 RETURN
719 GOSUB N3
720 FOR J=N TO N9
721 LET I=VAL N$((K+J)*N2-N TO (K+J)*N2)
722 IF I=99 THEN GOTO 725
723 LET L$(J)=L$(I)
724 NEXT J
725 LET J=Z
726 RETURN
730 FOR J=N32 TO N7 STEP -N
731 LET L$(N,J)=L$(N,J-N6)
732 NEXT J
733 LET L$(N, TO N6)=S$
735 RETURN
800 GOSUB 1125
801 LET B=N11
802 GOSUB N9
803 IF C$=M$ THEN GOTO N
804 LET W=VAL C$
805 IF W<>N6 THEN GOTO 823
806 LET L$(N9,N)=K$
807 LET B=N14
808 GOSUB N9
809 IF C$=M$ THEN GOTO N
810 LET B=N14
811 IF C$<>A$ THEN LET U=VAL C$/N100
812 LET L$(N10,N)=K$
813 IF C$<>A$ THEN LET L$(N9,N4 TO N7)=C$
814 GOSUB N9
815 IF C$=M$ THEN GOTO N
816 IF C$<>A$ THEN LET V=VAL C$/N10
817 IF C$<>A$ THEN LET L$(N10,N4 TO N7)=C$
818 LET L$(N68)=L$(N9)
819 LET L$(N69)=L$(N10)
823 LET L$(N11,N)=K$
824 LET B=N6
825 GOSUB N9
826 IF C$=M$ THEN GOTO N
827 LET U$=C$
828 LET L$(N11,15 TO N20)=U$
829 GOSUB N9
830 IF C$=M$ THEN GOTO N
831 LET L$(N11,N25 TO N30)=C$
832 LET V$=C$
833 LET L$(N12,N)=K$
834 FOR I=N TO N9
835 LET B=N9
836 GOSUB N9
837 IF C$=M$ THEN GOTO N
838 IF C$=A$ THEN GOTO 842
839 LET X$(I)=C$
840 LET L$(N12,N2*I+N13)=C$
841 NEXT I
842 LET I=N67
843 IF W=N6 THEN LET I=I+N2
844 LET L$(I+N)=L$(N11)
845 LET L$(I+N2)=L$(N12)
846 GOTO W+846
847 GOTO 500
848 GOTO 505
849 GOTO 5551
850 GOTO 570
851 GOTO 900
852 GOTO 974
900 LET K=35
901 GOSUB BM
905 GOSUB N4
906 GOSUB N7
910 LET B=D/N100
911 LET L=N7
912 LET M=N2
913 GOSUB N8
914 LET L$(N5,N13 TO N19)=C$( TO N7)
915 LET B=TP/N100
916 GOSUB N8
917 LET L$(N6,N13 TO N19)=C$( TO N7)
918 LET B=(TP+D)/N100
919 GOSUB N8
920 LET L$(N7,N13 TO N19)=C$( TO N7)
921 IF MD=Z THEN GOTO 933
922 LET B=D/(MD/N100)
923 GOSUB N8
924 LET L$(N5,N23 TO N29)=C$( TO N7)
926 LET B=TP/(MD/N100)
927 GOSUB N8
928 LET L$(N6,N23 TO N29)=C$
930 LET B=(TP+D)/(MD/N100)
931 GOSUB N8
932 LET L$(N7,N23 TO N29)=C$( TO N7)
933 FOR K=N5 TO N7
934 FOR J=N TO N2
935 LET I=J+N17
936 GOSUB N5
937 LET I=J+N27
938 GOSUB N5
939 NEXT J
940 NEXT K
941 GOTO CF
974 GOSUB N4
975 LET K=43
981 GOSUB BM
982 FOR X=N7 TO N19
983 GOSUB N6
984 IF J>=T THEN GOTO 998
985 IF T$(J,N25)=A$ THEN GOSUB 1008
986 IF T$(J,N25)=D$ THEN GOSUB 1050
988 NEXT X
989 LET L$(X)=L$(51)
990 LET B=N16
991 GOSUB N9
992 IF C$=M$ THEN GOTO N
994 FOR X=N7 TO N20
995 LET L$(X)=S$
996 NEXT X
997 GOTO 982
998 LET L$(X+N)="TOTAL COST=$"+STR$ CP
1000 GOTO CF
1008 LET L$(X, TO N6)=T$(J, TO N6)
1009 LET B=VAL T$(J,N20 TO N23)
1010 IF B=Z THEN GOTO 1014
1011 LET B=((VAL Z$-P)/B)
1012 IF SP=N THEN LET B=B/H3
1013 IF SP=N3 THEN LET B=B/H4
1014 LET R=B
1015 LET L=N4
1016 LET M=N
1017 GOSUB N8
1018 LET L$(X,N8 TO N12)=C$( TO N4)
1019 IF L$(N3,N4)<>"N" THEN LET Q=V
1020 LET B=Z
1021 IF Q<>Z THEN LET B=((R-Q)/Q)*N100
1022 LET L=N3
1023 LET M=N
1024 GOSUB N8
1025 LET L$(X,N14 TO N16)=C$( TO N3)
1026 LET L$(X,N13)="+"
1027 IF Q>R THEN LET L$(X,N13)="-"
1028 LET B=(VAL Z$-P)/N10
1029 LET L=N6
1030 LET M=N
1031 GOSUB N8
1032 LET L$(X,N18 TO N23)=C$( TO N6)
1033 LET B=G/N100
1034 IF L$(N2,N4)<>"N" THEN IF L$(N3,N4)="N" THEN GOSUB 1061
1035 IF L$(N2,N4)<>"N" THEN IF L$(N3,N4)<>"N" THEN GOSUB 1070
1036 IF L$(N2,N4)<>"N" THEN LET CP=CP+B
1037 IF L$(N2,N4)="N" THEN LET CP=TP/N100
1038 LET L=N5
1039 LET M=N2
1040 GOSUB N8
1041 LET L$(X,N25 TO N29)=C$( TO N5)
1042 LET P=VAL Z$
1043 LET Q=R
1047 LET FT=N
1048 GOTO 1080
1050 LET L$(N60, TO N6)=T$(J, TO N6)
1051 LET L$(N60,N17)=T$(J,N24)
1052 LET L$(N60,N19 TO )=Q$(VAL T$(J,N24))
1053 LET L$(X)=L$(N60)
1054 RETURN
1061 LET B=VAL T$(J,N20 TO N23)/N10
1062 IF SP=N THEN LET B=B/H3
1063 IF SP=N3 THEN LET B=B/H4
1064 LET B=B*U
1065 RETURN
1070 LET B=U/V
1071 IF FT=Z THEN LET B=Z
1072 IF FT<>Z THEN LET B=B*VAL L$(X,N18 TO N23)/N10
1073 IF SP=N THEN LET B=B/H3
1074 IF SP=N3 THEN LET B=B/H4
1075 RETURN
1080 LET K=X
1081 LET I=N11
1082 GOSUB N5
1083 LET I=N16
1084 GOSUB N5
1085 LET I=N23
1086 GOSUB N5
1087 LET I=28
1088 GOSUB N5
1089 LET I=N29
1090 GOSUB N5
1091 RETURN
1125 GOSUB N3
1126 LET L$(N)=L$(N24)
1127 GOSUB 730
1128 FOR K=N TO N11
1129 LET L$(K+N)=L$(38+K)
1130 NEXT K
1131 DIM X$(N9)
1132 DIM O(N2)
1133 LET C=Z
1134 LET D=Z
1135 LET G=Z
1136 LET P=Z
1137 LET Q=Z
1138 LET R=Z
1139 LET U=Z
1140 LET V=Z
1141 RETURN
5551 LET K=N25
5552 GOSUB 651
5553 GOSUB 609
5554 GOSUB 621
5555 GOSUB 631
5556 GOSUB 641
5557 LET L$(K, TO N3)=STR$ O(N)
5558 LET I=N32
5559 GOSUB N5
5560 LET I=N27
5561 GOSUB N5
5562 GOSUB 595
5565 GOTO CF
6000 LET M=H3/N10
6001 IF C$="I" THEN LET M=H4/N10
6005 LET B=VAL I$(N4)*M
6006 LET M=N
6007 LET L=N4
6008 LET C$="0000"
6009 GOSUB 370
6010 LET I$(N4)=C$( TO N4)
6011 RETURN
6050 LET B=VAL T$(J,N20 TO N23)/(H3*N10)
6051 IF SP=N3 THEN LET B=VAL T$(J,N20 TO N23)/(H4*N10)
6052 LET L=N4
6053 LET M=N
6054 GOSUB N8
6055 LET L$(K,N29 TO N32)=C$
6056 RETURN
Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.

