This program is an interactive educational presentation about microcomputer concepts, spanning two sides (programs) that teach topics such as hardware, software, peripherals, CPU, RAM, ROM, and mass storage. The presentation draws detailed block-graphic diagrams of a computer system on screen, including representations of the keyboard, TV display, tape drive, disk drive, CPU, RAM, and ROM chips, progressively revealing components using a level parameter (D) passed to subroutine 800. A PEEK/POKE technique at address 16514 is used to distinguish between Side 1 and Side 2 of the tape, branching execution accordingly. Label-flashing animations are achieved by printing inverse-video characters followed immediately by normal text in loops (subroutines 900–971), and a “buzzing bee” wing-flap animation is produced in subroutine 200 by rapidly cycling through block-graphic characters. The title screen uses a string-encoded coordinate system (subroutines 1100–1300) where a six-character string encodes X, Y, and length to draw horizontal or vertical double-pixel lines.
Program Analysis
The listing actually contains two separate but nearly identical programs (Side 1 and Side 2 of a tape-based educational course), each beginning at line 1 with a REM marker and line 2 with GOTO 2000. Both share the same subroutine library (lines 200–1430) and title-screen drawing code (lines 2000–2099), but diverge in their main content sections starting at line 3000. Side 1 covers computer systems, peripherals, CPU, and RAM; Side 2 covers hardware vs. software, ROM, loading programs, and mass storage.
Program Structure
| Line Range | Purpose |
|---|---|
| 1–2 | REM identifier and entry-point jump |
| 200–212 | Buzzword Bee wing-flap animation subroutine |
| 300–330 | Full system diagram builder (calls 800, then jumps into 850) |
| 490 | Standalone PAUSE (orphaned, never called directly) |
| 500–530 | Circle-drawing subroutine using PLOT and trigonometry |
| 687 | Orphaned NEXT I (dead code / vestigial) |
| 800–890 | Layered computer diagram renderer, controlled by variable D |
| 900–971 | Flashing-label subroutines for each labeled component |
| 1100–1140 | Vertical double-wide bar drawing via encoded string A$ |
| 1200–1240 | Horizontal double-tall bar drawing via encoded string A$ |
| 1300–1330 | String decoder: extracts X, Y, L from 6-char A$ |
| 1400–1430 | Prints a full 32-character row of solid block characters |
| 2000–2099 | Title screen construction and side-detection logic |
| 3000–4700 | Main lesson content (diverges between Side 1 and Side 2) |
Side Detection via PEEK/POKE
A notable technique appears at lines 2096–2097 (and 3000). The program uses PEEK (16514) to read a byte in the system variables area. On first run (Side 1), this value is not 61, so the program POKEs 61 into that address, prints “END OF SIDE 1”, and halts. When Side 2 is loaded and run, the POKEd value is now 61, so execution branches to line 3000 instead. At line 3000, the value is updated to 63, preventing re-entry. This is a clever two-state machine using a single system-variable byte as persistent state across tape loads, without any external storage.
Layered Diagram Renderer (Subroutine 800)
Subroutine 800 draws a diagram of the computer system incrementally, controlled by the integer variable D. The structure is a chain of guarded sections: after drawing each component, the code checks IF D<N THEN GOTO 880 to bail out early. This means a single subroutine handles all levels of diagram completeness from 0 (just the computer outline) to 7 (full system including disk drive). The caller sets D before invoking GOSUB 800.
D=0: Computer outline onlyD=1: Adds keyboard dotsD=2: Adds CPU blockD=3: Adds RAM blockD=4: Adds ROM blockD=5: Adds TV/monitorD=6: Adds tape driveD=7: Adds disk drive
String-Encoded Drawing Parameters
Subroutines 1100 (vertical bars) and 1200 (horizontal bars) both delegate to subroutine 1300, which decodes a 6-character string A$ into three two-digit decimal numbers using VAL (A$(1 TO 2)), VAL (A$(3 TO 4)), and VAL (A$(5 TO 6)), assigning them to X, Y, and L (length) respectively. This compact encoding allows the title-screen drawing code (lines 2010–2082) to pass all drawing parameters in a single string assignment before each subroutine call, reducing line count and making the drawing data table-like in appearance.
Flashing Label Animation (Subroutines 900–971)
Each labeled component has a dedicated subroutine (e.g., 910 for KEYBOARD, 920 for CPU) that prints the label twice in rapid succession: first with each character wrapped in brackets (representing inverse-video rendering), then immediately overprinted with the plain text. Called in tight loops (e.g., FOR I=1 TO 66: GOSUB 920: NEXT I), this produces a rapid flicker between inverse and normal video, simulating a flashing highlight effect without any actual display timing control beyond loop iteration count.
Buzzword Bee Animation (Subroutine 200)
Subroutine 200 animates a simple bee figure at screen position (0,0)–(1,2). The loop at line 206 runs T*3.3 iterations, where T is set by the caller to control animation duration. Each iteration cycles through four wing states using block graphic characters: [~~]O[~~] (inverse tildes as wings up), ▄O▄, [,,]O[,,] (inverse commas as wings down), and ▀O▀, all printed at the same AT 1,0 position to create the illusion of wing movement.
Circle Drawing (Subroutine 500)
Subroutine 500 draws a circle using PLOT with polar coordinates. The loop steps I from 0 to 2*PI in increments of 1/R, plotting at INT(15.5 + R*COS(I)), INT(24.5 + R*SIN(I)). The step size 1/R is well-chosen: for larger radii the step is smaller, maintaining roughly uniform point density around the circumference. It is used in the RAM section to draw concentric circles illustrating random vs. sequential access (lines 4672–4678 call it with R=15 and R=8).
Notable Anomalies
- Line 687 contains a bare
NEXT Iwith no correspondingFORin sequence — this is dead code, likely a remnant of an earlier program version. - Line 490 contains a standalone
PAUSE 4000with noGOTOorGOSUBreferencing it — also unreachable dead code. - Line 4620 in Side 2 uses
GOSUB 900+10*J— a computedGOSUBexpression, iterating through subroutines 900, 910, 920, 930, 940, 950, 960, 970 to flash all component labels in sequence. - Subroutine 300 ends with
GOTO 850rather thanRETURN, meaning it falls through into subroutine 850’s body. This is an intentional tail-call optimization — the full diagram display is triggered without an extra stack frame. - The
FAST/SLOWmode switching is used throughout: drawing operations are performed in FAST mode for speed, then SLOW is restored at line 880 before returning, ensuring the display is visible to the user.
Content
Image Gallery
Source Code
1 REM Z
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.