Computer Coach

Products: Computer Coach
Date: 1983
Type: Cassette
Platform(s): TS 1000
Tags: Education

Computer Coach is an interactive educational program that teaches introductory microcomputer concepts such as hardware, software, CPU, RAM, ROM, peripherals, and mass storage. The program uses block graphics extensively to draw animated diagrams of a computer system, including representations of a keyboard, monitor, tape drive, disk drive, and internal components. A string-encoded coordinate system at lines 1300–1330 parses six-character strings via VAL to extract X, Y, and length parameters, which are then used by subroutines at lines 1100 and 1200 to draw vertical and horizontal lines of solid block characters. The program uses PEEK and POKE on address 16514 to detect which “side” of a two-part cassette tape sequence is loaded, branching to different lesson content accordingly. FAST and SLOW mode switching is used throughout to balance display speed during graphics rendering.


Program Analysis

Program Structure

The program is organized as a collection of subroutines called from a main narrative flow. Execution begins at line 2000 via the GOTO 2000 at line 2. The listing appears twice in the source, representing two sides of a cassette tape; a PEEK/POKE mechanism at lines 2096–2099 and 3000 distinguishes which side is active. Side 1 (when PEEK 16514 <> 61) prints “END OF SIDE 1” (actually “END OF SIDE 2” in the second copy) and stops, while Side 2 continues into the full lesson sequence. The overall lesson flow is linear, advancing through screens with PAUSE delays and loops that repeat label-flashing animations before moving on.

Subroutine Map

LinesPurpose
200–212Animated “bee” character, loops T*3.3 times
300–330Draws full computer diagram (D=1 then D=7) via subroutine 800, then falls through to 850
490Orphaned PAUSE 4000 (unreachable, dead code)
500–530Plots a circle of radius R centered at (24.5, 15.5)
687Orphaned NEXT I (unreachable, dead code)
800–890Master diagram renderer; draws components depending on level D (0–7)
900–971Label-flash subroutines: inverse then normal text for each component
1100–1140Draw vertical double-wide bar using parsed A$
1200–1240Draw horizontal double-tall bar using parsed A$
1300–1330Parse A$ into X, Y, L coordinates
1400–1430Print a full 32-character row of solid blocks
2000–2099Title screen builder and side-detection logic
3000–4700Main lesson sequence (Side 2 content)

String-Encoded Coordinate System

A compact drawing convention is used throughout the title screen construction (lines 2010–2082). The string variable A$ holds a six-digit string, which subroutine 1300 parses using VAL (A$(1 TO 2)), VAL (A$(3 TO 4)), and VAL (A$(5 TO 6)) to extract column (X), row (Y), and length (L) respectively. Subroutine 1100 then draws a vertical bar of L double-wide block characters, and subroutine 1200 draws a horizontal bar two characters tall. Together these are used to render large decorative letterforms on the title screen.

Layered Diagram Renderer (Subroutine 800)

The subroutine at line 800 draws a computer system diagram in up to eight progressive layers controlled by the variable D. Each layer falls through via a cascade of IF D<N THEN GOTO 880 guards, where 880 is the exit point. This allows the same subroutine to render the diagram at any desired level of completeness simply by setting D before calling it. The layers in order are: computer outline (D≥1), keyboard dots (D≥1), CPU box (D≥2), RAM box (D≥3), ROM box (D≥4), monitor/TV (D≥5), tape drive (D≥6), and disk drive (D≥7).

Label-Flash Animation Technique

Subroutines 900 through 971 each perform a two-step label animation: first printing the label text surrounded by inverse-video bracket characters (simulated here as [X] sequences), then immediately overprinting with normal characters at the same screen position. When called repeatedly in a loop (e.g., lines 4110–4160), this produces a flashing highlight effect that draws attention to the named component on the diagram. Each subroutine is structured identically: one PRINT AT with the flashing version, another overprinting with plain text, then RETURN.

FAST/SLOW Mode Usage

The program makes deliberate use of FAST and SLOW mode switching. FAST is entered before complex graphics construction (e.g., lines 2005, 801) to speed up screen drawing, and SLOW is restored at line 880 before returning from the diagram renderer, and at line 2095 after title construction. This pattern ensures that graphics are drawn quickly while interactive and animated portions remain in SLOW mode for smooth display.

Side-Detection via PEEK/POKE

The program uses memory address 16514 as a persistent flag across cassette loads. At line 2096, PEEK (16514)=61 checks whether the second side has already been run. If not, the program writes 61 to that address and stops with a “END OF SIDE” message. On the second-side load, the value is found to be 61, so execution proceeds to line 3000, which then writes 63 to reset the flag. This is a simple but effective two-state machine using a RAM location as non-volatile (within a session) storage.

Circle Plotting Subroutine

Lines 500–530 implement a parametric circle plotter. It iterates I from 0 to 2*PI in steps of 1/R, plotting each point at (INT(15.5+R*COS(I)), INT(24.5+R*SIN(I))). This is used during the RAM lesson to illustrate random access (a circular arrangement) versus sequential access. The step size 1/R ensures approximately one plot per pixel of circumference regardless of radius, and two circles (R=15 and R=8) are drawn at lines 4672–4678.

Notable Bugs and Anomalies

  • Lines 490 and 687 are unreachable dead code. Line 490 contains a lone PAUSE 4000 and line 687 a lone NEXT I with no matching FOR, neither of which is ever jumped to.
  • Line 330 uses GOTO 850 rather than GOSUB 850 / RETURN, meaning subroutine 300 never returns to its caller; it falls through line 850 and then hits line 880’s SLOW and RETURN, which pops the original GOSUB 300 return address. This is intentional — it effectively sets D=7 and draws the full diagram before returning.
  • Line 4620 uses GOSUB 900+10*J, which is a computed GOSUB expression — a valid but unusual construct relying on operator precedence to evaluate the arithmetic before the jump.
  • The second copy of the listing (the “Side 2” version) at line 2098 prints “END OF SIDE 2” whereas the first copy prints “END OF SIDE 1”, confirming these are two separate but nearly identical programs loaded from opposite sides of a tape.
  • Line 4455 contains the misspelling “PERIPHRALS” (should be “PERIPHERALS”) in the on-screen text.

Content

Appears On

Related Products

Teaches the fundamentals of a computer system, its hardware, software and peripherals. Self-instruction cassette allows you to learn at your...

Related Articles

Related Content

Image Gallery

Source Code

   1 REM X
   2 GOTO 2000
 200 PRINT AT 0,0;" V "
 202 PRINT "▀O▀"
 206 FOR I=0 TO T*3.3
 208 PRINT AT 1,0;"[~~]O[~~]";AT 1,0;"▄O▄";AT 1,0;"[,,]O[,,]";AT 1,0;"▀O▀"
 210 NEXT I
 212 RETURN
 300 LET D=1
 310 GOSUB 800
 320 LET D=7
 325 FAST
 330 GOTO 850 
 490 PAUSE 4000
 500 FOR I=0 TO 2*PI STEP 1/R
 510 PLOT INT (15.5+R*COS (I)),INT (24.5+R*SIN (I))
 520 NEXT I
 530 RETURN
 687 NEXT I
 800 CLS
 801 FAST
 802 PRINT AT 8,0;"▛▀▀▀▀▀▀▀▀▀▀▀▜";AT 9,0;"▌TIMEX";AT 9,12;"▐";AT 10,0;"▌ 1000";AT 10,12;"▐"
 803 FOR I=11 TO 19
 804 PRINT AT I,0;"▌";AT I,12;"▐"
 805 NEXT I
 806 PRINT AT 20,0;"▙▄▄▄▄▄▄▄▄▄▄▄▟"
 807 IF D<1 THEN GOTO 880
 810 FOR I=16 TO 19
 811 FOR J=1 TO 10
 812 PRINT AT I,J;"▗"
 813 NEXT J
 814 NEXT I
 815 IF D<2 THEN GOTO 880
 820 PRINT AT 13,1;"▛▀▀▀▜";AT 14,1;"▌CPU▐";AT 15,1;"▙▄▄▄▟"
 821 IF D<3 THEN GOTO 880
 830 PRINT AT 13,7;"▛▀▀▀▜";AT 14,7;"▌RAM▐";AT 15,7;"▙▄▄▄▟"
 836 IF D<4 THEN GOTO 880
 840 PRINT AT 9,7;"▛▀▀▀▜";AT 10,7;"▌ROM▐";AT 11,7;"▙▄▄▄▟"
 846 IF D<5 THEN GOTO 880
 850 PRINT AT 0,1;"▛▀▀▀▀▀▀▀▀▀▜";AT 1,1;"▌▟▀▀▀▀▀▙ O▐"
 851 FOR I=2 TO 4
 852 PRINT AT I,1;"▌▌";AT I,8;"▐ .▐"
 853 NEXT I
 854 PRINT AT 5,1;"▌▜▄▄▄▄▄▛ .▐";AT 6,1;"▙▄▄▄▄▄▄▄▄▄▟"
 859 IF D<6 THEN GOTO 880
 860 PRINT AT 8,14;"▛▀▀▀▀▀▀▜"
 861 FOR I=9 TO 13
 862 PRINT AT I,14;"▌▒▒▒▒▒▒▐"
 863 NEXT I
 864 PRINT AT 14,14;"▌~~~~~~~~~~~~▐"
 865 FOR I=15 TO 17
 866 PRINT AT I,14;"▌██████▐"
 867 NEXT I
 868 PRINT AT 18,14;"▙▄▄▄▄▄▄▟";AT 19,14;"▌▐ ▌▐ ▌▐";AT 20,14;"▙▟▄▙▟▄▙▟"
 869 IF D<7 THEN GOTO 880
 870 PRINT AT 16,23;"▄▄▄▄▄▄▄▄▄";AT 17,23;"▌";AT 17,31;"▐";AT 18,23;"▌▄▄▄█▄▄▄▐";AT 19,23;"▌   ▀   ▐";AT 20,23;"▙▄▄▄▄▄▄▄▟"
 880 SLOW
 890 RETURN
 900 PRINT AT 9,1;"[T][I][M][E][X]";AT 10,2;"[1][0][0][0]";AT 9,1;"TIMEX";AT 10,2;"1000"
 901 RETURN
 910 PRINT AT 18,2;"[K][E][Y][B][O][A][R][D]";AT 18,2;"KEYBOARD"
 911 RETURN
 920 PRINT AT 14,2;"[C][P][U]";AT 14,2;"CPU"
 921 RETURN
 930 PRINT AT 14,8;"[R][A][M]";AT 14,8;"RAM"
 931 RETURN
 940 PRINT AT 10,8;"[R][O][M]";AT 10,8;"ROM"
 941 RETURN
 950 PRINT AT 3,3;"█[T]█[V]█";AT 3,3;" T V "        
 951 RETURN
 960 PRINT AT 16,16;"TAPE";AT 16,16;"[T][A][P][E]"
 961 RETURN
 970 PRINT AT 18,25;"[D][I][S][K]";AT 19,25;"[D][R][I][V][E]";AT 18,25;"DISK";AT 19,25;"DRIVE"
 971 RETURN
 1100 GOSUB 1300
 1110 FOR I=Y TO Y+L-1
 1120 PRINT AT I,X;"██"
 1130 NEXT I
 1140 RETURN
 1200 GOSUB 1300
 1210 FOR I=X TO X+L-1
 1220 PRINT AT Y,I;"█";AT Y+1,I;"█"
 1230 NEXT I
 1240 RETURN
 1300 LET X=VAL (A$(1 TO 2))
 1310 LET Y=VAL (A$(3 TO 4))
 1320 LET L=VAL (A$(5 TO 6))
 1330 RETURN
 1400 FOR I=1 TO 32
 1410 PRINT "█";
 1420 NEXT I
 1430 RETURN
 2000 CLS
 2005 FAST
 2010 LET A$="010112"
 2012 GOSUB 1100
 2014 LET A$="030103"
 2016 GOSUB 1200
 2018 LET A$="030604"
 2020 GOSUB 1200
 2022 LET A$="031103"
 2024 GOSUB 1200
 2026 LET A$="060210"
 2028 GOSUB 1100
 2030 PRINT AT 1,6;"▙";AT 2,7;"▙";AT 3,5;"▜";AT 5,5;"▟";AT 6,7;"▘";AT 7,7;"▖";AT 8,5;"▜";AT 10,5;"▟";AT 11,7;"▛";AT 12,6;"▛"
 2032 LET A$="090112"
 2034 GOSUB 1100
 2036 LET A$="110105"
 2038 GOSUB 1200
 2040 LET A$="110603"
 2042 GOSUB 1200
 2044 LET A$="111105"
 2046 GOSUB 1200
 2048 LET A$="180105"
 2050 GOSUB 1200
 2052 LET A$="180605"
 2054 GOSUB 1200
 2056 LET A$="181105"
 2058 GOSUB 1200
 2060 LET A$="220202"
 2062 GOSUB 1100
 2064 LET A$="170205"
 2066 GOSUB 1100
 2068 LET A$="220705"
 2070 GOSUB 1100
 2072 LET A$="171002"
 2074 GOSUB 1100
 2076 PRINT AT 1,17;"▗";AT 1,23;"▖";AT 3,19;"▛";AT 3,21;"▜";AT 5,19;"▙";AT 6,23;"▖";AT 7,17;"▝";AT 8,21;"▜";AT 10,19;"▙";AT 10,21;"▟";AT 12,17;"▝";AT 12,23;"▘"
 2078 LET A$="250106"
 2080 GOSUB 1200
 2081 LET A$="270310"
 2082 GOSUB 1100
 2083 PRINT 
 2084 FOR J=1 TO 4
 2085 GOSUB 1400
 2086 NEXT J 
 2087 PRINT AT 14,0;"[B][O][S][T][O][N]";AT 15,8;"[E][L][E][C][T][R][O][N][I][C]";AT 16,16;"[S][Y][S][T][E][M][S]";AT 17,24;"[T][R][A][I][N][I][N][G]"
 2092 PRINT "█INTRODUCTION TO MICROCOMPUTERS█"
 2094 GOSUB 1400
 2095 SLOW
 2096 IF PEEK (16514)=61 THEN GOTO 3000
 2097 POKE 16514,61
 2098 PRINT TAB 9;"END OF SIDE 1"
 2099 STOP
 3000 POKE 16514,63
 3010 PRINT " PRESS [E][N][T][E][R] WHEN MUSIC BEGINS"
 3020 IF INKEY$ ="" THEN GOTO 3020
 3030 GOSUB 300
 3040 PAUSE 570
 3050 PRINT AT 21,0;"COMPUTERS CAN BE FUN"
 3080 FOR I=0 TO 90
 3090 PRINT AT 3,3;"[>][Z][A][P][<]";AT 3,3;">ZAP<"
 4000 NEXT I
 4010 CLS
 4020 PRINT AT 1,3;"<-THE BUZZWORD BEE";AT 2,5;"WILL TELL YOU ABOUT";AT 4,0;"[B][U][Z][Z][W][O][R][D][S] - NICKNAMES FOR SOME  TECHNICAL TERMS";AT 7,0;"A MEANINGLESS BUZZ TO OUTSIDERS"
 4050 LET T=30
 4060 GOSUB 200
 4070 GOSUB 300
 4080 PRINT AT 21,0;"[S][Y][S][T][E][M] IS PARTS WORKING TOGETHER";
 4090 PAUSE 4230
 4100 PRINT AT 21,0;"COMPUTER PARTS ARE ALL INSIDE   ";
 4110 FOR I=0 TO 3
 4120 GOSUB 920
 4130 GOSUB 930
 4140 GOSUB 940
 4150 NEXT I
 4160 LET A$="   "
 4170 PRINT AT 10,8;A$;AT 14,2;A$;AT 14,8;A$
 4180 PRINT AT 21,0;"VISIBLE PARTS ARE [P][E][R][I][P][H][E][R][A][L][S]";
 4190 FOR I=1 TO 3
 4200 GOSUB 910
 4210 GOSUB 950
 4220 GOSUB 960
 4230 GOSUB 970
 4240 NEXT I
 4250 CLS
 4260 PRINT AT 4,0;"PERIPHERALS - THE DEVICES";AT 5,0;"ATTACHED TO A COMPUTER";AT 7,0;"I/O DEVICES DO [I]NPUT AND [O]UTPUT";AT 9,0;"COMPUTER + PERIPHERALS = SYSTEM"
 4270 LET T=19
 4280 GOSUB 200
 4290 LET D=0
 4300 GOSUB 800
 4310 PRINT AT 21,0;"KEYBOARD IS INPUT PERIPHERAL";
 4320 FOR I=1 TO 10
 4330 GOSUB 910
 4340 NEXT I
 4350 GOSUB 810
 4360 PRINT AT 21,0;"TV SCREEN IS OUTPUT PERIPHERAL"
 4365 FOR I=1 TO 10
 4370 GOSUB 950
 4380 NEXT I
 4390 GOSUB 850
 4400 PRINT AT 21,0;"THE BRAIN CONTROLS EVERYTHING "
 4410 GOSUB 820
 4420 FOR I=1 TO 66
 4425 GOSUB 920
 4430 NEXT I
 4440 CLS
 4450 PRINT AT 4,0;"CPU - [C]ENTRAL [P]ROCESSING [U]NIT";AT 6,0;"THE MAIN BRAIN OF THE COMPUTER"
 4460 LET T=40
 4470 GOSUB 200
 4480 LET D=3
 4490 GOSUB 800
 4500 PRINT AT 21,0;"THE BRAIN NEEDS MEMORY"
 4510 FOR I=1 TO 80
 4520 GOSUB 930
 4530 NEXT I
 4540 PRINT AT 4,0;"RAM - [R]ANDOM [A]CCESS [M]EMORY"
 4550 LET T=20
 4560 GOSUB 200
 4570 CLS
 4580 PRINT "SEQUENTIAL ACCESS  RANDOM ACCESSDEPENDS ON ORDER    DOES NOT"
 4590 FOR I=1 TO 9
 4600 LET X=INT (7.5+6*COS (PI/6*(I+1)))
 4610 LET Y=INT (9.5-6*SIN (PI/6*(I+1)))
 4620 PRINT AT Y,X;CHR$ (156+I)
 4630 LET Y=INT ((I-1)/3)
 4640 LET X=I-3*Y
 4650 PRINT AT 4+2*Y,20+2*X;CHR$ (156+I)
 4660 NEXT I
 4670 PRINT AT 12,12;"[0]";AT 10,24;"[0]"
 4672 LET R=15
 4674 GOSUB 500
 4676 LET R=8
 4678 GOSUB 500
 4680 FOR I=43 TO 54
 4681 PLOT I,37
 4682 PLOT I,20
 4683 NEXT I
 4684 FOR I=20 TO 37
 4685 PLOT 42,I
 4686 PLOT 55,I
 4687 NEXT I
 4690 PAUSE 180
 4700 GOTO 2000
 
   1 REM X
   2 GOTO 2000
 200 PRINT AT 0,0;" V "
 202 PRINT "▀O▀"
 206 FOR I=0 TO T*3.3
 208 PRINT AT 1,0;"[~~]O[~~]";AT 1,0;"▄O▄";AT 1,0;"[,,]O[,,]";AT 1,0;"▀O▀"
 210 NEXT I
 212 RETURN
 300 LET D=1
 310 GOSUB 800
 320 LET D=7
 325 FAST
 330 GOTO 850 
 490 PAUSE 4000
 500 FOR I=0 TO 2*PI STEP 1/R
 510 PLOT INT (15.5+R*COS (I)),INT (24.5+R*SIN (I))
 520 NEXT I
 530 RETURN
 687 NEXT I
 800 CLS
 801 FAST
 802 PRINT AT 8,0;"▛▀▀▀▀▀▀▀▀▀▀▀▜";AT 9,0;"▌TIMEX";AT 9,12;"▐";AT 10,0;"▌ 1000";AT 10,12;"▐"
 803 FOR I=11 TO 19
 804 PRINT AT I,0;"▌";AT I,12;"▐"
 805 NEXT I
 806 PRINT AT 20,0;"▙▄▄▄▄▄▄▄▄▄▄▄▟"
 807 IF D<1 THEN GOTO 880
 810 FOR I=16 TO 19
 811 FOR J=1 TO 10
 812 PRINT AT I,J;"▗"
 813 NEXT J
 814 NEXT I
 815 IF D<2 THEN GOTO 880
 820 PRINT AT 13,1;"▛▀▀▀▜";AT 14,1;"▌CPU▐";AT 15,1;"▙▄▄▄▟"
 821 IF D<3 THEN GOTO 880
 830 PRINT AT 13,7;"▛▀▀▀▜";AT 14,7;"▌RAM▐";AT 15,7;"▙▄▄▄▟"
 836 IF D<4 THEN GOTO 880
 840 PRINT AT 9,7;"▛▀▀▀▜";AT 10,7;"▌ROM▐";AT 11,7;"▙▄▄▄▟"
 846 IF D<5 THEN GOTO 880
 850 PRINT AT 0,1;"▛▀▀▀▀▀▀▀▀▀▜";AT 1,1;"▌▟▀▀▀▀▀▙ O▐"
 851 FOR I=2 TO 4
 852 PRINT AT I,1;"▌▌";AT I,8;"▐ .▐"
 853 NEXT I
 854 PRINT AT 5,1;"▌▜▄▄▄▄▄▛ .▐";AT 6,1;"▙▄▄▄▄▄▄▄▄▄▟"
 859 IF D<6 THEN GOTO 880
 860 PRINT AT 8,14;"▛▀▀▀▀▀▀▜"
 861 FOR I=9 TO 13
 862 PRINT AT I,14;"▌▒▒▒▒▒▒▐"
 863 NEXT I
 864 PRINT AT 14,14;"▌~~~~~~~~~~~~▐"
 865 FOR I=15 TO 17
 866 PRINT AT I,14;"▌██████▐"
 867 NEXT I
 868 PRINT AT 18,14;"▙▄▄▄▄▄▄▟";AT 19,14;"▌▐ ▌▐ ▌▐";AT 20,14;"▙▟▄▙▟▄▙▟"
 869 IF D<7 THEN GOTO 880
 870 PRINT AT 16,23;"▄▄▄▄▄▄▄▄▄";AT 17,23;"▌";AT 17,31;"▐";AT 18,23;"▌▄▄▄█▄▄▄▐";AT 19,23;"▌   ▀   ▐";AT 20,23;"▙▄▄▄▄▄▄▄▟"
 880 SLOW
 890 RETURN
 900 PRINT AT 9,1;"[T][I][M][E][X]";AT 10,2;"[1][0][0][0]";AT 9,1;"TIMEX";AT 10,2;"1000"
 901 RETURN
 910 PRINT AT 18,2;"[K][E][Y][B][O][A][R][D]";AT 18,2;"KEYBOARD"
 911 RETURN
 920 PRINT AT 14,2;"[C][P][U]";AT 14,2;"CPU"
 921 RETURN
 930 PRINT AT 14,8;"[R][A][M]";AT 14,8;"RAM"
 931 RETURN
 940 PRINT AT 10,8;"[R][O][M]";AT 10,8;"ROM"
 941 RETURN
 950 PRINT AT 3,3;"█[T]█[V]█";AT 3,3;" T V "        
 951 RETURN
 960 PRINT AT 16,16;"TAPE";AT 16,16;"[T][A][P][E]"
 961 RETURN
 970 PRINT AT 18,25;"[D][I][S][K]";AT 19,25;"[D][R][I][V][E]";AT 18,25;"DISK";AT 19,25;"DRIVE"
 971 RETURN
 1100 GOSUB 1300
 1110 FOR I=Y TO Y+L-1
 1120 PRINT AT I,X;"██"
 1130 NEXT I
 1140 RETURN
 1200 GOSUB 1300
 1210 FOR I=X TO X+L-1
 1220 PRINT AT Y,I;"█";AT Y+1,I;"█"
 1230 NEXT I
 1240 RETURN
 1300 LET X=VAL (A$(1 TO 2))
 1310 LET Y=VAL (A$(3 TO 4))
 1320 LET L=VAL (A$(5 TO 6))
 1330 RETURN
 1400 FOR I=1 TO 32
 1410 PRINT "█";
 1420 NEXT I
 1430 RETURN
 2000 CLS
 2005 FAST
 2010 LET A$="010112"
 2012 GOSUB 1100
 2014 LET A$="030103"
 2016 GOSUB 1200
 2018 LET A$="030604"
 2020 GOSUB 1200
 2022 LET A$="031103"
 2024 GOSUB 1200
 2026 LET A$="060210"
 2028 GOSUB 1100
 2030 PRINT AT 1,6;"▙";AT 2,7;"▙";AT 3,5;"▜";AT 5,5;"▟";AT 6,7;"▘";AT 7,7;"▖";AT 8,5;"▜";AT 10,5;"▟";AT 11,7;"▛";AT 12,6;"▛"
 2032 LET A$="090112"
 2034 GOSUB 1100
 2036 LET A$="110105"
 2038 GOSUB 1200
 2040 LET A$="110603"
 2042 GOSUB 1200
 2044 LET A$="111105"
 2046 GOSUB 1200
 2048 LET A$="180105"
 2050 GOSUB 1200
 2052 LET A$="180605"
 2054 GOSUB 1200
 2056 LET A$="181105"
 2058 GOSUB 1200
 2060 LET A$="220202"
 2062 GOSUB 1100
 2064 LET A$="170205"
 2066 GOSUB 1100
 2068 LET A$="220705"
 2070 GOSUB 1100
 2072 LET A$="171002"
 2074 GOSUB 1100
 2076 PRINT AT 1,17;"▗";AT 1,23;"▖";AT 3,19;"▛";AT 3,21;"▜";AT 5,19;"▙";AT 6,23;"▖";AT 7,17;"▝";AT 8,21;"▜";AT 10,19;"▙";AT 10,21;"▟";AT 12,17;"▝";AT 12,23;"▘"
 2078 LET A$="250106"
 2080 GOSUB 1200
 2081 LET A$="270310"
 2082 GOSUB 1100
 2083 PRINT 
 2084 FOR J=1 TO 4
 2085 GOSUB 1400
 2086 NEXT J 
 2087 PRINT AT 14,0;"[B][O][S][T][O][N]";AT 15,8;"[E][L][E][C][T][R][O][N][I][C]";AT 16,16;"[S][Y][S][T][E][M][S]";AT 17,24;"[T][R][A][I][N][I][N][G]"
 2092 PRINT "█INTRODUCTION TO MICROCOMPUTERS█"
 2094 GOSUB 1400
 2095 SLOW
 2096 IF PEEK (16514)=61 THEN GOTO 3000
 2097 POKE 16514,61
 2098 PRINT TAB 9;"END OF SIDE 2"
 2099 STOP
 3000 POKE 16514,63
 3010 PRINT " PRESS [E][N][T][E][R] WHEN MUSIC BEGINS"
 3020 IF INKEY$ ="" THEN GOTO 3020
 3030 GOSUB 300
 3040 PRINT AT 21,0;"THIS IS ALL [H][A][R][D][W][A][R][E]"
 3060 FOR I=1 TO 11
 3070 FOR J=0 TO 7
 3080 GOSUB (900+10*J)
 3090 NEXT J
 4000 NEXT I
 4010 CLS
 4020 PRINT AT 4,0;"[H][A][R][D][W][A][R][E] - THE PHYSICAL PARTS OFTHE SYSTEM";AT 7,0;"[S][O][F][T][W][A][R][E] - INSTRUCTIONS FOR THE HARDWARE (CPU) TO FOLLOW";AT 10,0;"PIECES OF SOFTWARE ARE [P][R][O][G][R][A][M][S]"
 4050 LET T=43
 4060 GOSUB 200
 4070 CLS
 4080 PRINT TAB 5;"THIS EVENINGS PROGRAM:";AT 2,0;"8:00 STAGE BAND";AT 3,7;"MAS QUE NADA";AT 4,7;"TRACES";AT 5,7;"MARIA";AT 7,0;"8:45 ORCHESTRA";AT 8,7;"PRELUDE IN C";AT 9,7;"ANDALUCIA SUITE";AT 11,0;"9:30 JAZZ ENSEMBLE";AT 12,7;"25 OR 6 TO 4";AT 13,7;"COUNT BASIE MEDLEY";AT 15,5;"CONCERT ENDS AT 10:00"
 4090 PAUSE 3510
 4100 LET D=4
 4110 GOSUB 800
 4120 PRINT AT 21,0;"PROGRAMS GO HERE"
 4130 FOR I=1 TO 3
 4140 GOSUB 930
 4150 GOSUB 940
 4160 NEXT I
 4170 PRINT AT 21,0;"THIS IS PERMANENT"
 4180 FOR I=1 TO 20
 4190 GOSUB 940
 4200 NEXT I
 4210 CLS
 4220 PRINT AT 4,0;"ROM - [R]EAD [O]NLY [M]EMORY";AT 6,0;"PERMANENT MEMORY FOR THE CPU TO READ, BUT NOT WRITE INTO";AT 9,0;"ROM IS [F][I][R][M][W][A][R][E] - SOFTWARE FIXEDUNALTERABLY IN HARDWARE"
 4230 LET T=135
 4240 GOSUB 200
 4250 CLS
 4260 PRINT AT 4,0;"LOADING A PROGRAM - PROCESS THE CPU USES TO READ A PROGRAM AND  PLACE IT IN RAM"
 4270 LET T=15
 4280 GOSUB 200
 4290 LET D=7
 4300 GOSUB 800
 4310 PRINT AT 21,0;"PROGRAMS GO HERE"
 4320 FOR I=1 TO 5
 4330 GOSUB 930
 4340 NEXT I
 4350 PRINT AT 21,0;"THEY MAY BE ENTERED FROM HERE"
 4365 FOR I=1 TO 3
 4370 GOSUB 910
 4380 NEXT I
 4385 LET D=7
 4390 GOSUB 850
 4400 PRINT AT 21,0;"OR LOADED INTO RAM IF SAVED HERE"
 4410 FOR I=1 TO 66
 4420 GOSUB 960
 4430 GOSUB 970
 4440 NEXT I
 4450 CLS
 4455 PRINT AT 4,0;"[M][A][S][S] [S][T][O][R][A][G][E] - EXTERNAL MEMORY -THE COMPUTERS LIBRARY";AT 7,0;"THESE DEVICES ARE PERIPHRALS FORSTORING PROGRAMS AND OTHER DATA"
 4460 LET T=45
 4470 GOSUB 200
 4480 GOSUB 300
 4490 PRINT AT 21,0;"TAPE DRIVES ARE SEQUENTIAL"
 4500 FOR I=1 TO 10
 4510 GOSUB 960
 4530 NEXT I
 4540 PRINT AT 21,0;"DISK DRIVES ARE RANDOM-ACCESS"
 4550 FOR I=1 TO 20
 4560 GOSUB 970
 4570 NEXT I
 4580 GOSUB 800
 4590 PRINT AT 21,0;"YOU NOW KNOW THESE THINGS"
 4600 FOR I=1 TO 5
 4610 FOR J=0 TO 7
 4620 GOSUB 900+10*J
 4630 NEXT J
 4640 NEXT I
 4650 GOTO 2000

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.

People

No people associated with this content.

Scroll to Top