Initial commit (a clone of the jsmachines project as of v1.15.3)

This commit is contained in:
jeffpar 2014-09-27 14:52:57 -07:00
commit a5e3e6a59d
714 changed files with 130602 additions and 0 deletions

124
apps/README.md Normal file
View file

@ -0,0 +1,124 @@
Application Archives
---
Browse classic [IBM PC](pc/) and [Challenger 1P](c1p/) software that you can run with [PCjs](/docs/about/pcjs/)
and [C1Pjs](/docs/c1pjs/).
### Software Application Manifests
Every complete software package is stored in its own folder, either as a set of individual files
(under [/apps](/apps/)) or as a set of disk images (under [/disks](/disks/)), along with a **manifest.xml**
file that describes the software. The manifest format is still being developed, but at a minimum, it
should contain the following information about the software:
- Title
- Version
- Type (eg, Application, Game, OS, Diagnostic, Utility, etc)
- Category (eg, Productivity, Text Adventure, BASIC Compiler, etc)
- Company (eg, IBM, Microsoft, etc)
- Creation Date (of first version)
- Release Date (of this version, if different from creation date)
- Creator(s) (of first version)
- Author(s) (of this version, if different from creator(s))
- Contributors(s) (names of additional contributor(s) to this version)
- Publisher (name of publisher, if different from company)
- License (with link to current software license, if any)
- Machine (reference to PCjs machine.xml file capable of loading/running the software)
- Disk(s) (one or more entries describing sets of files and/or disk images)
The distinctions made by Type and Category are a bit aribitrary and likely to change. For now,
Type is merely a reflection of how we initially filed the software (eg, under [/diags](/disks/pc/diags/),
[/games](/disks/pc/games/), [/tools](/disks/pc/tools/), etc), while Category provides more detail.
### Example: VisiCalc
VisiCalc is stored in an [/apps folder](/apps/pc/1981/visicalc/), and two relevant files are
described by <file> entries in its [manifest](/apps/pc/1981/visicalc/manifest.xml):
<manifest>
<title>VisiCalc</title>
<version>VC-176Y2-IBM-TEST</version>
<type>Application</type>
<category>Productivity</category>
<company>Software Arts</company>
<releaseDate>December 16, 1981</releaseDate>
<machine href="/configs/pc/machines/5150/mda/64kb/machine.xml" state="/apps/pc/1981/visicalc/state.json"/>
<disk id="disk" dir="/apps/pc/1981/visicalc/bin/">
<file>VC.COM</file>
<file dir="../">README.md</file>
<link href="http://www.bricklin.com/history/vclicense.htm">VisiCalc License</link>
</disk>
</manifest>
Since this [manifest](/apps/pc/1981/visicalc/manifest.xml) also contains a &lt;machine&gt; entry,
the default manifest stylesheet will automatically load and launch the associated
[PCjs machine](/configs/pc/machines/5150/mda/64kb/machine.xml). The machine will boot or resume according
to its own &lt;[computer](/docs/pcjs/computer/)&gt; settings, unless the manifest overrides the machine's
default state with its own *state* setting; eg:
<machine href="/configs/pc/machines/5150/mda/64kb/machine.xml" state="/apps/pc/1981/visicalc/state.json"/>
The machine.xml file, in turn, refers to a [sample set](/configs/pc/disks/samples.xml) of disk images, one of which is:
<manifest ref="/apps/pc/1981/visicalc/manifest.xml" disk="*"/>
which refers to the &lt;disk&gt; entry in the VisiCalc manifest -- which brings us full circle.
Since that &lt;disk&gt; entry is just a reference to a folder, PCjs must first convert it to a disk image,
using the following API request:
http://www.pcjs.org/api/v1/dump?path=/apps/pc/1981/visicalc/bin/VC.COM;../README.md&format=json
The PCjs `diskdump` module processes the dump request and generates a JSON-encoded DOS 2.x-compatible disk image
containing all the specified files.
However, to avoid the PCjs web server re-generating the same disk image for every user-initiated disk load, we
have saved that JSON-encoded image as static file on the server, and then added an *href* attribute to the manifest's
&lt;disk&gt; entry:
<manifest>
<disk id="disk01" dir="/apps/pc/1981/visicalc/private/" href="/apps/pc/1981/visicalc/disk.json">
...
</disk>
</manifest>
PCjs always prefers a resource specified by *href*. While the &lt;file&gt; entries are now superfluous, they
still serve to document the contents of the disk image, and are still necessary if the disk image ever needs to
be re-generated.
### Example: CP/M-86
CPM-86 is stored as two disk images in a [/disks folder](/disks/pc/cpm/). The disk images are described in that
folder's [manifest](/disks/pc/cpm/manifest.xml):
<manifest>
<title>CP/M-86</title>
<version>1.1B</version>
<type>OS</type>
<category>Operating System</category>
<company href="http://en.wikipedia.org/wiki/Digital_Research">Digital Research</company>
<publisher href="http://en.wikipedia.org/wiki/Eagle_Computer">Eagle Computer</publisher>
<releaseDate>May 20, 1983</releaseDate>
<machine href="/disks/pc/cpm/machine.xml"/>
<disk id="disk01" href="/disks/pc/cpm/cpm86-disk1.json">
<name>CP/M-86 (Disk 1)</name>
</disk>
<disk id="disk02" href="/disks/pc/cpm/cpm86-disk2.json">
<name>CP/M-86 (Disk 2)</name>
</disk>
</manifest>
In this case, the software was "born" as disk images (non-DOS disk images at that), so we don't
bother listing the contents of those images with &lt;file&gt; entries inside the &lt;disk&gt; entries.
We do, however, include optional &lt;name&gt; entries that help describe (or at least differentiate)
the disk images.
If a machine file wanted to use only the first disk, then it would specify:
<manifest ref="/disks/pc/cpm/manifest.xml" disk="disk01"/>
and if it wanted to use all the disks listed in the manifest, it would specify:
<manifest ref="/disks/pc/cpm/manifest.xml" disk="*"/>
which is what our [CP/M Machine Configuration](/disks/pc/cpm/machine.xml) does.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1 @@
.0000/A9 07 85 FF A9 00 85 FE A8 A2 19 91 FE C8 D0 FB E6 FF CA D0 F6 A9 20 A2 00 9D 00 D0 9D 00 D1 9D 00 D2 9D 00 D3 E8 D0 F1 A9 85 85 FE A9 D0 85 FF A9 25 85 FC A9 D3 85 FD A0 14 A9 80 91 FE A9 87 91 FC 88 D0 F5 A2 14 A0 00 A5 FE 18 69 20 85 FE 90 02 E6 FF A9 8F 91 FE A0 15 A9 88 91 FE CA D0 E6 A9 07 85 FF 4C 71 05 EA 85 FD 85 FC 85 F9 85 F8 85 F7 85 F6 85 F0 A9 A6 85 A5 A9 D0 85 A6 A5 FF 85 9A A5 FE 85 99 A5 FD 10 03 18 69 50 85 FB A9 14 85 FA A2 00 A4 FB B9 40 0D 4A 90 04 A9 F0 B0 02 A9 2E 9D 26 D3 C8 C0 50 D0 02 A0 00 E8 A5 F0 4A 90 11 E0 14 F0 11 84 F5 8A A8 A9 AB 91 A5 A4 F5 20 69 03 E0 14 D0 CF A5 99 18 69 50 85 99 90 02 E6 9A A9 20 C5 9A D0 04 A9 07 85 9A A5 A5 18 69 20 85 A5 90 02 E6 A6 C6 FA D0 A7 4C 5F 02 82 .0222/00 01 00 0A 00 64 03 E8 27 10 00 00 00 00 A4 FA 91 F1 E6 FA 60 A0 00 38 A5 F3 FD 21 02 85 F5 CA A5 F4 FD 21 02 90 0A E8 C8 85 F4 A5 F5 85 F3 B0 E7 E8 98 09 30 20 30 02 CA CA D0 D9 60 A9 46 85 F1 A9 D3 85 F2 A2 08 A5 F8 85 F3 A5 F9 85 F4 A9 00 85 FA 20 37 02 A9 20 20 30 02 A9 28 20 30 02 4C A1 02 48 30 04 A9 2B 10 02 A9 2D 20 30 02 68 10 05 18 49 FF 69 01 85 F3 A2 04 20 37 02 60 A9 00 85 F4 A5 FD 20 85 02 A9 2C 20 30 02 A5 FC 20 85 02 EA A9 29 20 30 02 A9 20 20 30 02 A5 F6 85 F3 A5 F7 85 F4 A2 0A 20 37 02 4C EC 02 C9 50 D0 05 EA A9 00 F0 04 C9 B0 F0 F8 A0 10 CA D0 FD 88 D0 FA 60 8D 00 DF AD 00 DF 60 A9 7F 4C 57 05 C9 7F D0 0C E6 FD A5 FD 20 CF 02 85 FD 4C 60 03 A9 7F 20 E5 02 C9 BF D0 05 C6 FD 4C F7 02 A9 7F 20 E5 02 C9 DF D0 21 E6 FC A5 FC 20 CF 02 85 FC 38 A5 FE E9 50 85 FE B0 02 C6 FF A9 06 C5 FF D0 04 A9 1F 85 FF 4C 60 03 A9 7F 20 E5 02 C9 EF D0 33 C6 FC A5 FC 20 CF 02 85 FC 18 A5 FE 69 50 85 FE 90 02 E6 FF A9 20 C5 FF D0 04 A9 07 85 FF A9 7E 25 F0 85 F0 4C 77 00 A9 15 C6 F1 D0 FC 18 69 FF D0 F7 60 A5 F0 0A 90 03 4C 8F 03 E0 C0 F0 04 A2 C0 86 F2 20 69 03 E6 F2 F0 EE 4C EC 02 A5 F0 4A 4A B0 09 A5 F0 09 02 85 F0 4C AF 03 A9 FE 20 E5 02 C9 DE F0 08 4C 9B 04 A5 FB 91 F1 60 A9 00 85 FA A9 A6 85 F1 A9 D0 85 F2 A0 00 B1 F1 85 FB A9 AB 91 F1 20 00 FD C9 0A D0 0C A5 F0 49 01 85 F0 20 AA 03 4C A7 03 C9 32 D0 0A C0 13 F0 E5 20 AA 03 C8 D0 D7 C9 31 D0 0A C0 00 F0 F0 20 AA 03 88 10 C9 C9 33 D0 18 A9 13 C5 FA F0 EE E6 FA 20 AA 03 18 A9 20 65 F1 85 F1 90 02 E6 F2 D0 D4 C9 34 D0 19 A9 00 C5 FA F0 E2 C6 FA 20 AA 03 38 A5 F1 E9 20 85 F1 B0 02 C6 F2 4C BD 03 C9 0D D0 03 4C D2 03 C9 50 D0 5C A5 FE 85 F3 A5 FF 85 F4 A5 FA 85 F5 A9 00 C5 F5 F0 19 18 A5 F3 69 50 85 F3 90 02 E6 F4 A9 20 C5 F4 D0 04 A9 07 85 F4 C6 F5 D0 E7 A5 FD 10 03 18 69 50 84 FB 18 65 FB C9 50 90 02 E9 50 8C 11 02 A8 AD 13 02 C9 50 D0 06 A9 03 A2 F0 D0 04 A9 00 A2 2E 91 F3 86 FB AC 11 02 4C C5 03 C9 4F F0 A0 4C C5 03 A9 07 85 F2 A9 00 85 F1 85 FA A9 4E 85 F3 A9 4E 85 F4 A9 00 85 F5 A2 08 BC 68 05 B1 F1 4A 90 02 E6 F5 CA D0 F3 A9 03 A0 51 D1 F1 D0 2C A2 02 E4 F5 F0 0B E8 E4 F5 F0 06 A9 01 91 F1 85 FA E6 F1 D0 02 E6 F2 C6 F4 D0 CA 18 A5 F1 69 02 85 F1 90 02 E6 F2 C6 F3 D0 B7 F0 0A A2 03 E4 F5 D0 DF A9 02 D0 D7 A9 00 85 F9 85 F8 A9 06 85 F2 A9 FF 85 F1 A2 50 A0 50 B1 F1 C9 02 D0 06 A9 03 91 F1 D0 08 C9 01 D0 04 A9 00 91 F1 C9 03 D0 06 E6 F8 D0 02 E6 F9 88 D0 DF 18 A5 F1 69 50 85 F1 90 02 E6 F2 CA D0 CF A5 FA C9 00 D0 03 4C AF 03 E6 F6 D0 02 E6 F7 A5 F0 09 80 85 F0 4C 77 00 A0 FD 8C 00 DF AC 00 DF C0 EF F0 F4 20 E5 02 4C F1 02 00 01 02 50 52 A0 A1 A2 A9 4C 85 FE A9 00 4C 69 00 EA 00 00 00 00 00 00 00 .0000G

18
apps/c1p/6502/sim.inc Normal file
View file

@ -0,0 +1,18 @@
.code
.org $200
;
; These must be kept in sync with the "opSim operation codes" in c1p.js
;
.define OP_SIM $02
.define SIMOP_HLT $00
.define SIMOP_MSG $01
.macro SIM_MSG msg
.local addr
.byte OP_SIM,SIMOP_MSG
addr: .ASCIIZ msg
.endmacro
.macro SIM_HLT
.byte OP_SIM,SIMOP_HLT
.endmacro

View file

@ -0,0 +1,476 @@
.0200/A0
01
8C
CE
03
A9
00
8D
D1
03
8D
D4
03
AD
D4
03
02
01
54
65
73
74
69
6E
67
20
25
41
00
29
0F
8D
D5
03
AD
D4
03
29
F0
8D
D9
03
09
0F
8D
DA
03
AD
D1
03
29
0F
8D
D3
03
AD
D1
03
29
F0
8D
D2
03
20
79
02
20
62
03
20
33
03
D0
26
20
CC
02
20
6F
03
20
33
03
D0
1B
EE
D1
03
D0
D5
EE
D4
03
D0
AE
88
10
AB
A9
00
8D
CE
03
02
01
50
41
53
53
00
F0
07
02
01
46
41
49
4C
00
02
00
F8
C0
01
AD
D1
03
6D
D4
03
8D
CC
03
08
68
8D
CD
03
D8
C0
01
AD
D1
03
6D
D4
03
8D
CF
03
08
68
8D
D0
03
C0
01
AD
D3
03
6D
D5
03
C9
0A
A2
00
90
06
E8
69
05
29
0F
38
0D
D2
03
7D
D9
03
08
B0
04
C9
A0
90
03
69
5F
38
8D
CA
03
08
68
8D
CB
03
68
8D
D7
03
60
F8
C0
01
AD
D1
03
ED
D4
03
8D
CC
03
08
68
8D
CD
03
D8
C0
01
AD
D1
03
ED
D4
03
8D
CF
03
08
68
8D
D0
03
60
C0
01
AD
D3
03
ED
D5
03
A2
00
B0
06
E8
E9
05
29
0F
18
0D
D2
03
FD
D9
03
B0
02
E9
5F
8D
CA
03
60
C0
01
AD
D3
03
ED
D5
03
A2
00
B0
04
E8
29
0F
18
0D
D2
03
FD
D9
03
B0
02
E9
5F
E0
00
F0
02
E9
06
8D
CA
03
60
AD
CC
03
CD
CA
03
D0
26
AD
CD
03
4D
D6
03
29
80
D0
1C
AD
CD
03
4D
D7
03
29
40
D0
12
AD
CD
03
4D
D8
03
29
02
D0
08
AD
CD
03
4D
CB
03
29
01
60
AD
D7
03
8D
D6
03
AD
D0
03
8D
D8
03
60
20
EF
02
AD
D0
03
8D
D6
03
8D
D7
03
8D
D8
03
8D
CB
03
60
AD
CA
03
08
68
8D
D6
03
8D
D8
03
60
20
0F
03
AD
CA
03
08
68
8D
D6
03
8D
D8
03
AD
D0
03
8D
D7
03
8D
CB
03
60
AD
CA
03
08
68
8D
D6
03
8D
D8
03
60
20
EF
02
AD
CA
03
08
68
8D
D6
03
8D
D8
03
AD
D0
03
8D
D7
03
8D
CB
03
60
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
.0200G

View file

@ -0,0 +1,332 @@
;
; The following code comes from:
;
; http://www.6502.org/tutorials/decimal_mode.html
;
; and is built with:
;
; ca65 bcd.asm -I ../.. -l -o bcd.obj
; ld65 bcd.obj -o bcd.bin --target none
;
; An ASCII hex file which the OSI machine-language monitor can load
; is produced with the following commands:
;
; echo -n ".0200/" > bcd.txt
; hexdump -e '1/1 "%02X\n"' -v bcd.bin >> bcd.txt
; echo -n ".0200" >> bcd.txt
;
.include "sim.inc"
VALID_BCD_ONLY = 0
VALID_FLAGS_ONLY = 0
;
; Verify decimal mode behavior
;
; Returns:
; ERROR = 0 if the test passed
; ERROR = 1 if the test failed
;
; This routine requires 17 bytes of RAM -- 1 byte each for:
; AR, CF, DA, DNVZC, ERROR, HA, HNVZC, N1, N1H, N1L, N2, N2L, NF, VF, and ZF
; and 2 bytes for N2H
;
; Variables:
; N1 and N2 are the two numbers to be added or subtracted
; N1H, N1L, N2H, and N2L are the upper 4 bits and lower 4 bits of N1 and N2
; DA and DNVZC are the actual accumulator and flag results in decimal mode
; HA and HNVZC are the accumulator and flag results when N1 and N2 are
; added or subtracted using binary arithmetic
; AR, NF, VF, ZF, and CF are the predicted decimal mode accumulator and
; flag results, calculated using binary arithmetic
;
; This program takes approximately 1 minute at 1 MHz (a few seconds more on
; a 65C02 than a 6502 or 65816)
;
TEST: LDY #1 ; initialize Y (used to loop through carry flag values)
STY ERROR ; store 1 in ERROR until the test passes
LDA #0 ; initialize N1 and N2
STA N1
STA N2
LOOP1: LDA N2 ; N2L = N2 & $0F
SIM_MSG "Testing %A"
AND #$0F ; [1] see text
.if VALID_BCD_ONLY <> 0
CMP #$0A
BCS NEXT2
.endif
STA N2L
LDA N2 ; N2H = N2 & $F0
AND #$F0 ; [2] see text
.if VALID_BCD_ONLY <> 0
CMP #$A0
BCS NEXT2
.endif
STA N2H
ORA #$0F ; N2H+1 = (N2 & $F0) + $0F
STA N2H+1
LOOP2: LDA N1 ; N1L = N1 & $0F
;; SIM_MSG " with %A"
AND #$0F ; [3] see text
.if VALID_BCD_ONLY <> 0
CMP #$0A
BCS NEXT1
.endif
STA N1L
LDA N1 ; N1H = N1 & $F0
AND #$F0 ; [4] see text
.if VALID_BCD_ONLY <> 0
CMP #$A0
BCS NEXT1
.endif
STA N1H
JSR ADD
JSR A6502
JSR COMPARE
BNE ERR
JSR SUB
JSR S6502
JSR COMPARE
BNE ERR
NEXT1: INC N1 ; [5] see text
BNE LOOP2 ; loop through all 256 values of N1
NEXT2: INC N2 ; [6] see text
BNE LOOP1 ; loop through all 256 values of N2
DEY
BPL LOOP1 ; loop through both values of the carry flag
LDA #0 ; test passed, so store 0 in ERROR
STA ERROR
SIM_MSG "PASS"
BEQ DONE
ERR: SIM_MSG "FAIL"
DONE: SIM_HLT
; Calculate the actual decimal mode accumulator and flags, the accumulator
; and flag results when N1 is added to N2 using binary arithmetic, the
; predicted accumulator result, the predicted carry flag, and the predicted
; V flag
;
ADD: SED ; decimal mode
CPY #1 ; set carry if Y = 1, clear carry if Y = 0
LDA N1
ADC N2
STA DA ; actual accumulator result in decimal mode
PHP
PLA
STA DNVZC ; actual flags result in decimal mode
CLD ; binary mode
CPY #1 ; set carry if Y = 1, clear carry if Y = 0
LDA N1
ADC N2
STA HA ; accumulator result of N1+N2 using binary arithmetic
PHP
PLA
STA HNVZC ; flags result of N1+N2 using binary arithmetic
CPY #1
LDA N1L
ADC N2L
CMP #$0A
LDX #0
BCC A1
INX
ADC #5 ; add 6 (carry is set)
AND #$0F
SEC
A1: ORA N1H
;
; if N1L + N2L < $0A, then add N2 & $F0
; if N1L + N2L >= $0A, then add (N2 & $F0) + $0F + 1 (carry is set)
;
ADC N2H,X
PHP
BCS A2
CMP #$A0
BCC A3
A2: ADC #$5F ; add $60 (carry is set)
SEC
A3: STA AR ; predicted accumulator result
PHP
PLA
STA CF ; predicted carry result
PLA
;
; note that all 8 bits of the P register are stored in VF
;
STA VF ; predicted V flags
RTS
; Calculate the actual decimal mode accumulator and flags, and the
; accumulator and flag results when N2 is subtracted from N1 using binary
; arithmetic
;
SUB: SED ; decimal mode
CPY #1 ; set carry if Y = 1, clear carry if Y = 0
LDA N1
SBC N2
STA DA ; actual accumulator result in decimal mode
PHP
PLA
STA DNVZC ; actual flags result in decimal mode
CLD ; binary mode
CPY #1 ; set carry if Y = 1, clear carry if Y = 0
LDA N1
SBC N2
STA HA ; accumulator result of N1-N2 using binary arithmetic
PHP
PLA
STA HNVZC ; flags result of N1-N2 using binary arithmetic
RTS
; Calculate the predicted SBC accumulator result for the 6502 and 65816
;
SUB1: CPY #1 ; set carry if Y = 1, clear carry if Y = 0
LDA N1L
SBC N2L
LDX #0
BCS S11
INX
SBC #5 ; subtract 6 (carry is clear)
AND #$0F
CLC
S11: ORA N1H
;
; if N1L - N2L >= 0, then subtract N2 & $F0
; if N1L - N2L < 0, then subtract (N2 & $F0) + $0F + 1 (carry is clear)
;
SBC N2H,X
BCS S12
SBC #$5F ; subtract $60 (carry is clear)
S12: STA AR
RTS
; Calculate the predicted SBC accumulator result for the 6502 and 65C02
;
SUB2: CPY #1 ; set carry if Y = 1, clear carry if Y = 0
LDA N1L
SBC N2L
LDX #0
BCS S21
INX
AND #$0F
CLC
S21: ORA N1H
;
; if N1L - N2L >= 0, then subtract N2 & $F0
; if N1L - N2L < 0, then subtract (N2 & $F0) + $0F + 1 (carry is clear)
;
SBC N2H,X
BCS S22
SBC #$5F ; subtract $60 (carry is clear)
S22: CPX #0
BEQ S23
SBC #6
S23: STA AR ; predicted accumulator result
RTS
; Compare accumulator actual results to predicted results
;
; Return:
; Z flag = 1 (BEQ branch) if same
; Z flag = 0 (BNE branch) if different
;
COMPARE:LDA DA
CMP AR
BNE C1
.if VALID_FLAGS_ONLY = 0
LDA DNVZC ; [7] see text
EOR NF
AND #$80 ; mask off N flag
BNE C1
LDA DNVZC ; [8] see text
EOR VF
AND #$40 ; mask off V flag
BNE C1 ; [9] see text
LDA DNVZC
EOR ZF ; mask off Z flag
AND #2
BNE C1 ; [10] see text
.endif
LDA DNVZC
EOR CF
AND #1 ; mask off C flag
C1: RTS
; These routines store the predicted values for ADC and SBC for the 6502,
; 65C02, and 65816 in AR, CF, NF, VF, and ZF
A6502: LDA VF
;
; since all 8 bits of the P register were stored in VF, bit 7 of VF contains
; the N flag for NF
;
STA NF
LDA HNVZC
STA ZF
RTS
S6502: JSR SUB1
LDA HNVZC
STA NF
STA VF
STA ZF
STA CF
RTS
A65C02: LDA AR
PHP
PLA
STA NF
STA ZF
RTS
S65C02: JSR SUB2
LDA AR
PHP
PLA
STA NF
STA ZF
LDA HNVZC
STA VF
STA CF
RTS
A65816: LDA AR
PHP
PLA
STA NF
STA ZF
RTS
S65816: JSR SUB1
LDA AR
PHP
PLA
STA NF
STA ZF
LDA HNVZC
STA VF
STA CF
RTS
.data
AR: .byte 0
CF: .byte 0 ; predicted carry result
DA: .byte 0
DNVZC: .byte 0
ERROR: .byte 0
HA: .byte 0
HNVZC: .byte 0
N1: .byte 0
N1H: .byte 0
N1L: .byte 0
N2: .byte 0
N2L: .byte 0
NF: .byte 0
VF: .byte 0
ZF: .byte 0
N2H: .word 0

View file

@ -0,0 +1,19 @@
CA65 = ca65
LD65 = ld65
ECHO = @/bin/echo
CA65_OPTS =
LD65_OPTS = --target none
all: bcd.65v
bcd.obj: bcd.asm
$(CA65) bcd.asm -I ../.. -l -o bcd.obj
bcd.bin: bcd.obj
$(LD65) $(LD65_OPTS) $+ -o $@
bcd.65v: bcd.bin
$(ECHO) -n ".0200/" > bcd.65v
hexdump -e '1/1 "%02X\n"' -v bcd.bin >> bcd.65v
$(ECHO) -n ".0200G" >> bcd.65v

View file

@ -0,0 +1,19 @@
CA65 = ca65
LD65 = ld65
ECHO = @/bin/echo
CA65_OPTS =
LD65_OPTS = --target none
all: vflag.65v
vflag.obj: vflag.asm
$(CA65) vflag.asm -I ../.. -l -o vflag.obj
vflag.bin: vflag.obj
$(LD65) $(LD65_OPTS) $+ -o $@
vflag.65v: vflag.bin
$(ECHO) -n ".0200/" > vflag.65v
hexdump -e '1/1 "%02X\n"' -v vflag.bin >> vflag.65v
$(ECHO) -n ".0200G" >> vflag.65v

View file

@ -0,0 +1,159 @@
.0200/D8
A9
01
8D
99
02
A9
80
8D
9A
02
8D
9B
02
A9
00
8D
9C
02
8D
9D
02
A0
01
20
50
02
E0
01
F0
28
20
6F
02
E0
01
F0
21
EE
9A
02
EE
9C
02
D0
EA
EE
9B
02
EE
9D
02
D0
E2
88
10
DF
A9
00
8D
99
02
02
01
50
41
53
53
00
F0
07
02
01
46
41
49
4C
00
02
00
C0
01
AD
9A
02
6D
9B
02
A2
00
50
01
E8
C0
01
AD
9C
02
6D
9D
02
B0
04
30
01
E8
60
10
01
E8
60
C0
01
AD
9A
02
ED
9B
02
A2
00
50
01
E8
C0
01
AD
9C
02
ED
9D
02
48
A9
FF
E9
00
C9
FE
D0
05
68
30
01
E8
60
68
90
FB
10
01
E8
60
00
00
00
00
00
.0200G

View file

@ -0,0 +1,124 @@
;
; The following code comes from:
;
; http://www.6502.org/tutorials/vflag.html
;
; and is built with:
;
; ca65 vflag.asm -I ../.. -l -o vflag.obj
; ld65 vflag.obj -o vflag.bin --target none
;
; An ASCII hex file which the OSI machine-language monitor can load
; is produced with the following commands:
;
; echo -n ".0200/" > vflag.txt
; hexdump -e '1/1 "%02X\n"' -v vflag.bin >> vflag.txt
; echo -n ".0200" >> vflag.txt
;
.include "sim.inc"
; Demonstrate that the V flag works as described
;
; Returns with ERROR = 0 if the test passes, ERROR = 1 if the test fails
;
; Five (additional) memory locations are used: ERROR, S1, S2, U1, and U2
; which can be located anywhere convenient in RAM
;
; The program below takes about 16 seconds to complete at 1 MHz.
;
TEST: CLD ; Clear decimal mode (just in case) for test
LDA #1
STA ERROR ; Store 1 in ERROR until test passes
LDA #$80
STA S1 ; Initalize S1 and S2 to -128 ($80)
STA S2
LDA #0
STA U1 ; Initialize U1 and U2 to 0
STA U2
LDY #1 ; Initialize Y (used to set and clear the carry flag) to 1
LOOP: JSR ADD ; Test ADC
CPX #1
BEQ ERR ; End if V and unsigned result do not agree (X = 1)
JSR SUB ; Test SBC
CPX #1
BEQ ERR ; End if V and unsigned result do not agree (X = 1)
INC S1
INC U1
BNE LOOP ; Loop until all 256 possibilities of S1 and U1 are tested
INC S2
INC U2
BNE LOOP ; Loop until all 256 possibilities of S2 and U2 are tested
DEY
BPL LOOP ; Loop until both possiblities of the carry flag are tested
LDA #0
STA ERROR ; All tests pass, so store 0 in ERROR
SIM_MSG "PASS"
BEQ DONE
ERR: SIM_MSG "FAIL"
DONE: SIM_HLT
;
; Test ADC
;
; X is initialized to 0
; X is incremented when V = 1
; X is incremented when the unsigned result predicts an overflow
; Therefore, if the V flag and the unsigned result agree, X will be
; incremented zero or two times (returning X = 0 or X = 2), and if they do
; not agree X will be incremented once (returning X = 1)
;
ADD: CPY #1 ; Set carry when Y = 1, clear carry when Y = 0
LDA S1 ; Test twos complement addition
ADC S2
LDX #0 ; Initialize X to 0
BVC ADD1
INX ; Increment X if V = 1
ADD1: CPY #1 ; Set carry when Y = 1, clear carry when Y = 0
LDA U1 ; Test unsigned addition
ADC U2
BCS ADD3 ; Carry is set if U1 + U2 >= 256
BMI ADD2 ; U1 + U2 < 256, A >= 128 if U1 + U2 >= 128
INX ; Increment X if U1 + U2 < 128
ADD2: RTS
ADD3: BPL ADD4 ; U1 + U2 >= 256, A <= 127 if U1 + U2 <= 383 ($17F)
INX ; Increment X if U1 + U2 > 383
ADD4: RTS
;
; Test SBC
;
; X is initialized to 0
; X is incremented when V = 1
; X is incremented when the unsigned result predicts an overflow
; Therefore, if the V flag and the unsigned result agree, X will be
; incremented zero or two times (returning X = 0 or X = 2), and if they do
; not agree X will be incremented once (returning X = 1)
;
SUB: CPY #1 ; Set carry when Y = 1, clear carry when Y = 0
LDA S1 ; Test twos complement subtraction
SBC S2
LDX #0 ; Initialize X to 0
BVC SUB1
INX ; Increment X if V = 1
SUB1: CPY #1 ; Set carry when Y = 1, clear carry when Y = 0
LDA U1 ; Test unsigned subtraction
SBC U2
PHA ; Save the low byte of result on the stack
LDA #$FF
SBC #$00 ; result = (65280 + U1) - U2, 65280 = $FF00
CMP #$FE
BNE SUB4 ; Branch if result >= 65280 ($FF00) or result < 65024 ($FE00)
PLA ; Get the low byte of result
BMI SUB3 ; result < 65280 ($FF00), A >= 128 if result >= 65152 ($FE80)
SUB2: INX ; Increment X if result < 65152 ($FE80)
SUB3: RTS
SUB4: PLA ; Get the low byte of result (does not affect the carry flag)
BCC SUB2 ; The carry flag is clear if result < 65024 ($FE00)
BPL SUB5 ; result >= 65280 ($FF00), A <= 127 if result <= 65407 ($FF7F)
INX ; Increment X if result > 65407 ($FF7F)
SUB5: RTS
.data
ERROR: .byte 0
S1: .byte 0
S2: .byte 0
U1: .byte 0
U2: .byte 0

View file

@ -0,0 +1,132 @@
1 REM--CHECKERS?--
2 REM-MEM.SIZE:8183-
3 T1=300:A=53448
5 FORC=1TO24:PRINT:NEXT:GOSUB10000:GOSUB20000
7 FORC=8184TO8191:READD:POKEC,D:NEXT:POKE11,248:POKE12,31
8 DATA32,0,253,141,255,31,96,0
10 FORC=A+640TOA+665:POKEC,32:NEXT:POKEA+640,63
11 M=USR(M):M=PEEK(8191)-48:IFM=9ANDG8=0THENG8=1:GOTO34
12 G8=1:IFM<1ORM>8THEN10
13 IFM=9ANDG9=1THENG9=0:GOTO34
14 IFM=9OR(M<>X1ANDG9=1)THEN10
15 POKEA+642,M+48:POKEA+643,44:X=M:M=USR(M):M=PEEK(8191)-48
16 IF(M<>Y1ANDG9=1)ORM<1ORM>8THEN10
17 POKEA+644,M+48
18 Y=M:M=USR(M):M=PEEK(8191)-48
19 IF(G9=1ANDABS(X-M)<>2)ORM<1ORM>8THEN10
20 POKEA+646,M+48:POKEA+647,44:X1=M:M=USR(M):M=PEEK(8191)-48
23 IFM<1ORM>8THEN10
25 POKEA+648,M+48:Y1=M:IFABS(X-X1)<>ABS(Y-Y1)THEN10
26 IFABS(X-X1)>2ORX>8ORY>8ORX1>8ORY1>8THEN10
27 IFP(X,Y)<1ORP(X1,Y1)<>0THEN10
28 IFP(X,Y)=1ANDY1<YTHEN10
29 IFABS(X-X1)=2ANDP((X+X1)/2,(Y+Y1)/2)>-1THEN10
30 P(X1,Y1)=P(X,Y):P(X,Y)=0:IFABS(X-X1)=2THENP((X+X1)/2,(Y+Y1)/2)=0
31 IFY1=8THENP(X1,Y1)=2
32 IFABS(X-X1)=2THENGOSUB20000:G9=1:GOTO10
33 GOSUB20000
34 FORC=A+640TOA+665:POKEC,32:NEXT
35 REM-MAIN PROGRAM-
230 G=-1:R=-99:FORY=1TO8:FORX=1TO8
231 IFP(X,Y)>-1THEN350
300 W=8:M=P(X,Y)
310 IFM=-1THENFORA1=-1TO1STEP2:B1=G:GOSUB650:NEXTA1
330 IFM=-2THENFORA1=-1TO1STEP2:FORB1=1TO-1STEP-2:GOSUB650:NEXTB1,A1
350 L6=0:L7=0:L8=0:L9=0:NEXTX,Y:GOTO1140
650 U=X+A1:V=Y+B1:IFU<1ORU>8ORV<1ORV>8THEN870
660 FORC1=-1TO1STEP2:FORD1=-1TO1STEP2
670 IFX+C1<1ORX+C1>8ORY+D1<1ORY+D1>8THEN700
673 IFX+C1*2<1ORX+C1*2>8ORY+D1*2<1ORY+D1*2>8THEN700
675 IFP(X+C1,Y+D1)>-1THEN700
680 IFP(X+C1*2,Y+D1*2)<>2ANDY+D1>YTHEN700
682 IFX-C1<1ORX-C1>8ORY-D1<1ORY-D1>8THEN685
683 IFP(X+C1,Y+D1)>0ANDP(X-C1,Y-D1)=0THENL9=1
685 IFP(X+C1*2,Y+D1*2)<1THEN700
690 Q=Q-4:GOTO740
700 NEXTD1,C1
740 IFP(U,V)=0THENGOSUB910:GOTO870
770 IFP(U,V)<0THEN870
790 U=U+A1:V=V+B1:IFU<1ORV<1ORU>8ORV>8THEN870
850 IFP(U,V)=0THENGOSUB910
870 RETURN
910 REM
920 IFABS(Y-V)=2THENQ=Q+4
930 IFL8=0ANDP(X,Y)=-1THENQ=Q+(2-Y/2)
1000 IFP(X,Y)=-2THENQ=Q-1
1030 IFP(X,Y)=-1THENFORC1=-1TO1STEP2:FORD1=-1TO-1:GOTO1033
1031 IFP(X,Y)=-2THENFORC1=-1TO1STEP2:FORD1=-1TO1STEP2:GOTO1033
1032 GOTO1081
1033 IFU+C1<1ORU+C1>8ORV+D1<1ORV+D1>8THEN1080
1034 IFU+C1*2<1ORU+C1*2>8ORV+D1*2<1ORV+D1*2>8THEN1040
1035 IFP(U+C1,V+D1)<0ANDP(U+C1*2,V+D1*2)>0THENQ=Q+4
1036 IFU-C1<1ORU-C1>8ORV-D1<1ORV-D1>8THEN1080
1037 IFP(U+C1,V+D1)>0ANDP(U-C1,V-D1)<>0ANDP(U+C1*2,V+D1*2)=0THENQ=Q+2
1040 IFU-C1<1ORU-C1>8ORV-D1<1ORV-D1>8THEN1080
1042 IFV+D1>VANDP(U+C1,V+D1)<2THEN1050
1045 IFP(U+C1,V+D1)>0AND(P(U-C1,V-D1)=0OR(X=U-C1ANDY=V-D1))THEN5000
1047 IFL9=1THENQ=Q+1:L7=1
1050 IFP(U+C1,V+D1)<>0ANDP(U-C1,V-D1)<>0ANDY<>8ANDP(X,Y)=-1THENQ=Q+1
1080 NEXTD1,C1
1081 IFL6=0THENQ=Q+4
1082 IFQ>RTHENR=Q:R1=X:R2=Y:R3=U:R4=V
1090 IFQ=RANDINT(RND(X)*10)+1<4THENR1=X:R2=Y:R3=U:R4=V
1100 Q=0:RETURN
1140 IFR=-99THEN1880
1230 R=-99:GOSUB2000
1240 IFR4=1THENP(R3,R4)=-2:GOTO1310
1250 P(R3,R4)=P(R1,R2)
1310 P(R1,R2)=0:IFABS(R1-R3)<>2THEN1420
1330 P((R1+R3)/2,(R2+R4)/2)=0
1340 X=R3:Y=R4:IFP(X,Y)=-1THENB1=-2:FORA1=-2TO2STEP4:GOSUB1370
1350 IFP(X,Y)=-2THENFORA1=-2TO2STEP4:FORB1=-2TO2STEP4:GOSUB1370:NEXTB1
1360 NEXTA1:IFR<>-99THENR=-99:GOTO1240
1365 GOTO1420
1370 U=X+A1:V=Y+B1:IFU<1ORU>8ORV<1ORV>8THEN1400
1380 IFP(U,V)=0ANDP(X+A1/2,Y+B1/2)>0THENGOSUB910
1400 RETURN
1420 FORT=1TO1400:NEXT:GOSUB20000:GOTO10
1880 PRINT:PRINT" I CONCEDE...":END
2000 REM-COMMENTS-
2010 POKEA+640,73:POKEA+642,65:POKEA+643,77
2015 IFABS(R1-R3)=2THEN2050
2017 POKEA+645,77:POKEA+646,79
2020 POKEA+647,86:POKEA+648,73:POKEA+649,78:POKEA+650,71:POKEA+651,46
2030 POKEA+652,46:POKEA+653,46:RETURN
2050 POKEA+645,74:POKEA+646,85:POKEA+647,77:POKEA+648,80:POKEA+649,73
2060 POKEA+650,78:POKEA+651,71:POKEA+652,46:POKEA+653,46:POKEA+654,46
2070 RETURN
4000 POKEB1,187:POKEB1+1,187:POKEB1+32,187:POKEB1+33,187:RETURN
5000 Q=Q-4:IFP(X,Y)=-2THENQ=Q-2
5002 L6=1
5003 IF(ABS(Y-V)=2ORABS(X-U)=2)ANDRND(X)*100<40THENQ=Q-1
5004 IFL9=1ANDL7=1THENQ=Q-1:L7=0
5005 GOTO1080
9999 END
10000 REM-CHESSBOARD-
10005 FORB=ATOA+15:POKEB,154:POKEB+544,155:NEXT
10010 FORB=B+32TOA+544STEP32:POKEB,156:POKEB-17,157:NEXT
10015 POKEA-1,165:POKEA+16,167:POKEA+560,168:POKEA+543,166
10017 GOTO10047:REM-THIS FOR ALTERNATE BOARD-
10020 FORB=A+33TOA+45STEP2:POKEB,143:POKEB+481,136:NEXT
10025 FORB=B+64TOA+512STEP64:POKEB,135:POKEB-47,128:NEXT
10040 FORB=A+66TOA+452STEP64:FORB1=BTOB+12STEP2:POKEB1,209:NEXTB1,B
10045 FORB=A+97TOA+481STEP64:FORB1=BTOB+12STEP2:POKEB1,207:NEXTB1,B
10047 REM-CHEC. INIT.--
10050 DIMP(8,8):FORX=1TO8:FORY=1TO3:IF(X+Y)/2=INT((X+Y)/2)THENP(X,Y)=1
10055 IF(X+Y+5)/2=INT((X+Y+5)/2)THENP(X,Y+5)=-1
10060 NEXTY,X:P(1,7)=-1
10065 X=57:FORB=A+62TOA+510STEP64:X=X-1:POKEB,X:NEXT
10070 FORB=A+576TOA+590STEP2:POKEB,X:X=X+1:NEXT
10075 RETURN
20000 REM--PIECES--
20005 Y=9:FORB=A+32TOA+480STEP64:X=0:Y=Y-1:FORB1=BTOB+14STEP2:X=X+1
20010 E3=168:M=P(X,Y):T=(X+Y)/2:IFM<0THENPOKEB1,88
20011 REM INSTRUCTIONS INVOLVING "T" ACCOUNT FOR FILLED BLOCKS
20012 IFT<>INT(T)THENGOSUB4000
20015 IFM>0THENPOKEB1,79
20017 IFT=INT(T)THENPOKEB1+1,32:POKEB1+32,32
20020 IFABS(M)=2THENE3=107
20040 IFM=0ANDT=INT(T)THENPOKEB1,32:POKEB1+33,32:GOTO20100
20050 IFT<>INT(T)THEN20100
20099 POKEB1+33,E3
20100 NEXTB1,B:RETURN

View file

@ -0,0 +1,177 @@
1 DEFFNQ(X)=INT(RND(RS)*X)+1
2 REM
3 REM * HANGWOMAN *
4 REM
10 DEFFNQ(X)=INT(RND(RS)*X)+1
11 C=53446:Y=0:RS=PEEK(8191)
12 POKE11,0:POKE12,253
18 PRINT:PRINTTAB(6);"HANGWOMAN":FORM=1TO22:PRINT:NEXT
20 GOSUB800:C=C-32
25 A$="USED LETTERS:":P=C+103:GOSUB850
28 A$="AND THE WORD:":P=C+551:GOSUB850
30 GOSUB900:A$="":FORM=1TOLEN(B$):A$=A$+CHR$(95):NEXTM:L=1:R=C+167
31 K=1:S=1
35 REM*BEGIN QUEST*
39 P=C+616:GOSUB850
40 IFY=0THENX=4:GOTO42
41 X=FNQ(10):IFX<4THENC$="GIVE ME A LETTER: "
42 IFX=4ORX=5ORX=6THENC$="WHAT DO YOU THINK? "
43 IFX>6ANDY=1THENC$="TRY ANOTHER LETTER: "
45 GOSUB890:Y=1
46 X=USR(X):A=PEEK(531):IFA<65ORA>90THEN46
50 PRINTCHR$(A);
51 RS=RS+A/K
52 FORT=1TO1500:NEXTT
55 FORN=1TOLEN(B$):IFCHR$(A)=MID$(B$,N,1)THEN75
58 NEXTN
61 X=FNQ(10):IFX<4THENC$="I DON'T THINK SO..."
62 IFX=4ORX=5ORX=6THENC$="WELL, ALMOST..."
63 IFX>6THENC$="NOBODY'S PERFECT..."
64 GOSUB875
65 ONKGOSUB200,280,210,220,230,260,240,250,320,340
70 K=K+1:GOTO85
75 REM*MATCH*
76 FORM=1TOLEN(A$):IFCHR$(A)<>MID$(A$,M,1)THEN78
77 C$="YOU DID THAT, DUMMY!":GOTO64
78 NEXTM
79 GOSUB190
80 FORM=NTOLEN(B$)
81 IFMID$(B$,M,1)=CHR$(A)THENA$=MID$(A$,1,M-1)+CHR$(A)+MID$(A$,M+1)
82 NEXTM
85 REM*SHOW LETTER*
90 POKER+1,A:R=R+2:S=S+1:IFS>5THENS=1:R=R+54
92 L=L+1:IFL>26ORK>10THEN150
94 FORM=1TOLEN(A$):IFMID$(A$,M,1)=CHR$(95)THEN35
96 NEXTM
100 REM*WON GAME*
105 P=C+616:GOSUB850
108 IFW=0THENC$="YOU ACTUALLY WON!"
110 IFW=1THENC$="YOU'RE IMPROVING..."
112 IFW=2THENC$="WHAT CAN I SAY?"
114 IFW=3THENC$="IT WAS EASY ANYWAY..."
116 IFW>3THENC$="YOU'RE TOO GOOD"
118 W=W+1:GOSUB875
119 GOSUB600
120 IFFNQ(10)>5THENC$="WANT TO TRY AGAIN? ":GOTO125
122 C$="HOW ABOUT ANOTHER? "
125 GOSUB875:X=USR(X):A=PEEK(531):IFCHR$(A)="Y"THENPRINT:GOTO10
130 GOTO189
150 REM*LOST GAME*
155 P=C+616:A$=B$:GOSUB850
160 IFV=0THENC$="I KNEW YOU'D SLIP!"
162 IFV=1THENC$="THAT WAS PRETTY SAD"
163 IFV=2THENC$="BOY, YOU NEED HELP..."
165 IFV>2THENC$="GO SIT ON A BOOGERPOT"
170 V=V+1:GOSUB875:GOSUB625:GOTO120
189 END
190 IFFNQ(10)<7THEN196
191 IFFNQ(10)>5 THEN194
192 C$="WELL, ALMOST...":GOSUB875:C$=" IS GOOD ENOUGH!!":GOSUB875
193 GOTO199
194 C$="I DON'T THINK SO...":GOSUB875:C$="I CHANGED MY MIND!!!"
195 GOSUB875:GOTO199
196 C$="WOW! YOU FOUND ONE!":GOSUB875
199 RETURN
200 REM*HEAD*
202 POKEC+67,150:POKEC+68,150:POKEC+98,201:POKEC+101,200
204 POKEC+130,140:POKEC+133,139:POKEC+162,199:POKEC+165,202
206 POKEC+195,135:POKEC+196,135
207 IFFNQ(10)>5THENC$="THERE'S THE HEAD.":GOSUB875:GOTO209
208 C$="OOPS, SHE'S GOT HEAD!":GOSUB875
209 RETURN
210 REM*NECK*
212 POKEC+195,210:POKEC+196,207:POKEC+227,190:POKEC+228,189
215 C$="OH MY...A NECK.":GOSUB875
219 RETURN
220 REM*R.ARM*
222 POKEC+226,189:FORM=C+257TOC+353STEP32:POKEM,143:NEXTM
224 POKEC+354,208:POKEC+322,143:POKEC+290,143
225 C$="LOOKS LIKE A BONY ARM":GOSUB875
229 RETURN
230 REM*L.ARM*
232 POKEC+229,190:FORM=C+262TOC+358STEP32:POKEM,136:NEXTM
234 POKEC+357,209:POKEC+325,136:POKEC+293,136
235 C$="ANOTHER BONY ARM!":GOSUB875
239 RETURN
240 REM*R.LEG*
242 POKEC+387,136:FORM=C+418TOC+514STEP32:POKEM,143:NEXTM
244 POKEC+515,208:POKEC+483,143:POKEC+451,143:POKEC+419,143
245 C$="OH, A LOVELY LEG!":GOSUB875
249 RETURN
250 REM*L.LEG*
252 POKEC+388,143:FORM=C+421TOC+517STEP32:POKEM,136:NEXTM
254 POKEC+516,128
255 C$="ANOTHER PEACHY LEG...":GOSUB875
259 RETURN
260 REM*R.HAND*
265 POKEC+386,89
270 REM*L.HAND*
275 POKEC+389,89
276 C$="DISHPAN HANDS....":GOSUB875
279 RETURN
280 REM*FACE*
285 POKEC+99,111:POKEC+100,111
305 POKEC+131,220:POKEC+132,223:POKEC+163,135:POKEC+164,135
308 C$="A LEWD EXPRESSION.":GOSUB875
309 RETURN
320 REM*R.FOOT*
325 POKEC+547,140:POKEC+579,172
330 REM*L.FOOT*
335 POKEC+548,139:POKEC+580,172
336 C$="WHAT GOES TIPTOE?":GOSUB875
339 RETURN
340 REM*CLOTHES*
342 FORM=C+260TOC+356STEP32:POKEM,136:NEXTM
344 POKEC+387,210:POKEC+388,207:POKEC+259,95
346 C$="NOW SHE'S DRESSED!":GOSUB875
349 RETURN
600 REM*LAUGH*
601 IFK>11THEN625
605 FORM=1TO50
606 POKEC+163,197:POKEC+164,195
607 FORT=1TO50:NEXTT
609 POKEC+163,135:POKEC+164,135
611 FORT=1TO50:NEXTT
615 NEXTM
620 RETURN
625 REM*KICK*
627 FORM=1TO50
630 POKEC+547,202:POKEC+548,199:POKEC+578,166:POKEC+581,168
633 POKEC+579,32:POKEC+580,32
635 FORT=1TO75:NEXTT
638 POKEC+547,140:POKEC+548,139:POKEC+578,32:POKEC+581,32
640 POKEC+579,172:POKEC+580,172
645 FORT=1TO75:NEXTT
650 NEXTM:RETURN
800 REM*MAKE GALLOW*
803 FORM=C+1TOC+4:POKEM,135:NEXTM:POKEC,210:POKEC+5,136:POKEC+37,136
806 FORM=C+32TOC+17*32STEP32:POKEM,136:NEXTM:POKEM,209:POKEM-1,128
809 FORN=M+1TOM+5:POKEN,128:NEXTN
820 RETURN
850 REM*POKE WORD*
855 FORM=1TOLEN(A$):POKEP,ASC(MID$(A$,M,1)):P=P+1:NEXTM
859 RETURN
875 REM*DISP.MESG*
885 PRINTCHR$(13);" ";CHR$(13);C$;
886 FORT=1TO1500:NEXTT
889 RETURN
890 PRINTCHR$(13);" ";CHR$(13);C$;
899 RETURN
900 REM*GET WORD*
905 T=FNQ(100)
910 FORT1=1TOT:READB$:IFB$="*"THENRESTORE:READB$
915 NEXTT1
930 A$="":FORT=1TOLEN(B$):T1=ASC(MID$(B$,T,1))
935 IFT1=65THENT1=91
940 A$=A$+CHR$(T1-1):NEXTT
950 B$=A$:RETURN
960 REM*TEST*
965 T=1:GOSUB910:PRINTB$:GOTO965
1000 DATAIFMMP,RVJFU,EPPSLOPC,IVSSZ,BDJE,VOEFSXFBS,LJUDIFO,XBZ
1010 DATAMJTUFO,SBDJOH,ZPVST,HPBU,CPPHFS,GJSTU,PQFSBUJPO,VUFOTJM
1020 DATAIBQQZ,TLJQQFS,TXJUDI,VQQFS,BSNPS,KPZ,AJQQFS,XFSF,HFUUJOH
1030 DATAQBOEB,BGSBJE,UPVDIZ,SJTL,DFOUT,QMFBTF,CVZ
1040 DATAFOWFMPQF,SIZUIN,MJQTUJDL,PWFS,PCTBDMF,CVMC,CVSOFE,UIJT
1045 DATAGSPN,OJCCMF,TUJOH,SPMMFS,RVJDLTBOE,TIFQIFSE,GSPNKFGG
1050 DATADBOEMF,TQJEFS,DFSFBM,HPJOH,XIJTLFS,QPUUZ,XIFUIFS,VODMF,IPQF
1060 DATA*

143
apps/c1p/BASIC/JP/LIFE.BAS Normal file
View file

@ -0,0 +1,143 @@
1 REM-GRAPHICS WITH-
2 REM-GEOMETRY/LIFE-
3 REM--USER ROUTINE-
4 REM--MEM.SIZE:8167
5 RESTORE:B=8192:POKE11,232:POKE12,31:FORC=1TO24:PRINT:NEXT
6 FORA=B-24TOB-1:READD:POKEA,D:NEXT
7 DATA169,32,160,8,162,0,157,0,208,232,208
8 DATA250,238,240,31,136,208,244,169,208,141,240,31,96
10 REM-MAIN PROGRAM-
12 DIMY(21,21),U(20)
13 GOSUB800
15 POKE8169,32:X=USR(X):AA=54023:G=1:Z=-1
20 FORA=0TO18:POKEAA+A,128:POKEAA+19-A*32,136
25 POKEAA-590-A,128:POKEAA-576+A*32,136
30 NEXTA:POKEAA,209
35 FORB=0TO9:FORA=0TO18:POKEAA-558-A+B*32,209
40 IFB<9ANDA>0THENPOKEAA+A-(B+1)*32,128
43 IFA=0THENPOKEAA-(B+1)*32,209
45 IFA<18THENPOKEAA+A+1-B*32,209
50 NEXTA,B
55 B=64:A=AA+31:FORC=1TO19:POKEA+C,B+C:POKEA-C*32,B+C:NEXT
60 MA=1:NA=1:MI=21:NI=21:REM--GRAPHING--
65 POKEAA+102,123:POKEAA+104,44:POKEAA+106,124
70 POKEAA+103,95:POKEAA+105,95:GOSUB1000:A=C:IFC<0THEN85
73 POKEAA+103,96+C
75 GOSUB1000:B=C:IFC<0THEN85
77 POKEAA+105,96+C:FORT=1TO75:NEXT:POKEAA+A-1-(B-1)*32,161
80 A=A+1:B=B+1:Y(A,B)=1:FORT=1TO250:NEXT:GOSUB400:GOTO70
85 FORC=1TO24:PRINT:NEXT:FORT=1TO1000:NEXT:POKE8169,46:X=USR(X)
87 AA=AA+31:GOSUB300:GOSUB200
90 FORB=1TO21:FORA=1TO21:IFY(A,B)=0THEN100
95 POKEAA+A-1-(B-1)*32,240:P=P+1
100 NEXTA,B:IFP=0THEN15
110 POKEAA+65,91:POKEAA+66,71:POKEAA+67,69:POKEAA+68,78:POKEAA+69,61
112 POKEAA+73,32:POKEAA+74,32
115 POKEAA+75,80:POKEAA+76,79:POKEAA+77,80:POKEAA+78,61:POKEAA+82,93
117 C=3:G$=STR$(G)
120 POKEAA+69+C,ASC(RIGHT$(G$,4-C)):C=C-1:IFC>0THEN120
125 GOSUB605
135 REM-LIFE/DEATH-
140 K=0:FORB=MITOMA:FORA=NITONA
143 R=PEEK(AA+A-1-(B-1)*32):P1=P:POKEAA+A-1-(B-1)*32,171
145 IFY(A,B)<>0THEN155
150 GOSUB500:IFX=B1THENY(A,B)=-1:POKEAA+A-1-(B-1)*32,240:P=P+1:K=1
153 GOTO160
155 GOSUB500:IFX<L1ORX>L2THENY(A,B)=2:POKEAA+A-1-(B-1)*32,46:P=P-1:K=1
157 IFX1>0THENPOKEAA+82,43:POKEAA+83,93
160 IFP<>P1THEN180
170 POKEAA+A-1-(B-1)*32,R
180 GOSUB605:NEXTA,B
181 IFK=0THENGOSUB1000:GOTO15
182 MA=1:NA=1:MI=21:NI=21
183 FORA=1TO21:FORB=1TO21:IFY(A,B)=2THENY(A,B)=0
185 IFY(A,B)=0THEN192
187 IFY(A,B)=-1THENY(A,B)=1
190 GOSUB400
192 NEXTB,A
193 IFP=0THENGOSUB1000:GOTO15
194 K=0:GOSUB300:IFK=0THEN199
195 GOSUB200:FORD=21TO1STEP-1:FORC=1TO21
196 IFY(C,D)=0THENPOKEAA+C-1-(D-1)*32,46:GOTO198
197 POKEAA+C-1-(D-1)*32,240
198 NEXTC,D:GOSUB250
199 G=G+1:GOTO117
200 FORC=1TO19:U(C)=PEEK(AA+64+C):NEXT
205 RESTORE:FORC=1TO100:READD:IFD>=0THENNEXT
210 FORC=1TO19:READD:POKEAA+64+C,D:NEXT
220 RETURN
230 DATA-1,32,32,32,82,69,45,67,69,78,84,69,82,73,78,71,32,32,32,32
250 FORC=1TO19:POKEAA+64+C,U(C):NEXT:RETURN
300 L=INT(((21-MA)-(MI-1))/2+.5)
301 IFL=0THEN350
305 K=1:IFL>0THEN330
310 FORD=1-LTO21:FORC=1TO21:Y(C,D+L)=Y(C,D)
315 Y(C,D)=0
320 NEXTC,D:MA=MA+L:MI=MI+L:GOTO350
330 FORD=21-LTO1STEP-1:FORC=1TO21
340 Y(C,D+L)=Y(C,D):Y(C,D)=0:NEXTC,D
345 MA=MA+L:MI=MI+L
350 L=INT(((21-NA)-(NI-1))/2)
351 IFL=0THENRETURN
355 K=1:IFL>0THEN375
360 FORC=1-LTO21:FORD=1TO21
365 Y(C+L,D)=Y(C,D):Y(C,D)=0:NEXTD,C
370 NA=NA+L:NI=NI+L:RETURN
375 FORC=21-LTO1STEP-1:FORD=1TO21
380 Y(C+L,D)=Y(C,D):Y(C,D)=0:NEXTD,C
385 NA=NA+L:NI=NI+L:RETURN
400 IFB<=MITHENMI=B-1
410 IFB>=MATHENMA=B+1
420 IFA<=NITHENNI=A-1
430 IFA>=NATHENNA=A+1
445 IFMA>21THENMA=21
450 IFMI<1THENMI=1
465 IFNA>21THENNA=21
470 IFNI<1THENNI=1
480 RETURN
500 X=0:X1=0
505 FORC=C1*-1TOC1STEPC1:FORD=C1*-1TOC1STEPC1
507 IFA+C<1ORA+C>21ORB+D<1ORB+D>21THENX1=1:GOTO525
510 IFY(A+C,B+D)<1OR(C=0ANDD=0)THEN525
515 X=X+1
525 NEXTD,C
530 RETURN
600 Z=Z*-1
605 G$=STR$(P):C=3
606 IFZ>0THEN615
610 POKEAA+78+C,ASC(RIGHT$(G$,4-C)):C=C-1:IFC>0THEN610
612 GOTO620
615 POKEAA+79,32:POKEAA+80,32:POKEAA+81,32
620 RETURN
800 PRINT" WHAT ARE THE LOWER/":PRINT:PRINT" UPPER SURVIVAL LIMITS.."
805 INPUTL1,L2:PRINT
810 PRINT" INPUT BIRTH FACTOR";:INPUTB1
820 PRINT:PRINT" INPUT CELL DISTANCE";:INPUTC1
825 FORC=1TO24:PRINT:NEXT:RETURN
1000 REM--SCAN--
1005 C=0:K=57088:POKE530,1
1007 FORT=1TO150:NEXT
1010 POKEK,223:IFPEEK(K)=191THENC=12
1015 IFPEEK(K)=223THENC=15
1017 IFPEEK(K)=247THENC=-1
1020 POKEK,239:IFPEEK(K)=191THENC=5
1025 IFPEEK(K)=223THENC=18
1030 IFPEEK(K)=253THENC=9
1035 POKEK,247:IFPEEK(K)=191THENC=4
1037 IFPEEK(K)=127THENC=19
1040 IFPEEK(K)=223THENC=6
1045 IFPEEK(K)=239THENC=7
1050 IFPEEK(K)=247THENC=8
1055 IFPEEK(K)=251THENC=10
1060 IFPEEK(K)=253THENC=11
1065 POKEK,251:IFPEEK(K)=191THENC=3
1070 IFPEEK(K)=239THENC=2
1075 IFPEEK(K)=247THENC=14
1080 IFPEEK(K)=251THENC=13
1085 POKEK,253:IFPEEK(K)=127THENC=17
1090 IFPEEK(K)=191THENC=1
1093 IFPEEK(K)=223THENC=20
1095 IFPEEK(K)=253THENC=16
1100 IFC=0THEN1010
1105 IFC=20THENY(A,B)=0:POKEAA+A-2-(B-2)*32,209:C=0:GOTO1010
1110 POKE530,0:RETURN

View file

@ -0,0 +1,212 @@
10 REM - OTHELLO -
15 REM
20 A=53184:CO=79:CX=88
21 POKE11,0:POKE12,253
25 PL=1
30 GOSUB9000
40 DIMB(8,8)
50 B(4,5)=1:B(5,5)=2:B(4,4)=2:B(5,4)=1
60 GOSUB8000
70 GOSUB7000
80 GOSUB6000
90 GOSUB5000
100 GOSUB4000
110 GOTO60
999 END
4000 REM - MAKE MOVE IN TABLE -
4010 IFUP=0ANDDN=0ANDLF=0ANDRT=0ANDUL=0ANDUR=0ANDLL=0ANDLR=0THEN4990
4020 B(C,R)=PL
4030 IFUP=0THEN4100
4040 FORZ=1TOUP
4050 B(C,R+Z)=PL
4060 NEXT
4100 IFDN=0THEN4200
4110 FORZ=1TODN
4120 B(C,R-Z)=PL
4130 NEXT
4200 IFLF=0THEN4300
4210 FORZ=1TOLF
4220 B(C-Z,R)=PL
4230 NEXT
4300 IFRT=0THEN4400
4310 FORZ=1TORT
4320 B(C+Z,R)=PL
4330 NEXT
4400 IFUL=0THEN4500
4410 FORZ=1TOUL
4420 B(C-Z,R+Z)=PL
4430 NEXT
4500 IFUR=0THEN4600
4510 FORZ=1TOUR
4520 B(C+Z,R+Z)=PL
4530 NEXT
4600 IFLL=0THEN4700
4610 FORZ=1TOLL
4620 B(C-Z,R-Z)=PL
4630 NEXT
4700 IFLR=0THEN4900
4710 FORZ=1TOLR
4720 B(C+Z,R-Z)=PL
4730 NEXT
4900 PL=3-PL
4990 RETURN
5000 REM - LEGAL MOVE? -
5010 UP=0:DN=0:LF=0:RT=0:UL=0:UR=0:LL=0:LR=0
5020 IFB(C,R)<>0THENGOTO5990
5030 FORTR=R-1TO1STEP-1
5040 IFTR<1THENDN=0:GOTO5100
5045 IFB(C,TR)=0THENDN=0:GOTO5100
5050 IFB(C,TR)=3-PLANDTR>1THENDN=DN+1
5060 IFB(C,TR)=PLTHENGOTO5100
5070 NEXT
5080 DN=0
5100 FORTR=R+1TO8
5110 IFTR>8THENUP=0:GOTO5200
5115 IFB(C,TR)=0THENUP=0:GOTO5200
5120 IFB(C,TR)=(3-PL)ANDTR<8THENUP=UP+1
5130 IFB(C,TR)=PLTHENGOTO5200
5140 NEXT
5150 UP=0
5200 FORTC=C-1TO1STEP-1
5210 IFTC<1THENLF=0:GOTO5300
5215 IFB(TC,R)=0THENLF=0:GOTO5300
5220 IFB(TC,R)=(3-PL)ANDTC>1THENLF=LF+1
5230 IFB(TC,R)=PLTHENGOTO5300
5240 NEXT
5250 LF=0
5300 FORTC=C+1TO8
5310 IFTC>8THENRT=0:GOTO5400
5315 IFB(TC,R)=0THENRT=0:GOTO5400
5320 IFB(TC,R)=(3-PL)ANDTC<8THENRT=RT+1
5330 IFB(TC,R)=PLTHENGOTO5400
5340 NEXT
5350 RT=0
5400 TC=C-1
5410 FORTR=R+1TO8
5420 IFTR>8ORTC<1THENUL=0:GOTO5500
5425 IFB(TC,TR)=0THENUL=0:GOTO5500
5430 IFB(TC,TR)=(3-PL)ANDTR<8ANDTC>1THENUL=UL+1
5440 IFB(TC,TR)=PLTHENGOTO5500
5450 TC=TC-1
5460 NEXT
5470 UL=0
5500 TC=C+1
5510 FORTR=R+1TO8
5520 IFTR>8ORTC>8THENUR=0:GOTO5600
5525 IFB(TC,TR)=0THENUR=0:GOTO5600
5530 IFB(TC,TR)=(3-PL)ANDTR<8ANDTC<8THENUR=UR+1
5540 IFB(TC,TR)=PLTHENGOTO5600
5550 TC=TC+1
5560 NEXT
5570 UR=0
5600 TC=C-1
5610 FORTR=R-1TO1STEP-1
5620 IFTR<1ORTC<1THENLL=0:GOTO5700
5625 IFB(TC,TR)=0THENLL=0:GOTO5700
5630 IFB(TC,TR)=(3-PL)ANDTR>1ANDTC>1THENLL=LL+1
5640 IFB(TC,TR)=PLTHENGOTO5700
5650 TC=TC-1
5660 NEXT
5670 LL=0
5700 TC=C+1
5710 FORTR=R-1TO1STEP-1
5720 IFTR<1ORTC>8THENLR=0:GOTO5990
5725 IFB(TC,TR)=0THENLR=0:GOTO5990
5730 IFB(TC,TR)=(3-PL)ANDTR>1ANDTC<8THENLR=LR+1
5740 IFB(TC,TR)=PLTHENGOTO5990
5750 TC=TC+1
5760 NEXT
5770 LR=0
5990 RETURN
6000 REM - CHECK INPUT -
6010 REM - AND SET UP -
6020 REM - R (ROW) AND -
6030 REM - C (COLUMN) -
6040 IFLEN(I$)<>2THENGOSUB7000:GOTO6040
6050 C1=ASC(LEFT$(I$,1)):C2=ASC(RIGHT$(I$,1))
6060 IF(C1>=65)AND(C1<=72)THENR=C1:GOTO6080
6070 IF(C2>=65)AND(C2<=72)THENR=C2:GOTO6090
6075 GOSUB7000:GOTO6040
6080 IF(C2<49)OR(C2>56)THENGOSUB7000:GOTO6040
6085 C=C2:GOTO6100
6090 IF(C1<49)OR(C1>56)THENGOSUB7000:GOTO6040
6095 C=C1
6100 C=C-48:R=R-64
6990 RETURN
7000 REM - INPUT MOVE -
7001 POKE(A+256+20*32+18),(PL+48)
7005 I$="":T2=A+256+21*32+7
7006 FORX=1TO20:POKE(T2+X),32:NEXT
7009 POKET2,63:T2=T2+1:POKET2,161
7010 T1=USR(T1):T1=PEEK(531)
7011 IFT1=13THEN7030
7012 IFT1<>127THEN7019
7013 IFI$=""THEN7010
7015 POKET2,32:T2=T2-1:POKET2,161
7017 IFLEN(I$)=1THENI$="":GOTO7010
7018 I$=LEFT$(I$,LEN(I$)-1):GOTO7010
7019 I$=I$+CHR$(T1)
7020 POKET2,T1:T2=T2+1:POKET2,161
7023 IFLEN(I$)>10THENGOTO7000
7025 GOTO7010
7030 FORY=1TO8
7990 RETURN
8000 REM - MAKE MOVE -
8010 S=A+8*32+7
8020 FORX=1TO8
8030 FORY=1TO8
8040 P=S+2*X+2*32*(8-Y)
8050 IFB(X,Y)=1THENPOKEP,CX
8060 IFB(X,Y)=2THENPOKEP,CO
8080 NEXTY,X
8990 RETURN
9000 REM - FRAME -
9010 T1=A+256
9020 FORY=1TO24
9030 PRINT
9040 NEXT
9050 FORX=1TO16
9060 POKE(A+224+X+7),128
9070 NEXT
9080 FORY=1TO16STEP2
9090 FORX=1TO8
9100 T2=2*(X-1)
9110 POKE(T1+(Y-1)*32+8+T2),136
9120 POKE(T1+Y*32+8+T2),209
9130 POKE(T1+Y*32+9+T2),128
9140 NEXTX
9150 POKE(T1+(Y-1)*32+8+2*(X-1)),136
9160 POKE(T1+Y*32+8+2*(X-1)),136
9170 NEXTY
9180 T3=T1+6
9190 T4=T3+577
9200 FORZ=1TO8
9210 POKE(T3+2*(8-Z)*32),((Z-1)+65)
9220 POKE(T4+2*Z),((Z-1)+49)
9230 NEXT
9240 T2=A+903
9250 POKET2,ASC("P"):T2=T2+1
9260 POKET2,ASC("L"):T2=T2+1
9270 POKET2,ASC("A"):T2=T2+1
9280 POKET2,ASC("Y"):T2=T2+1
9290 POKET2,ASC("E"):T2=T2+1
9300 POKET2,ASC("R"):T2=T2+1
9310 T2=T2+1
9320 POKET2,ASC("N"):T2=T2+1
9330 POKET2,ASC("O"):T2=T2+1
9340 POKET2,ASC("."):T2=T2+3
9350 POKET2,ASC(":"):T2=T2+1
9990 RETURN
10000 REM - FUN -
10005 A=53248
10010 FORX=1TO24:PRINT:NEXT:T1=A+263
10020 FORX=1TO16
10025 FORY=1TO8
10026 POKET1+(X-2)*32,32
10035 NEXTY,X
10040 FORX=16TO1STEP-1
10045 FORY=8TO1STEP-1
10046 POKET1+X*32,32
10050 POKET1+(X-1)*32,(9-Y)+127
10055 NEXTY,X
10060 GOTO10020

View file

@ -0,0 +1,60 @@
5 FORC=1TO24:PRINT:NEXT
10 PRINT" ENTER NO. OF TYPES":PRINT:PRINT" OF DATA PER YEAR";:INPUTN
20 PRINT:PRINT" INPUT NAME FOR:":PRINT
25 FORC=1TON:PRINT" TYPE";C;:INPUTB$(C):NEXTC
30 PRINT
99 X=1:DIMA(4,4,12),P(4,12),S(4)
100 PRINT" WHAT IS THE YEAR OF":PRINT:PRINT" DATA-BASE";X;
105 INPUTY(X):IFY(X)=0THEN150
110 FORT=1TON:PRINT
111 PRINT" ";B$(T);"'S";:INPUTA$:FORM=1TO11:FORC=1TO255
120 IFC=LEN(A$)THENPRINT:PRINT" DATA ERROR":PRINT:GOTO111
125 IFMID$(A$,C,1)=";"ORMID$(A$,C,1)="/"THEN131
130 NEXTC
131 REM-SIFTING DATA-
135 A(X,T,M)=VAL(A$):A$=MID$(A$,C+1):NEXTM
140 A(X,T,M)=VAL(A$)
145 NEXTT:X=X+1:PRINT:GOTO100
150 FORT=1TON:S(T)=0:FORM=1TO12:P(T,M)=0:FORX1=1TOX-1
155 P(T,M)=P(T,M)+A(X1,T,M):NEXTX1:P(T,M)=P(T,M)/(X-1)
156 S(T)=S(T)+P(T,M)
160 NEXTM,T:FORT=1TON:FORM=1TO12:P(T,M)=P(T,M)/S(T):NEXTM,T
170 FORC=1TO24:PRINT:NEXTC
180 INPUT" ENTER BASE YEAR";B
182 PRINT:PRINT" ENTER GROWTH RATE FOR:"
183 PRINT
184 FORY=1TON:PRINT" ";B$(Y);"'S";:INPUTG(Y):NEXTY
190 FORT=1TON
215 Z=0:GOSUB500:IFZ=1THENT1=S:GOTO227
220 PRINT" WHAT WAS THE TOTAL":PRINT:PRINT" FOR BASE YEAR";B
225 PRINT:PRINT" (";B$(T);"'S)";:INPUTT1
227 T(T)=T1:IFT>1THENFORV=1TO3000:NEXTV:GOTO230
228 INPUT" FORECAST YEAR";F
230 GOSUB235:NEXTT:GOTO264
235 TT=T1*(1+G(T)/100)^(F-B)
239 PRINT:PRINT:RESTORE
240 PRINT" FORECAST YEAR";F:PRINT
241 PRINT" (";B$(T);"'S)":PRINT
243 FORM=1TO12STEP3:FORC=1TO3
245 READB$,E(C):PRINTTAB(E(C));B$;:NEXTC:PRINT
250 FORC=1TO3:PRINTTAB(E(C));INT(TT*P(T,M+C-1));
260 NEXTC:PRINT:PRINT:NEXTM:RETURN
264 PRINT
267 PRINT" ENTER OTHER YEARS FOR":PRINT:PRINT" FORECASTING, BASED ON"
270 PRINT:PRINTB;"FIGURES...."
273 X1=1:PRINT
275 INPUT" ";F(X1):IFF(X1)=0THEN280
277 X1=X1+1:GOTO275
280 IFX1=1THENPRINT:PRINT" TO BEGIN AGAIN,":PRINT:GOTO180
282 FORX2=1TOX1-1:F=F(X2)
283 FORT=1TON:T1=T(T):GOSUB235
285 FORV=1TO4000:NEXTV,T
286 NEXTX2
288 PRINT:GOTO267
300 END
400 DATAJAN,1,FEB,9,MAR,17,APR,1,MAY,9,JUN,17,JUL,1,AUG,9,SEP,17,OCT,1
410 DATANOV,9,DEC,17
500 FORX1=1TOX-1:IFY(X1)<>BTHENNEXTX1
505 IFY(X1)<>BTHENRETURN
510 S=0:FORM1=1TO12:S=S+A(X1,T,M1):NEXTM1
530 Z=1:PRINT:RETURN

View file

@ -0,0 +1,70 @@
10 FORC=1TO24:PRINT:IFC=17THENGOSUB110
20 NEXTC
30 GOSUB100:RESTORE:PRINT" What tube are you":PRINT
40 INPUT" looking for";A$
50 READB$,C$
60 IFC$="0"THENGOSUB100:PRINT"SORRY, OUT OF STOCK.":GOTO30
65 IFB$=A$THEN73
70 IFVAL(C$)=0THENREADE$:GOTO50
72 GOTO50
73 IFVAL(C$)=0THENREADE$:D$=C$:C$=E$:GOTO80
76 D$=""
80 GOSUB100:PRINT" GOOD NEWS. WE HAVE":PRINT:PRINT" ";C$;" ";B$;D$;
85 IFVAL(C$)>1THENPRINT"'S";
90 PRINT" IN STOCK"
91 FORT=1TO3000:NEXTT
92 READB$,C$
94 IFB$=A$THEN73
95 IFB$="A"THEN30
96 IFVAL(C$)=0THENREADE$
98 GOTO92
100 PRINT:PRINTTAB(6);"******":PRINT:RETURN
110 PRINT" ROBERT G. PARSONS'":PRINT:PRINT" COMPUTER TUBE LIST":RETURN
210 DATA0A3,2,0A4,1,0B2,2,0C3,1,0D3,1,1A7,GT,1,1AX2,4,1C6,1,1G3,GT,5
220 DATA1H5,2,1J3,1,1N5,GT,2,1P5,GT,1,1R5,4,1S5,4,1U4,6,1U5,2,1X2,B,4
230 DATA2A5,1,2A7,2,2BN4,A,3,2CY5,2,2GK5,1,2HK5,1,2X2,2,3A3,B,1,3AL5,1
240 DATA3BC5,2,3BN6,6,3BU8,1,3BY6,1,3BZ6,4,3CB6,6,3CS6,1,3CY5,4,3DG4,1
250 DATA3DK6,4,3ER5,1,3FS5,1,3GK5,1,3HA5,1,3S4,1,3V4,2,4BN6,1,4BQ7,A,5
260 DATA4BU8,1,4BZ6,7,4CB6,4,4DT6,1,4GK5,1,5AM8,1,5AN8,1,5AQ5,2,5AR4,1
270 DATA5AT8,3,5AU4,2,5AX8,3,5CG8,3,5CL8,A,2,5CZ5,1,5GH8,A,1,5GS7,2
280 DATA5J6,3,5T8,1,5U4,GB,5,5U8,5,5V4,G,3,5V6,GT,1,5W4,1,5Y3,G,1
290 DATA5Y3,GT,3,5Y3,GT/G,1,5Y4,G,2,6A7,2,6AC7,6,6AF4,2,6AG5,7,6AG7,3
300 DATA6AH4,5,6AH4,GT,1,6AH6,4,6AH8,1,6AJ6,1,6AK5,2,6AK6,2,6AK8,1
310 DATA6AL3,1,6AL5,4,6AM8,A,3,6AN8,A,3,6AQ5,19,6AQ6,4,6AQ7,GT,1,6AS5,
320 DATA3,6AS8,2,6AT8,A,2,6AU4,GT,2,6AU5,GT,1,6AU6,10,6AU8,3,6AV5,GA,2
330 DATA6AV6,5,6AW8,2,6AW8,A,1,6AX4,10,6AX4,GTB,3,6B8,2,6BA6,3,6BA8,A
340 DATA1,6BC5,7,6BC8,1,6BE6,1,6BG6,G,1,6BH8,3,6BJ6,3,6BK5,2,6BK7,1
350 DATA6BL7,G,1,6BL8,14,6BN4,A,3,6BN6,1,6BN8,3,6BQ5,7,6BQ6,GA,3
360 DATA6BQ6,GTA,1,6BQ6,GTB,4,6BQ7,9,6BR8,A,1,6BS8,4,6BU8,3,6BX7,G,1
370 DATA6BY5,GT,1,6BY8,2,6BZ6,3,6BZ7,2,6BZ8,2,6C4,9,6C5,1,6CB6,15
380 DATA6CD6,2,6CD6,GA,1,6CF6,6,6CF7,1,6CG7,17,6CG8,A,3,6CJ3,1,6CL6,1
390 DATA6CM6,3,6CM7,6,6CN7,2,6CQ8,6,6CR6,1,6CS6,1,6CU8,1,6CX8,4,6CY5,5
400 DATA6D6,5,6DA5,1,6DE4,1,6DE6,3,6DK6,2,6DN7,1,6DQ6,1,6DQ6,B,3,6DS4,
410 DATA1,6DT6,A,2,6DW4,B,1,6DX8,1,6DY4,1,6E5,1,6EA7,1,6EA8,6,6EB8,1
420 DATA6EJ7,1,6ER5,1,6ES5,2,6EW6,1,6F5,1,6F7,1,6F8,G,3,6FD7,1,6FG7,3
430 DATA6FQ7,8,6GE5,1,6GF7,A,2,6GH8,A,5,6GK5,3,6GK6,2,6GN8,2,6GU7,2
440 DATA6GY6,2,6H6,2,6HA5,2,6HF8,1,6HG8,1,6HJ8,1,6HS8,9,6J4,2,6J5,1
450 DATA6J5,GT,1,6J6,A,4,6J7,2,6JC5,1,6JC6,A,2,6JH6,1,6JM6,1,6JN6,1
460 DATA6JN8,1,6JU8,A,1,6K6,GT,4,6K7,15,6K7,GT,1,6K8,1,6KA8,1,6KE8,4
470 DATA6KT8,1,6LJ8,1,6LT8,2,6N7,3,6P5,3,6P5,GT,1,6S4,A,6,6SA7,6,6SC7
480 DATA2,6SF5,2,6SG7,2,6SJ7,4,6SK7,2,6SL7,2,6SN7,3,6SN7,GT,8,6SQ7,10
490 DATA6T4,1,6T8,3,6T8,A,4,6U5,1,6U7,1,6U8,1,6U8,A,2,6V3,A,2,6V6,2
500 DATA6V6,GT,6,6W6,GT,2,6X4,5,6X5,5,6X8,10,6Z10,1,7A4,1,7A5,1,7A6,1
510 DATA7A7,2,7A8,1,7B7,1,7C5,1,7C7,1,7F8,2,7N7,4,7N7,GT,1,7V7,1
520 DATA7AU7,1,7AF7,1,7HG8,1,8AU8,1,8B10,1,8BA11,1,8CG7,3,8CM7,2,8CN7,
530 DATA2,8LT8,2,9A8,1,9AU7,1,10DE7,2,10GK6,1,10GN8,2,11AR11,11,117L7,
540 DATA117Z6,1,12A6,10,12A8,1,12AB5,2,12AT7,A,1,12AU6,1,12AU7,A,8
550 DATA12AV6,8,12AX4,GTB,4,12AX7,A,4,12AZ7,1,12B4,3,12B4,A,2,12BA6,6
560 DATA12BA7,4,12BE6,7,12BH7,A,6,12BR7,1,12BY7,2,12BZ7,1,12CA5,1
570 DATA12DT8,3,12DQ6,2,12DQ6,B,2,12FX5,1,12GN7,A,4,12K8,1,12L6,1
580 DATA12Q7,1,12SA7,3,12SF7,1,12SG7,1,12SH7,2,12SJ7,1,12SK7,7
590 DATA12SN7,GT,1,12SQ7,11,13DR7,1,13EN7,1,14A7,1,14B6,2,15BD11,1
600 DATA15CW5,1,17AX4,1,17BE3,1,17BF11,1,17CT3,1,17D4,1,17DQ6,2
610 DATA17DQ6,B,2,17EW8,1,17J28,1,19CL8,A,1,19T8,5,2050,3,25AX4,GT,2
620 DATA25BQ6,5,25BQ6,GA,1,25BQ6,GT,1,25C5,3,25L6,1,25L6,GT,4,25W4,2
630 DATA25Z5,2,25Z6,GT,1,26,4,27,2,33G47,A,1,33CYL,A,1,35A5,2,35C5,4
640 DATA35L6,GT,2,35W4,5,35Y4,2,35Z3,1,35Z5,1,35Z5,GT,5,41,4,45,6
650 DATA50A5,1,50B5,1,50C5,7,50EH5,1,50L6,GT,6,53,1,55,2,56,2,57,3,58
660 DATA2,59,2,6010,1,6146,A,1,71,A,3,75,2,76,3,78,1,CRC78,1,80,4,82,1
670 DATA884,6,VR90,1,9001,1,9002,1,9003,1
10000 DATAA,0

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,241 @@
1 REM*** PAUL A. JOVIAK ***
2 REM***** POKER ********
3 REM * 8K IP PROGRAM *
4 TT=200
5 POKE530,1
10 A1=2:A2=0:A3=0
12 PRINT:PRINT
13 PRINT"INSTRUCTIONS:":GOSUB9000
20 POKE54068,A1+48:POKE54069,A2+48:POKE54070,A3+48
22 G=54053:L$="YOU NOW HAVE $":GOSUB8000
23 PRINT"READY ?":F=0:F1=0
24 POKE57088,239:F=PEEK(57088):POKE57088,251
25 F1=PEEK(57088):IFF=0ANDF1=0THEN24
26 IFF1=247ANDTT=200ANDA1=2ANDA2=0ANDA3=0THEN12
27 IFF1=247THEN950
28 IFF=247THEN30
29 GOTO24
30 CLEAR
35 A1=PEEK(54036)-48:A2=PEEK(54037)-48:A3=PEEK(54038)-48
36 TT=A1*100+A2*10+A3
37 RS=RND(RND(TT))
38 FORI=1TO32:PRINT:NEXT
40 P$=" "
42 SP=1:SD=1
45 DIMM(13)
50 DIMC(4,13):DIMS(4):DIMN(13)
55 DIMV(2,5):DIMP(2,5):DIMD(2,5)
60 FORI=1TO4:FORJ=1TO13:C(I,J)=0:NEXTJ,I
70 FORI=2TO9:N(I)=48+I:NEXT:N(10)=84:N(1)=65:N(11)=74:N(12)=81
75 N(13)=75
80 FORI=1TO4:S(I)=228+I:NEXT
90 FORI=1TO5:V(1,I)=64:V(2,I)=32:NEXTI
140 FORK=1TO2:FORX=1TO5
150 GOSUB1000
160 IFK=2THEN180
170 P(1,X)=N(N):P(2,X)=S(S):R(X)=N:GOTO190
180 D(1,X)=N(N):D(2,X)=S(S)
185 W(X)=N:B(X)=N
190 NEXTX,K
200 FORI=0TO20STEP5:FORJ=0TO2
210 POKE53573+I+J,144:POKE53765+I+J,145
220 POKE54021+I+J,145:POKE53829+I+J,144
230 NEXTJ,I
240 FORI=0TO256STEP256:FORJ=0TO128STEP32
250 FORX=4TO24STEP5:POKE53604+I+J+X,146:NEXTX
260 FORX=0TO20STEP5:POKE53604+I+J+X,147:NEXT
270 NEXTJ,I
280 GOSUB2000
290 L$="HOW MANY CARDS DO":G=53477:GOSUB8000
292 L$="YOU WISH ?":G=53541:GOSUB8000:G=53477
300 POKE57088,127:F=PEEK(57088):R=0
310 IFF=127THENR=1
320 IFF=191THENR=2
330 IFF=223THENR=3
340 IFF=255THEN300
350 IFR=0THEN410
355 L$=P$:GOSUB8000
357 G=53541:GOSUB8000:G=53477
360 FORH=1TOR:L$="CARD":POKE53483,H+48
363 QC=127
365 GOSUB8000:Q=128:FORJ=1TO5:F=0
370 POKE57088,127:F=PEEK(57088):IFF=255THEN370
390 IFF=QCTHENGOSUB1000:P(1,J)=N(N):P(2,J)=S(S):R(J)=N
400 Q=Q-Q/2:QC=QC+Q:NEXTJ:L$=P$:GOSUB8000:NEXTH
410 L$=P$:GOSUB8000:G=53541:GOSUB8000:G=53477
413 GOSUB2000:GOSUB5000
415 GOSUB6900:GOSUB5000
420 HD=HC:DW=W:DY=Y:DR=PR:DT=TR:DF=FR:T1=E1:T2=E2
425 L$=P$:GOSUB8000
430 GOSUB3000
440 L$=P$:G=53541:GOSUB8000:G=53477
450 GOSUB8000
600 FORI=1TO5:W(I)=R(I):FORJ=1TO2:D(J,I)=P(J,I):NEXTJ,I
610 GOSUB5010
620 L$=P$:GOSUB8000
890 GOSUB4000
895 IFL$="I FOLD"THEN920
900 GOSUB2000
920 IFL$="I WIN"ORL$=P$THENTW=SP:Z$="YOU LOST $"
930 IFL$="YOU WIN"ORL$="I FOLD"THENTW=SD:Z$="YOU WON $"
940 PRINTZ$;TW
941 IFL$="I WIN"ORL$=P$THENTW=-TW
943 TT=TT+TW
945 A1=INT(TT/100):A2=INT((TT-A1*100)/10):A3=INT(TT-A1*100-A2*10)
948 IFTT>=500ORTT=<0THEN950
949 GOTO20
950 PRINT:IFTT>200THENPW=TT-200:PRINT"CONGRATULATIONS ,YOU WON $";PW
953 PRINT:IFTT<200THENPW=200-TT:PRINT"SORRY ,YOU LOST $";PW
955 PRINT:IFTT=200THENPRINT"YOU BROKE EVEN"
957 PRINT"THE CASHIER IS UP FRONT":PRINT:TT=200
959 INPUT"PLAY AGAIN";A$
960 IFLEFT$(A$,1)="Y"THEN5
995 GOTO49999
1000 S=INT(4*RND(RS)+1):N=INT(13*RND(RS)+1)
1010 IFC(S,N)=1THEN1000
1020 IFC(S,N)=0THENC(S,N)=1
1030 RETURN
2000 K=0:FORX=0TO20STEP5:K=K+1
2010 POKE53670+X,P(1,K):POKE53605+X,P(2,K):POKE53735+X,P(2,K)
2020 POKE53926+X,V(1,K):POKE53861+X,V(2,K):POKE53991+X,V(2,K)
2030 NEXTX:RETURN
3000 L$="WHAT IS YOUR BET":GOSUB8000
3020 L$="IN DOLLARS ($7 MAX.)?":G=53541:GOSUB8000
3030 G=53477
3031 GOTO3035
3033 L$="RAISE ME BY HOW MUCH ? ":GOSUB8000
3034 SP=SD
3035 F=0:F1=0
3040 POKE57088,127:F=PEEK(57088):POKE57088,191:F1=PEEK(57088)
3045 IFF=255ANDF1=255THEN3040
3046 IFF1<>255THEN3990
3050 Q=127:QC=128:FORI=1TO7:IFF=QTHENQ1=I
3055 QC=QC-QC/2:Q=Q+QC
3060 NEXT:L$=P$:GOSUB8000:SP=SP+Q1
3062 G=53541:GOSUB8000:G=53477
3065 IFW=0THEN3990
3070 L$="I CALL YOUR $":GOSUB8000:G=53492:L$=CHR$(Q1+48):GOSUB8000
3072 G=53477
3075 FORI=1TO2000:NEXT:L$=P$:GOSUB8000
3080 G=53477:U=INT(7*RND(F))
3082 IFSD>10ANDW<3THENU=0
3083 IFSD>20ANDW<6THENU=0
3084 SD=SD+Q1+U
3085 IFU=0THEN3990
3090 L$="I RAISE YOU $":GOSUB8000:G=53492:L$=CHR$(U+48):GOSUB8000
3095 FORI=1TO1500:NEXT
3097 L$=P$:G=53477:GOSUB8000
3100 G=53477:L$="CALL ,FOLD":GOSUB8000
3103 L$="OR INCREASE BET":G=53541:GOSUB8000:G=53477
3105 F=0:F1=0:F2=0
3110 POKE57088,251:F1=PEEK(57088):POKE57088,247:F=PEEK(57088)
3115 POKE57088,239:F2=PEEK(57088)
3120 IFF=255ANDF1=255ANDF2=255THEN3110
3125 L$=P$:GOSUB8000
3126 G=53541:GOSUB8000:G=53477
3130 IFF=223THENL$="I WIN":GOSUB8000:GOTO920
3140 IFF2=253THEN3033
3150 SP=SD
3990 RETURN
4000 IFW=1THENKO=1
4010 IFW=2THENKO=2
4020 IFW=3THENKO=3
4030 IFW=4THENKO=6.5
4040 IFY=5THENKO=5
4050 IFW=7THENKO=6
4060 IFW=6THENKO=7
4070 IFY=5ANDW=7THENKO=8
4080 IFDW=1THENKD=1
4090 IFDW=2THENKD=2
4100 IFDW=3THENKD=3
4110 IFDW=4THENKD=6.5
4120 IFDY=5THENKD=5
4130 IFDW=7THENKD=6
4240 IFDW=6THENKD=7
4250 IFDY=5ANDDW=7THENKD=8
4300 IFKO>KDTHENL$="YOU WIN"
4310 IFKD>KOTHENL$="I WIN"
4320 IFKD=0THENL$="I FOLD"
4330 IFKD=0THEN4890
4400 IFKD<>KOTHEN4890
4410 IFKO=2ORKD=2THEN4460
4420 IFE1>T1ORDT<TRORFR>DFTHENZ=1
4425 IFT1>E1ORDT>TRORDF>FRTHENZ=0
4430 IFE1=1ORTR=1ORFR=1ANDT1<>1ANDDT<>1ANDDF<>1THENZ=1
4435 IFT1=1ORDT=1ORDF=1ANDE1<>1ANDTR<>1ANDFR<>1THENZ=0
4440 IFT1<>E1ORDT<>TRORDF<>FRTHEN4460
4450 IFHC>HDTHENZ=1
4455 IFHD>HCTHENZ=0
4456 IFHC=1THENZ=1
4457 IFHD=1THENZ=0
4460 IFE2=0THEN4530
4465 IFE2>T1ANDE2>T2THENZ=1
4470 IFE1>T1ANDE1>T2THENZ=1
4475 IFE1=T1ANDE2>T2THENZ=1
4480 IFE2=T1ANDE1>T2THENZ=1
4485 IFE1=T2ANDE2>T1THENZ=1
4490 IFE2=T2ANDE1>T1THENZ=1
4500 IFE1=1ORE2=1ANDT1<>1ANDT2<>1THENZ=1
4510 IFT1=1ORT2=1ANDE1<>1ANDE2<>1THENZ=0
4515 IFT2<>E1ANDT1<>E1THEN4530
4516 IFT2<>E2ANDT1<>E2THEN4530
4520 IFHC>HDTHENZ=1
4525 IFHD>HCTHENZ=0
4530 IFKO<>5ORKO<>6ORKO<>7ORKO<>8THEN4880
4540 IFHC>HDTHENZ=1
4550 IFHD>HCTHENZ=0
4880 IFZ=1THENL$="YOU WIN"
4885 IFZ=0THENL$="I WIN"
4890 GOSUB8000
4900 RETURN
5000 FORI=1TO2:FORJ=1TO5:V(I,J)=D(I,J):NEXTJ,I
5005 L$="THE ANTE IS $1.00":GOSUB8000
5010 W=0:FORI=1TO4:FORJ=I+1TO5
5020 IFD(1,I)=D(1,J)THENW=W+1
5030 NEXTJ,I
5040 A=0:FORI=1TO4
5050 IFD(2,I)=D(2,I+1)THENA=A+1
5060 NEXTI:IFA=4THENW=7
5080 FORK=1TO5:FORI=1TO4:FORJ=I+1TO5:IFW(I)<W(I+1)THEN5110
5100 W(6)=W(I):W(I)=W(I+1):W(I+1)=W(6)
5110 NEXTJ,I,K:Y=0
5120 A=0:FORI=1TO4:IFW(I)+1=W(I+1)THENA=A+1
5130 NEXTI:IFA=4THENY=5
5140 IFW(1)=1ANDW(2)=10ANDW(3)=11ANDW(4)=12ANDW(5)=13THENY=5
5150 HC=W(5):IFW(1)=1THENHC=1
5155 FORI=1TO13:M(I)=0:NEXT:PR=0:TR=0:FR=0
5156 E1=0:E2=0
5160 FORI=1TO5:FORJ=1TO13:IFW(I)=JTHENM(J)=M(J)+1
5170 NEXTJ,I:FORI=1TO13:IFM(I)=2THENPR=PR+1
5175 IFM(I)=2ANDPR=1THENE1=I
5176 IFM(I)=2ANDPR=2THENE2=I
5180 IFM(I)=3THENTR=I
5190 IFM(I)=4THENFR=I
5200 NEXTI
5500 IFW=1ANDW(5)=E1THENHC=W(4)
5510 IFW=1ANDW(4)=E1THENHC=W(3)
6000 RETURN
6900 IFY=5ORW=7THENRETURN
6950 G1=5:IFW=0THENG1=3
7000 FORI=1TOG1
7010 IFE1=B(I)ORE2=B(I)ORTR=B(I)ORFR=B(I)THEN7100
7020 GOSUB1000:D(1,I)=N(N):D(2,I)=S(S):B(I)=N
7100 NEXTI
7120 FORI=1TO5:W(I)=B(I):NEXT
7200 RETURN
8000 FORI=1TOLEN(L$):POKEG+I,ASC(MID$(L$,I,1)):NEXT:RETURN
9000 PRINT"WHEN THE CARDS APPEAR":PRINT"ON THE SCREEN,YOU"
9005 PRINT"WILL BE ASKED 'HOW":PRINT"MANY CARDS DO YOU"
9010 PRINT"WISH ?'. THE GAME IS":PRINT"3 CARD DRAW POKER AND"
9020 PRINT"IF '4' IS PRESSED NO":PRINT"CARDS ARE DRAWN. IF"
9025 PRINT"YOU DRAW 'CARD 1' WILL":PRINT"APPEAR. YOU WILL THEN"
9030 PRINT"ANSWER A NUMBER BETWEEN":PRINT"1 AND 5 INDICATING"
9035 PRINT"THE CARD YOU WISH TO":PRINT"REPLACE. ANTE IS"
9040 PRINT"ALWAYS $1.00. BETS AND":PRINT"RAISES CAN BE NO MORE"
9050 PRINT"THAN $7.00 AT A TIME."
9060 PRINT"YOU ARE PLAYING TO":PRINT"$500 OR NOTHING."
9070 PRINT"GOOD LUCK !!"
9080 PRINT
9090 PRINT
9900 RETURN
49999 END

View file

@ -0,0 +1,119 @@
1 REM ***ROBERT L.
2 REM ***COPPEDGE
5 FOR SC=1TO32:PRINT:NEXT
10 PRINT"MATH TUTOR":PRINT:PRINT
15 PRINT"THIS TUTOR IS DESIGNED"
18 PRINT"TO BE AN AID IN BASIC"
20 PRINT"MATHEMATICS."
21 PRINT
25 PRINT"YOU HAVE THE FOLLOWINT":PRINT"SUBJECTS TO CHOOSE FROM"
28 PRINT
30 PRINT"1) AFDITION":PRINT:PRINT"2) SUBTRACTION":PRINT
35 PRINT"3)MULTIPLICATION":PRINT:PRINT"4) DIVISION"
38 PRINT
40 INPUT "WHICH WOULD YOU LIKE TO DO";X
44 PRINT
45 IF X>4 OR X<1 THEN 40
50 INPUT "ENTER RANDOM SEED(ANY NUMBER)";Z1
55 FOR SC=1TO32:PRINT:NEXT
60 ON X GOTO 100,200,300,400
100 PRINT"THIS IS ADDITION":FOR Z=1 TO 100
105 W=INT(1000*RND(Z1)+1):V=INT(1000*RND(Z1)+1)
110 Y=W+V
111 S=0
115 PRINT:PRINT"WHAT IS:"
120 PRINTW;"+";V:INPUT U
125 IF U=Y THEN 140
126 S=1
130 PRINT:PRINT"NO, I'M SORRY"
135 INPUT "AGAIN";A$:IF A$="YES" OR A$="Y" THEN 115
137 PRINT:PRINT"THE ANSWER IS";Y
138 GOTO 160
140 PRINT:PRINT"VERY GOOD!! PERFECT!!"
145 IF S=0 THEN R(X)=R(X)+1
160 PRINT:INPUT"DO YOU WANT ANOTHER ONE";A$
165 IF A$="YES" OR A$="Y" THEN 180
170 PRINT"YOU GOT ";R(X);" OUT OF ";Z
175 GOTO 500
180 PRINT:PRINT:PRINT:NEXT Z
185 GOTO 170
200 PRINT"THIS IS SUBTRACTION":FOR Z=1 TO 100
205 W=INT(1000*RND(Z1)+1):V=INT(1000*RND(Z1)+1)
210 Y=W-V
211 S=0
215 PRINT:PRINT"WHAT IS:":PRINT
220 PRINTW;"-";V:INPUT U
225 IF U=Y THEN 240
226 S=1
230 PRINT:PRINT"NO, I'M AFRAID THAT'S":PRINT"NOT IT.":PRINT
233 PRINT"DO YOU WANT TO"
235 INPUT"TRY AGAIN";A$:IFA$="Y" OR A$="YES" THEN 215
236 PRINT
237 PRINT"THE ANSWER IS ";Y
238 PRINT:GOTO260
240 PRINT:PRINT"BRAVO!! GOOD JOB!!"
245 IF S=0 THEN R(X)=R(X)+1
250 PRINT
260 INPUT "DO YOU WANT ANOTHER ONE";A$
265 IF A$="YES" OR A$="Y" THEN 280
270 PRINT"YOU GOT ";R(X);" OUT OF ";Z
275 GOTO 500
280 PRINT:PRINT:PRINT:NEXT Z
285 GOTO 270
300 PRINT"THIS IS MULTIPLICATION":FOR Z=1 TO 100
305 W=INT(20*RND(Z1)+1):V=INT(20*RND(Z1)+1)
310 Y=W*V
311 S=0
315 PRINT"WHAT IS:"
318 PRINT
320 PRINTW;"*";V:INPUT U
325 IF Y=U THEN 340
326 S=1
328 PRINT
330 PRINT:PRINT"SORRY, BUT THAT'S NOT":PRINT"CORRECT. ":PRINT
333 PRINT"DO YOU WANT TO TRY"
335 INPUT "AGAIN";A$:IF A$="Y" OR A$="YES" THEN 315
337 PRINT:PRINT"THE ANSWER IS";Y
338 GOTO 360
340 PRINT:PRINT"YOU GOT IT!!"
344 PRINT
345 IF S=0 THEN R(X)=R(X)+1
360 PRINT:INPUT"DO YOU WANT ANOTHER ONE";A$
365 IF A$="Y" OR A$="YES" THEN 380
366 PRINT
370 PRINT"YOU GOT ";R(X);" OUT OF ";Z
375 GOTO 500
380 PRINT:PRINT:PRINT:NEXT Z
385 GOTO 370
400 PRINT"THIS IS DIVISION":FOR Z=1 TO 100
405 W=INT(150*RND(Z1)+1):V=INT(75*RND(Z1)+1)
410 Y=W/V:IF Y=INT(Y) THEN 414
411 GOTO 405
414 S=0
415 PRINT:PRINT"WHAT IS:"
420 PRINTW;"/";V:INPUT U
425 IF Y=U THEN 440
426 S=1
428 PRINT
430 PRINT"NOT QUITE RIGHT. DO YOU":PRINT"WANT ANOTHER CRACK "
435 INPUT "AT IT";A$:IF A$="Y" OR A$="YES" THEN 415
436 PRINT
437 PRINT"THE ANSWER IS: ";Y
438 PRINT:GOTO460
439 PRINT
440 PRINT:PRINT"PERFECT!!"
444 PRINT
445 IF S=0 THEN R(X)=R(X)+1
450 PRINT
460 INPUT "DO YOU WANT ANOTHER ONE";A$
462 PRINT
465 IF A$="Y" OR A$="YES" THEN 480
470 PRINT"YOU GOT ";R(X);" OUT OF ";Z
475 GOTO 500
480 PRINT:PRINT:PRINT:NEXT Z
482 PRINT
485 GOTO 470
500 PRINT:PRINT"WOULD YOU LIKE ANOTHER"
505 INPUT"CATEGORY";A$
510 IF A$="Y" OR A$="YES" THEN 30
600 END

View file

@ -0,0 +1,124 @@
1 REM ***ROBERT L.
2 REM ***COPPEDGE
3 FOR SC=1TO32:PRINT:NEXT
4 DIM A$(20),Y(20),Q(20)
5 PRINT"THIS PROGRAM FIGURES"
6 PRINT"OUT YOUR CHECKING"
7 PRINT"ACCOUNT. TO DO"
8 PRINT"THIS, A NUMBER OF"
9 PRINT"THINGS ARE NEEDED, SUCH"
10 PRINT"AS THE NUMBER OF CHECKS"
11 PRINT"TO BE USED, THE TOTAL"
12 PRINT"AMOUNT TO START WITH,"
13 PRINT"AND THE NAME OF THE "
14 PRINT"RECIPIENT OF THE CHECK,":PRINT"AS WELL AS THE AMOUNT."
15 PRINT:INPUT"TYPE 'C' TO CONTINUE";A$
16 FOR SC=1TO32:PRINT:NEXT
34 PRINT"IF YOU HAVE MADE A"
35 PRINT"MISTAKE, AND YOU WOULD"
36 PRINT"LIKE TO CORRECT IT,"
37 PRINT"MERELY TYPE IN THE WORD"
38 PRINT"'HELP' WHEN I ASK"
39 PRIP"YOU FOR A CHECK'S NAME."
45 HELP=-6
46 PRINT
50 PRINT:PRINT"PLEASE ENTER YOUR":PRINT"INITIAL BALANCE"
54 INPUT T
60 IF T=-6 THEN 160
62 PRINT
65 PRINT"HOW MANY CHECKS DO YOU"
66 PRINT"WANT TO BE TOTALLED";:INPUT X
67 IF X=0 THEN 160
70 IF X=-6 THEN GOTO 160
71 FOR SC=1TO32:PRINT:NEXT
75 PRINT"ENTER THE NAME OF THE ":PRINT"PERSON OR PERSONS TO"
76 PRINT"WHOM THE CHECKS WERE ":PRINT"WRITTEN."
77 PRINT
78 PRINT"IT'S A GOOD IDEA TO ":PRINT"LIST THEM IN ORDER."
80 PRINT
90 PRINT"IF IT IS A DEPOSIT, ":PRINT"TYPE 'XDEPOSIT' AND"
91 PRINT"THEN THE AMOUNT.":PRINT
94 IF X=0 THEN 160
95 FOR Z=1 TO X
100 PRINT:PRINT"CHECK NUMBER";Z:PRINT
101 PRINT"MADE OUT TO:"
105 INPUT A$(Z)
110 IF A$(Z)="HELP" THEN 160
114 PRINT
115 PRINT"AMOUNT";:INPUT Y(Z)
120 IF Y(Z)=-6 THEN 160
124 IF A$(Z)="XDEPOSIT" THEN Y(Z)=-Y(Z)
125 NEXT Z
128 L=T:PRINT:PRINT:PRINT
129 PRINT"ORIGINAL AMOUNT: ";:PRINTT
130 PRINT:PRINT"#--MADE TO"
131 PRINTTAB(9)"AMOUNT--BALANCE"
133 PRINT:PRINT
135 FOR Z=1 TO X
140 PRINTZ;:PRINTA$(Z)
146 LET Q(Z)=ABS(Y(Z))
150 L=L-Y(Z)
153 PRINTTAB(10)Q(Z);:PRINTTAB(20)L:PRINT
155 NEXT Z
156 FOR Z=1 TO 5000
157 NEXT Z
158 PRINT:PRINT:PRINT
160 FOR SC=1TO32:PRINT:NEXT
161 PRINT"IF THERE ARE MISTAKES":PRINT"THAT YOU WOULD LIKE"
162 PRINT"TO CORRECT THEN TYPE IN"
166 PRINT"ONE OF THE FOLLOWING":PRINT"NUMBERS:"
170 PRINT:PRINT"1) IF THE TOTAL IS WRONG"
175 PRINT:PRINT"2) IF A CHECK OR DEP-":PRINT" OSIT IS INCORRECT."
180 PRINT:PRINT"3) IF EVERYTHING'S OK.":PRINT
190 PRINT:PRINT
195 INPUT"(1,2 OR 3)";R
196 IF R<1 THEN 165
197 IF R>3 THEN 165
199 PRINT:PRINT:PRINT
200 ON R GOTO 220,230,205,215
205 PRINT"OK.":GOTO 400
215 PRINT"TRY AGAIN":GOTO 175
220 PRINT"ENTER IN NEW TOTAL";:INPUT T:GOTO 128
230 PRINT"DO YOU HAVE MORE CHECKS"
231 PRINT"OR DEPOSITS TO ADD"
232 PRINT"(YES OR NO)";:INPUT N$
234 PRINT:PRINT:PRINT
235 IF N$="NO" THEN 250
240 PRINT"HOW MANY MORE";:INPUT W
245 X=X+W :GOTO 310
250 PRINT"DO YOU WANT TO EITHER"
251 PRINT"CHANGE OR ERASE ONE OF"
252 PRINT"THE CHECKS OR DEPOSITS";
255 INPUT N$:IF N$="YES" THEN 270
256 PRINT:PRINT:PRINT
260 GOTO 160
270 PRINT:PRINT:PRINT"WHICH CHECK # DO YOU WANT"
271 PRINT"TO CHANGE";:INPUT M
274 PRINT:PRINT:PRINT
275 PRINT"DO YOU WANT TO CHANGE OR"
276 PRINT"ERASE IT (1=CHANGE, "
277 PRINT"2=ERASE)";:INPUT K
278 PRINT:PRINT:PRINT
280 ON K GOTO 300,290,275
290 A$(M)="DELETED"
291 Y(M)=0
295 GOTO 128
300 PRINT"NEW CHECK NAME"
301 INPUT A$(M)
302 PRINT"NEW AMOUNT";:INPUT Y(M)
303 PRINT:PRINT:PRINT
305 PRINT"ANY MORE CHECKS TO BE"
306 PRINT"REDONE(YES OR NO)";:INPUT B$
307 IF B$="NO" THEN 130
308 IF B$="YES" THEN 273
309 GOTO 130
310 FOR Z=X-(W-1) TO X
315 PRINT"CHECK #":PRINTZ
320 PRINT"MADE OUT TO:"
325 INPUT A$(Z)
326 IF A$(Z)="HELP" THEN 160
330 PRINT"AMOUNT";:INPUT Y(Z)
335 IF Y(Z)=-6 THEN 160
340 NEXT Z
345 GOTO 128
400 END

View file

@ -0,0 +1,100 @@
10 FORH=1TO35:PRINT:NEXT
20 PRINT"TRIGNOMETRY DEALS":PRINT"PRIMARILY WITH SIX"
22 PRINT"RATIOS CALLED":PRINT"TRIGNOMETRIC FUNCTIONS.":PRINT
25 PRINT"THE FIRST OF THESE":PRINT"FUNCTIONS IS THE SINE.":PRINT
30 PRINT"SINE IS USUALLY WRITTEN":PRINT"AS 'SIN' IN TRIGNOMETRY."
32 FORH=1TO7:PRINT:NEXT:FORH=1TO13000:NEXT
35 PRINT"THE SINE OF ANGLE 'A'":PRINT"IS THE OPPOSITE"
36 PRINT"SIDE DIVIDED BY"
37 PRINT"THE HYPOTENUSE."
40 PRINT:PRINT"THE HYPOTENUSE IS THE"
42 PRINT"THE LONGEST SIDE OF A":PRINT"RIGHT ANGLED TRIANGLE."
44 PRINT:PRINT:PRINT"HIT 'SPACE BAR' TO":PRINT"CONTINUE PROGRAM."
46 FORH=1TO10:PRINT:NEXT:GOSUB4000:GOSUB5000
50 PRINT"THUS: SIN(A)=":PRINT"LENGHT OF SIDE 'y'"
52 PRINT"DIVIDED BY 'r'.":PRINT:PRINT"OR SIN(A)=y/r.":PRINT
54 PRINT"IF x=4, y=3, AND r=5":PRINT"THEN WHAT IS THE"
56 PRINT"VALUE OF SIN(A)?":PRINT:PRINT"SINCE SIN(A)=y/r OR"
58 PRINT"SIN(A)=3/5=.6":PRINT:PRINT"HIT 'SPACE BAR' TO"
60 PRINT"CONTINUE PROGRAM.":FORH=1TO9:PRINT:NEXT
62 GOSUB4000:GOSUB5000:PRINT"THE NEXT TRIG. FUNCTION"
90 PRINT"IS THE 'COS' OR COSINE.":PRINT
92 PRINT"THE COS(A) EQUALS THE":PRINT"LENGTH OF THE ADJACENT"
95 PRINT"SIDE DIVIDED BY THE":PRINT"LENGHT OF":PRINT"THE HYPOTENUSE."
97 PRINT:PRINT"HIT 'SPACE BAR' TO":PRINT"CONTINUE PROGRAM"
99 FORH=1TO12:PRINT:NEXT:GOSUB4000:GOSUB5000
102 PRINT"THUS THE 'COS' OF ANGLE":PRINT"A EQUALS x/r"
105 PRINT"OR COS(A)=x/r.":PRINT:PRINT"IF x=4, y=3, AND r=5"
108 PRINT"THEN WHAT IS THE COS(A)?":PRINT
111 PRINT"SINCE COS(A)=x/r OR":PRINT"COS(A)=4/5=.8"
114 PRINT:PRINT"HIT 'SPACE BAR' TO":PRINT"CONTINUE PROGRAM."
117 FORH=1TO11:PRINT:NEXT:GOSUB4000:GOSUB5000
212 PRINT"THUS 'TAN' OF ANGLE A":PRINT"EQUALS THE LENGTH OF y"
218 PRINT"DIVIDED BY THE LENGTH":PRINT"OF x. OR: TAN(A)=y/x."
220 PRINT:PRINT"HIT 'SPACE BAR' TO":PRINT"CONTINUE PROGRAM."
222 FORH=1TO14:PRINT:NEXT:GOSUB4000:GOSUB5000
240 PRINT"IF x=4, y=3, AND r=5":PRINT"THEN WHAT IS THE TAN(A)?"
245 PRINT:PRINT"SINCE TAN(A)=y/x THUS":PRINT"TAN(A)=3/4=.75"
248 PRINT:PRINT"HIT 'SPACE BAR' TO":PRINT"CONTINUE PROGRAM."
250 FORH=1TO11:PRINT:NEXT:GOSUB4000:GOSUB5000
270 PRINT"NOW LET'S HAVE A SHORT":PRINT"QUIZ TO TEST YOUR"
275 PRINT"KNOWLEDGE OF THE SIN,":PRINT"COS, AND TAN."
280 PRINT:PRINT"PLEASE GIVE":PRINT"DECIMAL ANSWERS!":PRINT:PRINT
285 PRINT"HIT 'SPACE BAR' TO":PRINT"CONTINUE PROGRAM."
290 FORH=1TO6:PRINT:NEXT:GOSUB5000
295 PRINT"IF x=4, y=3, AND r=5":PRINT"THEN WHAT IS THE COS(A)?"
300 FORH=1TO15:PRINT:NEXT:GOSUB4000:INPUTA1
305 IFA1<>.8THENPRINT"WRONG":PRINT"x/r=4/5=.8"
308 IFA1=.8THENPRINT"RIGHT!"
310 GOSUB6000
315 PRINT"IF x=4, y=3, AND r=5":PRINT"THEN WHAT IS THE SIN(A)?"
320 FORH=1TO15:PRINT:NEXT:GOSUB4000:INPUTA1
325 IFA1<>.6THENPRINT"WRONG":PRINT"y/r=3/5=.6"
330 IFA1=.6THENPRINT"RIGHT!"
334 GOSUB6000
350 PRINT"IF x=4, y=3, AND r=5":PRINT"THEN WHAT IS THE TAN(A)?"
355 FORH=1TO15:PRINT:NEXT:GOSUB4000:INPUTA1
360 IFA1<>.75THENPRINT"WRONG":PRINT"y/x=3/4=.75"
365 IFA1=.75THENPRINT"RIGHT!"
370 GOSUB6000
400 PRINT"THIS NEXT SECTION IS":PRINT"A LITTLE TOUGHER.":PRINT
410 PRINT"THE QUESTIONS WILL":PRINT"ASK YOU ABOUT THE"
415 PRINT"SIN, COS, AND TAN OF":PRINT"ANGLE B: NOT ANGLE A!"
420 PRINT:PRINT"HIT 'SPACE BAR' TO":PRINT"CONTINUE PROGRAM."
425 FORH=1TO7:PRINT:NEXT:GOSUB5000
430 FORH=1TO27:PRINT:NEXT:PRINT"REMEMBER:"
435 PRINT"COS EQUALS ADJACENT SIDE":PRINT"DIVIDED BY HYPOTENUSE"
440 PRINT:PRINT"IF x=4, y=3, AND r=5":PRINT"THEN WHAT IS THE COS(B)?"
445 FORH=1TO15:PRINT:NEXT:GOSUB4000:INPUTA1
450 IFA1<>.6THENPRINT"WRONG":PRINT"y/r=3/5=.6"
455 IFA1=.6THENPRINT"RIGHT!"
460 GOSUB6000
490 PRINT"SIN EQUALS OPPOSITE SIDE":PRINT"DIVIDED BY HYPOTENUSE."
500 PRINT:PRINT"IF x=4, y=3, AND r=5":PRINT"THEN WHAT IS THE SIN(B)?"
510 FORH=1TO15:PRINT:NEXT:GOSUB4000:INPUTA1
520 IFA1<>.8THENPRINT"WRONG":PRINT"x/r=4/5=.8"
530 IFA1=.8THENPRINT"RIGHT!"
535 GOSUB6000
550 PRINT"TAN EQUALS OPPOSITE SIDE":PRINT"DIVIDED BY THE"
555 PRINT"ADJACENT SIDE.":PRINT
560 PRINT"IF x=4, y=3, AND r=5":PRINT"THEN WHAT IS THE TAN(B)?"
570 FORH=1TO15:PRINT:NEXT:GOSUB4000:INPUTA1$
575 IFLEFT$(A1$,3)="1.3"THENPRINT"RIGHT!"
580 IFLEFT$(A1$,3)<>"1.3"THENPRINT"WRONG":PRINT"x/y=4/3=1.33"
600 GOSUB6000:PRINT"THIS IS THE END":PRINT"OF THE PROGRAM."
610 PRINT:PRINT"DO YOU WANT TO":INPUT"RUN IT AGAIN";A1$
620 IF LEFT$(A1$,1)="Y"THEN10
630 END
4000 FORH=0TO16:POKE54060+H,135:NEXT
4010 FORH=0TO7:POKE54127-32*H,143:NEXT
4020 FORH=0TO9:POKE54032-H*31,189:NEXT
4030 FORH=0TO9:POKE54042-H*32,136:NEXT
4040 POKE54063,207:POKE54128,45:POKE54129,89
4050 POKE54094,65:POKE54011,43:POKE54012,88
4060 POKE54036,120:POKE53876,114:POKE53881,121
4070 POKE53936,43:POKE53937,89:POKE54028,45:POKE54029,88
4080 POKE53755,66:POKE54041,210:RETURN
5000 POKE530,1:POKE57088,1
5100 IFPEEK(57088)=239THENFORH=1TO28:PRINT:NEXT:RETURN
5200 GOTO5000
6000 FORH=1TO6000:NEXT:FORH=1TO26:PRINT:NEXT:RETURN

View file

@ -0,0 +1,116 @@
1 REM***ROBERT L.
2 REM***COPPED
3 GOSUB20000:FORX=1TO8:READJ(X):NEXTX
4 H=54000:T=32:U=32
5 FORX=1TO8:READH(X):NEXT:DIMF(16)
6 FORX=1TO6:READG(X):NEXT
7 POKE530,1:KEY=57088:V=32:W=32
8 DEFFND(X)=X-53349-32*INT((X-53349)/32)
9 FORX=1TO8:READF(X):NEXT
10 INPUT"ENTER RANDOM #";Z1
11 FORX=1TO35:PRINT:NEXT:FORX=1TO100
12 Y=INT(53349+RND(Z1)*1024)
13 POKEY,46:NEXT:POKE54117,32
14 EP=INT(53349+RND(Z1)*919)
15 IFFND(EP)=<1ORFND(EP)>=24THEN14
16 R=PEEK(EP)
17 IFEP>54268OREP<53449THEN14
50 M=INT(16*RND(Z1)+1)
52 IFM>15.8THEN2000
53 IFM>8THEN70
55 IFFND(EP+F(M))=1ORFND(EP+F(M))=>24THEN50
57 IFEP+F(M)<53449OREP+F(M)>54268THEN50
58 EP=EP+F(M)
60 S=PEEK(EP):POKEEP,4:POKEEP-F(M),R
62 R=S
63 IFR=40ORR=41THENR=32
70 POKEKEY,64:P=PEEK(KEY):FORX=1TO6
71 IFP=246THENX=5:GOTO1000
72 IFP=G(X)THENGOTO1000
73 IFX=ETHENGOTO1000
74 NEXT
80 GOTO50
1000 IFX=<4THEN1010
1005 ONX-4GOTO1050,1100
1010 IFFND(H+F(X)-1)=0ORFND(H+F(X)+1)=>24THEN1400
1015 IFH+F(X)>54268ORH+F(X)<53349THEN1400
1020 H=H+F(X):I=H+1:J=H-1
1030 T=PEEK(I):U=PEEK(J)
1035 IFT=4THENT=32
1036 IFU=4THENU=32
1040 POKEI-F(X),V:POKEJ-F(X),W
1045 POKEJ,40:POKEI,41
1046 V=T:W=U
1047 E=X:GOTO1400
1050 E=0:X=6:GOTO74
1100 FORX1=1TO150:POKEH,X1:NEXTX1:POKEH,32
1101 IFH=EPTHEN1200
1110 GOTO74
1200 KI=KI+1:IFKI>7THEN3000
1201 FORC1=1TO22:POKE54117+C1,ASC(MID$(A$,C1,1))
1202 NEXTC1:FORC2=1TO300:NEXTC2
1203 FORC1=1TO22:POKE54117+C1,32
1204 NEXTC1
1205 GOTO14
1400 GOTO74
2000 REM***ALIEN FIRE
2001 REM***PHASE
2010 D=INT(1+8*RND(Z1))
2011 K=FND(EP)
2015 FORB=1TO24:POKEEP+B*F(D),H(D)
2017 IFK+B*J(D)=1ORK+B*J(D)>=23THEN2050
2018 IFEP+B*F(D)<53349OREP+B*F(D)>54268THEN2050
2020 NEXTB
2050 FORC=1TOB:POKEEP+C*F(D),32:NEXT
2060 IFD=2THEN2500
2070 GOTO70
2500 FORC1=1TO150
2501 B6=INT(53349+RND(Z1)*919)
2502 POKEB6,42:NEXTC1
2503 PRINT"ENEMY HAS SHATTERED"
2504 PRINT"TURRET SYSTEM."
2505 PRINT"TURRET KNOCKED OUT"
2506 PRINTKI;" RAIDERS BEFORE"
2507 PRINT"IT WAS DISABLED"
2508 PRINT"WOULD YOU LIKE TO"
2509 PRINT"SWITCH TO ANOTHER"
2510 INPUT"TURRET";B$
2550 IFLEFT$(B$,1)="Y"THEN2560
2555 GOTO4000
2560 FORX4=54117TO54300:POKEX4,32:NEXTX4
2561 KI=0
2565 GOTO10
2600 END
3000 PRINT"THE TURRET DEFENSE HAS"
3001 PRINT"SHATTERED THE"
3002 PRINT"RAIDERS NOW-ABORTED"
3003 PRINT"ATTEMPT AT STELLAR"
3004 PRINT"CONQUEST. WOULD YOU"
3005 PRINT"LIKE THEM TO TRY IT"
3006 INPUT"AGAIN";B$
3007 IFLEFT$(B$,1)="Y"THEN2560
4000 PRINT"OK, THEN THEY'LL GO"
4001 PRINT"HOME FOR NOW."
4500 END
9999 DATA0,0,-1,1,1,-1,1,-1
10000 DATA140,140,131,131,189,190,190,189
10005 DATA126,190,222,238,246,250
10009 DATA-32,32,-1,1,-31,-33,33,31
20000 A$="NEW TARGET APPROACHING"
20002 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
20010 INPUT"INSTRUCTIONS NEEDED";R$
20020 IFLEFT$(R$,1)="N"THENRETURN
20025 PRINT"Destroy the enemy"
20030 PRINT"by getting it within"
20035 PRINT"the crosshairs. To"
20040 PRINT"move the crosshairs,"
20045 PRINT"type in a:"
20050 PRINT:PRINT"1> moves up"
20055 PRINT"2> moves down"
20060 PRINT"3> moves left"
20065 PRINT"4> moves right"
20070 PRINT"5> stops"
20075 PRINT"6> fires"
20080 PRINT:PRINT:PRINT"Watch it, though,"
20085 PRINT"the sucker fires back!!"
20090 RETURN

View file

@ -0,0 +1,167 @@
1 REM--ROGER VAN SCOY
2 REM--COUNTER
19 D1=53392
20 W=0:KEY=57088
21 DEF FNZ(F)=55-INT(LOG(F)/LOG(2)-.5)
22 POKE530,1
25 DIMC(25):FORX=1TO25:READC(X):NEXT
27 DIMA(23):FORX=1TO23:READA(X):NEXT
29 DIMB(19):FORX=1TO19:READB(X):NEXT
30 DIMD(24):FORX=1TO24:READD(X):NEXT
33 FORX=1TO34:PRINT:NEXT
35 PRINT"HI, WHAT'S YOU'RE NAME":INPUTN$
40 FORX=1TO34:PRINT:NEXT
50 A=53991:P=53487:C=54032:B=P+7*64:D=54181:CN=0
70 R=ASC(N$)
75 PRINT"TODAY, ";N$
80 PRINT"WE'LL PRACTICE"
85 PRINT"COUNTING TO TEN!!!"
90 FORX=1TO14:PRINT:NEXT
91 POKE54117,32
94 FORX=1TO4000:NEXT
95 FORX=53530TO53700:POKEX,32:NEXT
97 GOSUB6000:GOTO1150
100 REM---ONE
110 Z=P+1:FORX=ZTOZ+6*64STEP64:POKEX,49:NEXT
120 POKEZ+63,49:POKEZ+6*64-1,49:POKEZ+6*64+1,49
130 POKEB,79:POKEB+1,78:POKEB+2,69
135 POKEC,9:POKEC+1,10
140 RETURN
200 REM---TWO
210 POKEP+63,50:FORX=PTOP+2:POKEX,50:NEXT
220 Z=P+3:POKEZ+64,50:POKEZ+128,50
230 Z=Z+192:POKEZ-1,50:POKEZ-2,50:Z=Z+61:POKEZ,50
240 Z=Z+63:POKEZ,50:Z=Z+64:FORX=ZTOZ+4:POKEX,50:NEXT
250 POKEB,84:POKEB+1,87:POKEB+2,79
260 POKEC-2,181:POKEC-1,182:POKEC,32:POKEC+1,181:POKEC+2,182
270 RETURN
300 FORX=1TO300
320 FORX=P+1TOP+5:POKEX,51:NEXT
330 Z=P+69:POKEZ,51:POKEZ+63,51:POKEZ+127,51:POKEZ+126,51:Z=Z+192
340 POKEZ,51:POKEZ+64,51
350 Z=Z+128:FORX=Z-1TOZ-3STEP-1:POKEX,51:NEXT:POKEZ-68,51
360 POKEB+1,84:POKEB+2,72:POKEB+3,82:POKEB+4,69:POKEB+5,69
370 POKEC-2,214:POKEC-1,211:POKEC,32:POKEC+1,214:POKEC+2,211
380 POKEC+4,214:POKEC+5,211
390 RETURN
400 REM---FOUR
410 Z=P+2:FORX=ZTOZ+6*64STEP64:POKEX,52:NEXT
420 Z=Z+62:POKEZ+1,52:POKEZ+64,52:Z=Z+127:POKEZ,52:Z=Z+64
430 FORX=ZTOZ+4:POKEX,52:NEXT
440 POKEB,70:POKEB+1,79:POKEB+2,85:POKEB+3,82
450 POKEC-4,7:POKEC-3,8:POKEC-2,32:POKEC-1,7:POKEC,8:POKEC+1,32
460 POKEC+2,7:POKEC+3,8:POKEC+4,32:POKEC+5,7:POKEC+6,8
470 RETURN
500 REM---FIVE
510 FORX=PTOP+4:POKEX,53:NEXT:Z=P+128:POKEZ-64,53
520 FORX=ZTOZ+3:POKEX,53:NEXT:Z=Z+68:FORX=ZTOZ+128STEP64:POKEX,53:NEXT
530 Z=Z+191:FORX=ZTOZ-2STEP-1:POKEX,53:NEXT:POKEZ-67,53
540 POKEB,70:POKEB+1,73:POKEB+2,86:POKEB+3,69
550 FORX=C-4TOC+8:POKEX,32:NEXT:POKEC-4,0:POKEC-2,0:POKEC,0:POKEC+2,0
560 POKEC+4,0:RETURN
600 REM---SIX
610 Z=P+2:FORX=ZTOZ+2:POKEX,54:NEXT:POKEZ+63,54:Z=Z+126
620 FORX=ZTOZ+192STEP64:POKEX,54:NEXT:Z=Z+64
630 FORX=ZTOZ+3:POKEX,54:NEXT
640 Z=Z+68:POKEZ,54:POKEZ+64,54:Z=Z+127
650 FORX=ZTOZ-2STEP-1:POKEX,54:NEXT
660 POKEB+1,83:POKEB+2,73:POKEB+3,88
670 FORX=C-4TOC+4:POKEX,32:NEXT
680 POKEC-4,15:POKEC-2,15:POKEC,15:POKEC+2,15:POKEC+4,15
690 POKEC+60,15:RETURN
700 REM---SEVEN
710 FORX=PTOP+4:POKEX,55:NEXT:POKEP+68,55:POKEP+131,55:POKEP+194,55
720 FORX=P+1+4*64TOP+1+6*64STEP64:POKEX,55:NEXT
730 POKEB,83:POKEB+1,69:POKEB+2,86:POKEB+3,69:POKEB+4,78
740 POKEC-4,236:POKEC-2,236:POKEC,236:POKEC+2,236:POKEC+4,236
750 POKEC+60,236:POKEC+62,236:RETURN
800 REM---EIGHT
810 Z=P+1:FORX=ZTOZ+2:FORX1=Z+192TOZ+194:FORX2=Z+384TOZ+386
820 POKEX,56:POKEX1,56:POKEX2,56:NEXTX2:NEXTX1:NEXTX
830 Z=P+64:POKEZ,56:POKEZ+4,56:POKEZ+64,56:POKEZ+68,56
840 Z=P+256:POKEZ,56:POKEZ+4,56:POKEZ+64,56:POKEZ+68,56
850 POKEB,69:POKEB+1,73:POKEB+2,71:POKEB+3,72:POKEB+4,84
860 POKEC-4,248:POKEC-2,248:POKEC,248:POKEC+2,248:POKEC+4,248
870 POKEC+60,248:POKEC+62,248:POKEC+64,248:RETURN
900 REM---NINE
910 Z=P+1:FORX=ZTOZ+2:POKEX,57:NEXT
920 Z=Z+67:FORX=ZTOZ+196STEP64:POKEX,57:NEXT
930 POKEP+64,57:POKEP+128,57:Z=P+193:FORX=ZTOZ+2:POKEX,57:NEXT
940 Z=P+6*64:FORX=ZTOZ+2:POKEX,57:NEXT:POKEZ-61,57
950 POKEB,78:POKEB+1,73:POKEB+2,78:POKEB+3,69
960 POKEC-4,16:POKEC-2,17:POKEC,18:POKEC+2,19:POKEC+4,20
970 POKEC+60,20:POKEC+62,19:POKEC+64,18:POKEC+66,17:RETURN
1000 REM---TEN
1005 Z=P-3:FORX=ZTOZ+6*65STEP64:POKEX,49:NEXT
1010 POKEZ+63,49:POKEZ+6*64-1,49:POKEZ+6*64+1,49
1020 Z=P+1:Z1=Z+6*64:FORX=ZTOZ+2:FORX1=Z1TOZ1+2:POKEX,48:POKEX1,48
1030 NEXTX1:NEXTX
1040 Z=P+64:Z1=P+68:FORX=ZTOZ+256STEP64:FORX1=Z1TOZ1+256STEP64
1050 POKEX,48:POKEX1,48:NEXTX1:NEXTX
1060 POKEB-1,84:POKEB,69:POKEB+1,78:V=240
1080 POKEC-4,V:POKEC-2,V:POKEC,V:POKEC+2,V:POKEC+4,V
1090 FORX=60TO68STEP2:POKEX+C,V:NEXT:RETURN
1095 RETURN
1150 FORX=C-4TOC+8:POKEX,32:NEXT:FORX=C+60TOC+68:POKEX,32:NEXT
1170 FORX=1TO23:POKED+X,A(X):NEXT
1180 FORX=1TO5000:NEXT:FORX=1TO28:POKED+X,32:NEXT:FORE=1TO25
1190 FORX=1TO19:POKED+X,B(X):NEXTX:FORX=20TO24:POKED+X,32:NEXTX
1200 R1=INT(25*RND(R))+1:R2=INT(9*RND(R))+1
1300 FORX=ATOA+2*R2STEP2:POKEX,C(R1):NEXT
1325 GOSUB2000:R3=R2+1
1330 IFW=0THEN1325
1375 IFW=R3THENCN=CN+1:GOSUB7000
1400 IFW<>R3THENFORX=1TO1000:GOSUB7500
1500 IFR3=1THENGOSUB100:GOSUB5000:GOSUB8000
1510 IFR3=2THENGOSUB200:GOSUB5000:GOSUB8000
1520 IFR3=3THENGOSUB300:GOSUB5000:GOSUB8000
1530 IFR3=4THENGOSUB400:GOSUB5000:GOSUB8000
1540 IFR3=5THENGOSUB500:GOSUB5000:GOSUB8000
1550 IFR3=6THENGOSUB600:GOSUB5000:GOSUB8000
1560 IFR3=7THENGOSUB700:GOSUB5000:GOSUB8000
1570 IFR3=8THENGOSUB800:GOSUB5000:GOSUB8000
1580 IFR3=9THENGOSUB900:GOSUB5000:GOSUB8000
1590 IFR3=10THENGOSUB1000:GOSUB5000:GOSUB8000
1595 FORX=D1TOD1+7:POKEX,32:NEXT
1600 POKED+21,32:POKED+22,32:W=0:NEXTE
1800 FORX=0TO24:POKEX+D,32:NEXT
1850 PRINTN$;"YOU GOT"
1900 PRINTCN;"RIGHT OUT OF 25"
1950 PRINT"QUESTIONS!!":END
2000 POKEKE,127:F=255-PEEK(KE)
2117 IFF=0THEN2500
2150 IFF=128THENPOKED+21,49:W=1:GOSUB3000:RETURN
2200 POKED+21,FNZ(F):W=FNZ(F)-48:RETURN
2500 POKEKE,191:F=255-PEEK(KE)
2800 IFF=0THEN2000
2850 IFF<64THEN2000
2900 POKED+21,FNZ(F)+7:W=FNZ(F)-41:RETURN
3000 FORX=1TO100
3100 POKEKE,128:F=254-PEEK(KE)
3200 IFF=32THENPOKED+22,48:W=10:RETURN
3300 NEXT:RETURN
4900 DATA0,1,14,15,16,17,18,19,20,21,22,23,169,170,176,177,229
4950 DATA232,236,240,248,246,238,239,237
4960 DATA73,84,39,83,32,89,79,85,82,32,84,85,82,78,32,84,79,32
4970 DATA67,79,85,78,84
4980 DATA72,79,87,32,77,65,78,89,32,65,82,69,32,84,72,69,82,69,63
4990 DATA87,82,79,78,71,44,32,84,72,69,32,65,78,83,87,69,82,32
4991 DATA73,83,32,32,32,46
5000 FORX=1TO4000:NEXT:FORX=P-10TOP+480:POKEX,32:NEXT:RETURN
6000 GOSUB100:GOSUB5000:GOSUB200:GOSUB5000:GOSUB300:GOSUB5000
6100 GOSUB400:GOSUB5000:GOSUB500:GOSUB5000:GOSUB600:GOSUB5000
6200 GOSUB700:GOSUB5000:GOSUB800:GOSUB5000:GOSUB900:GOSUB5000
6300 GOSUB1000:GOSUB5000:RETURN
7000 FORX=-2TO24:POKEA+X,32:NEXT
7005 POKED1,82:POKED1+1,105:POKED1+2,103:POKED1+3,104:POKED1+4,116
7010 FORX=5TO7:POKED1+X,33:NEXT
7100 FORX=P-4+6*64TOP+7*64:POKEX,32:NEXT
7200 RETURN
7500 FORX=-2TO24:POKEA+X,32:NEXT
7505 FORX=1TO24:POKED+X,D(X):NEXT
7510 IFR3=10THENPOKED+22,49:POKED+23,48:GOTO7550
7520 POKED+22,R3+48
7550 FORX=P-4+6*64TOP+7*64:POKEX,32:NEXT
7700 RETURN
8000 FORX=-4TO8:POKEC+X,32:NEXT:FORX=60TO68:POKEC+X,32:NEXT
8100 RETURN

View file

@ -0,0 +1,266 @@
1 FORSC=1TO30:PRINT:NEXT:REM--SUSAN SULLIVAN**PRES TUTOR
2 PRINT"WANT INSTRUCTIONS?":INPUTD$:IF D$="Y"ORD$="YES"THEN50000
3 PRINT"INPUT RANDOM SEED":INPUTX:Z=0:DIMQ(100):Q(1)=0
4 R=INT(38*RND(X)+1):Z=Z+1:FOR SC=1TO30:PRINT:NEXT
5 IFZ=1THEN60050
6 GOTO60000
10 PRINT"WHICH PRESIDENT STARTED"
11 PRINT"THE TWO TERM TRADITION?"
12 PRINT"HE WAS ELECTED UN-"
13 PRINT"ANIMOUSLY."
14 GOTO450
20 PRINT"THIS MAN WAS THE FIRST"
21 PRINT"VICE PRESIDENT AND THE"
22 PRINT"SECOND PRESIDENT. HE"
23 PRINT"AVOIDED WAR WITH"
24 PRINT"EUROPE. WHO WAS HE?"
25 GOTO450
30 PRINT"WHO WAS THE PRESIDENT"
31 PRINT"DURING THE LOUISIANA"
32 PRINT"PURCHASE AND THE LEWIS"
33 PRINT"AND CLARK EXPEDITION?"
35 GOTO450
40 PRINT"THIS PRESIDENT WAS"
41 PRINT"CALLED 'THE FATHER OF"
42 PRINT"THE CONSTITUTION'. HE"
43 PRINT"WAS IN OFFICE DURING"
44 PRINT"THE WAR OF 1812."
45 GOTO450
50 PRINT"WHO WAS THE PRESIDENT"
51 PRINT"WHEN FLORIDA WAS"
52 PRINT"ACQUIRED? HE ALSO WROTE"
53 PRINT"AN IMPORTANT DOCTRINE."
55 GOTO450
60 PRINT"ELECTED BY THE HOUSE,"
61 PRINT"HE WAS THE SON OF A"
62 PRINT"FORMER PRESIDENT. WHO"
63 PRINT"WAS HE?"
65 GOTO450
70 PRINT"THIS PRESIDENT IS GIVEN"
71 PRINT"CREDIT FOR STARTING THE"
72 PRINT"SPOILS SYSTEM."
75 GOTO450
80 PRINT"WHICH PRESIDENT STARTED"
81 PRINT"AN INDEPENDENT TREASURY"
82 PRINT"SYSTEM AND OPPOSED THE"
83 PRINT"ANNEXING OF TEXAS?"
85 GOTO450
90 PRINT"WHICH PRESIDENT DIED"
91 PRINT"AFTER ONLY 31 DAYS IN"
92 PRINT"OFFICE? HE WAS A HERO"
93 PRINT"OF THE BATTLE OF"
94 PRINT"TIPPECANOE?"
95 GOTO450
100 PRINT"WHO WAS THE FIRST VICE"
101 PRINT"PRESIDENT TO BECOME PR-"
102 PRINT"ESIDENT BECAUSE OF THE"
103 PRINT"DEATH OF THE PRESIDENT?"
105 GOTO450
110 PRINT"WHO WAS IN OFFICE WHEN "
111 PRINT"THE STATES OF CAL.,UTAH"
112 PRINT"AND NEW MEXICO WERE"
113 PRINT"AQUIRED IN THE MEXICAN"
114 PRINT"WAR?"
115 GOTO450
120 PRINT"THIS PRESIDENT DIED IN"
121 PRINT"OFFICE AND WAS A HERO"
122 PRINT"OF THE MEXICAN WAR?"
125 GOTO450
130 PRINT"WHO WAS PRESIDENT WHEN"
131 PRINT"THE 1850 SLAVERY"
132 PRINT"COMPROMISE AND THE"
133 PRINT"FUGITIVE SLAVE ACT WERE"
134 PRINT"PASSED?"
135 GOTO450
140 PRINT"WHICH PRESIDENT REPEALED"
141 PRINT"THE MISSOURI COMPROMISE?"
145 GOTO450
150 PRINT"THIS PRESIDENT FAVORED"
151 PRINT"THE LECOMPTON CONST-"
152 PRINT"ITUTION FOR KANSAS?"
155 GOTO450
160 PRINT"WHO WAS THE FIRST PRE-"
161 PRINT"SIDENT TO BE ASSASSI-"
162 PRINT"NATED? HE WAS IN OFFICE"
163 PRINT"DURING THE CIVIL WAR?"
165 GOTO450
170 PRINT"WHO WAS THE FIRST PRE-"
171 PRINT"SIDENT TO BE IMPEACHED?"
172 PRINT"THE SENATE FAILED TO"
173 PRINT"CONVICT HIM BY ONE VOTE."
175 GOTO450
180 PRINT"THIS PRESIDENT WAS"
181 PRINT"PLAGUED BY A CORRUPT"
182 PRINT"ADMINISTRATION EVEN"
183 PRINT"THOUGH HE PERSONALLY"
184 PRINT"WAS HONEST?"
185 GOTO450
190 PRINT"WHICH PRESIDENT WAS"
191 PRINT"ELECTED BY A COMMITTEE"
192 PRINT"OF CONGRESS WHEN THE"
193 PRINT"RETURNS WERE DISPUTED?"
195 GOTO450
200 PRINT"WHICH PRESIDENT WAS"
201 PRINT"ASSASSINATED BECAUSE OF"
202 PRINT"HIS DISLIKE OF THE"
203 PRINT"POLITICAL SPOILS SYSTEM?"
205 GOTO450
210 PRINT"THIS PRESIDENT AQUIRED"
211 PRINT"PEARL HARBOR BASE AND"
212 PRINT"WAS A FORMER GOVERNOR "
213 PRINT"OF THE ALASKA TERRITORY."
215 GOTO450
220 PRINT"WHICH PRESIDENT MARRIED"
221 PRINT"WHILE IN THE WHITE"
222 PRINT"HOUSE?"
225 GOTO450
230 PRINT"WHO WAS THE TWENTY-
231 PRINT"THIRD PRESIDENT? HE HAD"
232 PRINT"FEWER POPULAR VOTES "
233 PRINT"THAN HIS OPPONENT."
235 GOTO450
240 PRINT"WHO WAS THE ONLY PRE-"
241 PRINT"SIDENT TO BE ELECTED TO"
242 PRINT"TWO NONCONSECUTIVE "
244 PRINT"TERMS?"
245 GOTO450
250 PRINT"WHO WAS PRESIDENT"
251 PRINT"DURING THE SPANISH-"
252 PRINT"AMERICAN WAR?"
255 GOTO450
260 PRINT"WHICH PRESIDENT WON A"
261 PRINT"NOBEL PEACE PRIZE FOR"
262 PRINT"MEDIATING THE PEACE"
263 PRINT"TREATY IN THE RUSSO-"
264 PRINT"JAPANESE WAR?"
265 GOTO450
270 PRINT"WHO WAS PRESIDENT WHEN"
271 PRINT"INCOME TAX WAS STARTED?"
275 GOTO450
280 PRINT"WHO WAS PRESIDENT DUR-"
281 PRINT"ING THE FIRST WORLD "
282 PRINT"WAR?"
285 GOTO450
290 PRINT"WHICH PRESIDENT WAS"
291 PRINT"INVOLVED IN THE TEAPOT"
292 PRINT"DOME SCANDAL?"
295 GOTO450
300 PRINT"WHICH PRESIDENT HAD THE MOTO 'KEEP COOL'?"
305 GOTO450
310 PRINT"WHO WAS PRESIDENT WHEN"
311 PRINT"THE STOCK MARKET"
312 PRINT"CRASHED IN THE 30'S?"
315 GOTO450
320 PRINT"WHO WAS THE ONLY PRE-"
321 PRINT"SIDENT TO BE ELECTED"
322 PRINT"MORE THAN TWICE?"
325 GOTO450
330 PRINT"WHO WAS THE PRESIDENT"
331 PRINT"DURING THE KOREAN WAR?"
335 GOTO450
340 PRINT"WHICH PRESIDENT WAS A"
341 PRINT"GENERAL IN WW II?"
345 GOTO450
350 PRINT"WHO WAS THE FIRST"
351 PRINT"CATHOLIC PRESIDENT?"
355 GOTO450
360 PRINT"WHICH PRESIDENT HAD A"
361 PRINT"'WAR ON POVERTY'?"
365 GOTO450
370 PRINT"WHO WAS PESIDENT WHEN"
371 PRINT"MAN LANDED ON THE MOON?"
375 GOTO450
380 PRINT"WHICH PRESIDENT WAS"
381 PRINT"ELECTED BY CONGRESS"
382 PRINT"UNDER THE 25TH AMENDMENT?"
385 GOTO450
390 PRINT"WHICH PRESIDENT IS KNOWN FOR HIS SMILE?"
395 GOTO450
450 FORI=1TOR:READB$:NEXTI
452 PRINT:PRINT:INPUT"ANS.";A$
455 PRINT:PRINT:PRINTB$" IS"
457 PRINT"THE CORRECT ANSWER."
458 FORV=1TO3000:NEXT
459 FORV=1TO20:PRINT:NEXT
460 RESTORE:GOTO4
1000 DATA"GEORGE WASHINGTON"
2000 DATA"JOHN ADAMS"
3000 DATA"THOMAS JEFFERSON"
4000 DATA"JAMES MADISON"
5000 DATA"JAMES MONROE"
6000 DATA"JOHN QUINCY ADAMS"
7000 DATA"ANDREW JACKSON"
8000 DATA"MARTIN VAN BUREN"
9000 DATA"WILLIAM H. HARRISON"
10000 DATA"JOHN TYLER"
11000 DATA"JAMES K. POLK"
12000 DATA"ZACHARY TAYLOR"
13000 DATA"MILLARD FILLMORE"
14000 DATA"FRANKLIN PIERCE"
15000 DATA"JAMES BUCHANAN"
16000 DATA"ABRAHAM LINCOLN"
17000 DATA"ANDREW JOHNSON"
18000 DATA"ULYSSES S. GRANT"
19000 DATA"RUTHERFORD B. HAYES"
20000 DATA"JAMES A. GARFIELD"
21000 DATA"CHESTER A. ARTHUR"
22000 DATA"GROVER CLEVELAND"
23000 DATA"BENJAMIN HARRISON"
24000 DATA"GROVER CLEVELAND"
25000 DATA"WILLIAM MC KINLEY"
26000 DATA"THEODRORE ROOSEVELT"
27000 DATA"WILLIAM TAFT"
28000 DATA"WOODROW WILSON"
29000 DATA"WARREN G. HARDING"
30000 DATA"CALVIN COOLIDGE"
31000 DATA"HERBERT C. HOOVER"
32000 DATA"FRANKLIN D. ROOSEVELT"
33000 DATA"HARRY S. TRUMAN"
34000 DATA"DWIGHT D. EISENHOWER"
35000 DATA"JOHN F. KENNEDY"
36000 DATA"LYNDON B. JOHNSON"
37000 DATA"RICHARD M. NIXON"
38000 DATA"GERALD R. FORD"
39000 DATA"JIMMY CARTER"
40000 B=INT(R/10)+1
40001 PRINT:PRINT:PRINT:PRINT
40010 ON B GOTO40300,40390,40500,40600
40300 ONRGOTO10,20,30,40,50,60,70,80,90,100
40390 S=R-9
40400 ONSGOTO100,110,120,130,140,150,160,170,180,190
40500 S=R-19
40550 ONSGOTO200,210,220,230,240,250,260,270,280,290
40600 S=R-29
40650 ONSGOTO300,310,320,330,340,350,360,370,380,390
50000 PRINT:PRINT"DIRECTIONS":PRINT:PRINT
50010 PRINT"TO START THE GAME TYPE"
50011 PRINT"IN A RANDOM NUMBER AND"
50012 PRINT"PUSH IN THE RETURN KEY."
50014 PRINT"A QUESTION WILL THEN BE"
50016 PRINT"TYPED BY THE COMPUTER."
50018 PRINT"YOU SHOULD TYPE IN THE"
50019 PRINT"ANSWER AND THEN PUSH"
50020 PRINT"THE RETURN KEY."
50040 PRINT:PRINT"IF YOU DO NOT KNOW THE"
50050 PRINT"ANSWER TYPE IN A ? AND"
50055 PRINT"THEN PUSH THE RETURN"
50058 PRINT"KEY.":PRINT:PRINT
50060 PRINT"WHEN YOU WANT TO STOP"
50065 PRINT"JUST PUSH THE RETURN"
50068 PRINT"KEY WITHOUT TYPING"
50070 PRINT"ANYTHING.":PRINT:GOTO3
60000 FOR I=1TOZ
60005 IFZ=21 THEN60999
60010 IF Q(I)=R THEN60100
60020 NEXTI
60050 Q(Z)=R
60060 GOTO40000
60100 Z=Z-1
60110 GOTO4
60999 PRINT:PRINT:PRINT
61000 PRINT"YOU HAVE ANSWERED 20"
61001 PRINT"QUESTIONS,IF YOU"
61002 PRINT"WISH TO CONTINUE JUST"
61003 PRINT"TYPE IN 'RUN' AFTER"
61004 PRINT"THE OK THAT THE COM-"
61005 PRINT"PUTER TYPES."

View file

@ -0,0 +1,78 @@
10 PRINT"SEAWOLFE
20 PRINT"COPYRYGHT 1978 BY RODGER OLSEN
30 INPUT"DO YOU WANT INSTRUCTIONS";A$:IFA$="YES"THEN700
40 IFA$<>"NO"THEN30
50 GP=53247:GI=3:LC=64:W=32:K1=5:K2=3:K3=65:K4=33:P=1
60 VB=600:IFPEEK(57088)<129THENVB=540:GOTO90
70 IFVB<>600THEN60
80 P=254:LC=32
90 G1=INT(GP+26*LC+.5*W):T=G1+1:T2=T:MP=GP+21*LC
100 FORX=1TO5:READG(X),ID(X):D(X)=ID(X):NEXT
110 S1=GP+15*LC:S3=GP+11*LC+W:S(1)=S1:S(2)=S1+1:S(3)=S3:S(4)=S3-1
120 INPUT"REGULAR(1) OR MASTER'S (2) GAME";G:POKE530,1:POKE57088,P
130 MN=MP:POKE56900,0:SD=GP+6*LC+8:S5=GP+7*LC+W+6:S(5)=S5:FM=-2
140 FORX=1TO32:PRINT:NEXT:FORX=1TO32:POKEGP+3*LX+X,233
150 POKEGP+29*LC+X,233
160 IFVB=540THENPOKEGP+X*LC,233:POKEGP+32+X*LC,233
170 POKEGP+X+13*LC,191:POKEGP+X+32*LC,233:NEXT
180 POKEGP+14*LC+20,193:POKEGP+14*LC+21,193:POKEGP+13*LC+21,13
190 P=PEEK(57088):IFVB=600THENP=255-P
200 IFP=K1ANDGI<5THENGI=GI+1
210 TURN=TURN+1:IFTURNS>300THEN660
220 IFP=K2ANDGI>1THENGI=GI-1
230 S$=STR$(300-TU)
240 FORX=2TOLEN(S$):POKESD+10+X,ASC(MID$(S$,X,1))
250 NEXT
260 POKESD+10+X,32
270 POKEG1,G(GI):POKEG1+2,G(GI)
280 IFP=K3ANDT=G1+1THENPOKET,32:MF=2*LC-3+GI:T=T-MF:POKET,16:GOTO300
290 IFP=K3ANDT2=G1+1THENPOKET2,32:M2=2*LC-3+GI:T2=T2-M2:POKET2,16
300 IFP=K4THENPOKE530,0:POKE56900,1:GOTO120
310 IFG=1THENFORX=1TO75:NEXT
320 POKES(1),32:POKES(3),32:POKES(5),32:S(1)=S(1)+1:S(5)=S(5)+FM
330 IFS(1)=S1+WTHENS(1)=S1:D(1)=ID(1):D(2)=ID(2)
340 S(2)=S(1)+1:S(3)=S(3)-1
350 IFS(3)=S3-WTHENS(3)=S3:D(3)=ID(3):D(4)=ID(4)
360 MC=MC+1:IFMC=5THENMC=1:GOSUB510
370 IFS(5)=S5ORS(5)=(S5-W-6)THENFM=-FM:D(5)=ID(5)
380 S(4)=S(3)-1:FORX=1TO5:POKES(X),D(X):NEXT
390 IFT=G1+1THENFORX=1TO50:NEXT:GOTO450
400 P=PEEK(T-LC):IFP<10THENGOSUB550 :GOTO450
410 IFG=1THENP=PEEK(T-LC-1):IFP<10THENGOSUB550
420 IFP=127THENGOSUB550 :GOTO450
430 IFT<GP+3*LCTHENPOKET,32:T=G1+1:POKET,16:GOTO450
440 POKET,32:T=T-MF:POKET,29
450 IFT2=G1+1THENFORX=1TO50:NEXT:GOTO190
460 P=PEEK(T2-LC):IFP<10THENGOSUB560 :GOTO190
470 IFG=1THENP=PEEK(T2-LC-1):IFP<10THENGOSUB560 :GOTO450
480 IFP=127THENGOSUB560 :GOTO190
490 IFT2<GP+3*LCTHENPOKET2,32:T2=G1+1:POKET2,16:GOTO190
500 POKET2,32:T2=T2-M2:POKET2,29:GOTO190
510 POKEMN,32:POKEMN+8,32:POKEMN+16,32:MN=MN+1
520 IFMN=MP+W+8THENMN=MP
530 POKEMN,127:IFSC>10THENPOKEMN+8,127:IFSC>30THENPOKEMN+16,127:RETURN
540 RETURN
550 POKET,32:Q=T-LC-3:T=G1+1:POKET,16:GOTO570
560 POKET2,32:Q=T2-LC-3:T2=G1+1:POKET2,16
570 D=42
580 FORX=1TO5:POKEQ+X,D:NEXT:IFD=42THEND=32:GOTO580
590 IFP=7ORP=8THEND(1)=32:D(2)=32
600 IFP=5ORP=6THEND(3)=32:D(4)=32
610 IFP=4THEND(5)=32:SC=SC+5
620 IFP=127THENRETURN
630 SC=SC+1:POKEG1+1,16:PS=SC:OS=0
640 IFSC>9THENOS=INT(SC/10):PS=(SC-10*OS)
650 POKESD,OS+48:POKESD+1,PS+48:POKESD+2,48:POKESD+3,48:RETURN
660 PRINT"FINAL SCORE "SC*100:A$="DROWNER'":IFSC>9THENA$="AMATEURS"
670 IFSC>15THENA$="MASTERS":IFSC>20THENA$="CAPTAIN'S"
680 IFSC>25THENA$="COMMODORE'S":IFSC>30THENA$="ADMIRALS"
690 PRINT"YOU EARNED YOUR "A$ "STRIPES":SC=0:TU=0:GOTO120
700 PRINT:PRINT:PRINT:PRINT"THE LEFT SHIFT AIMS THE TUBE TO THE LEFT
710 PRINT"THE RIGHT SHIFT AIMS THE TUBE RIGHT
720 PRINT"THE CTRL KEY FIRES A TORPEDOE-YOU CAN FIRE
730 PRINT"UP TOO 2 TORPEDOES AT A TIME
740 PRINT"THE SMALL SHIP IS 500 POINTS":PRINT"ALL OTHER SHIPS ARE 100
750 PRINT"HIT ESC TO END THE GAME EARLY
760 INPUT"READY TO START";A$
765 PRINT:PRINT:PRINT:GOTO50
770 DATA189,7,201,8,140,6,200,5,190,4

View file

@ -0,0 +1,85 @@
10 PRINT:PRINT:PRINT"TANK FOR TWO":PRINT
20 PRINT"COPYRIGHT R. OLSEN 1978
30 T1=3:T2=7:POKE530,1::S(1)=54429:S(2)=54403
40 FORX=1TO8:READTA(X):NEXT:P1=53916:P2=54019
50 FORX=0TO9:READMF(X):NEXT
60 FORX=0TO9:READBD(X):NEXT:L=64
70 C1=53279:C2=55265:P0=128:PT=4:FORX=1TO5:READUP(X):NEXT
80 FORX=1TO7:READAC(X):NEXT
90 VB=600:IFPEEK(57088)<128THENVB=540:GOTO150
100 FORX=0TO9:READMF(X):NEXT:L=32
110 P0=127:PT=251:S(1)=53765:S(2)=53785:FORX=1TO5
120 READUP(X):NEXT
130 FORX=1TO7:READAC(X):NEXT:P1=53766:P2=53592
140 C1=53284:C2=54204
150 INPUT"DO YOU WANT DIRECTION";A$:IFA$="YES"THEN610
160 FORX=C1TOC2:POKEX,32:IFRND(1)>.96THENPOKEX,161
170 NEXT
180 POKE56900,0:POKE530,1:B=161:KB=57088
190 FORX=1TO5:FORY=1TO5:POKEUP(Y)+X,B:NEXTY:NEXTX
200 FORX=1TO5:FORY=1TO7:POKEAC(Y)+L*X,B:NEXTY,X
210 FORX=1TOL:POKEC1+X,B:POKEC2-X,B:NEXT
220 FORX=1TO32:POKEC1+X*L,B:POKEC2-X*L,B:NEXT
230 POKEKB,P0:PK=PEEK(KB):IFVB=600THENPK=255-PK
240 IFPK=128THENT2=T2-1:IFT2=0THENT2=8
250 M1=MF(T1):M3=MF(T2)
260 IFPK=32THENT2=T2+1:IFT2=9THENT2=1
270 IFPK=64ANDF2=0THENB2=P2:F2=1:M4=MF(T2)
280 IFPK=160ANDPEEK(P2+MF(T2))=32THENPOKEP2,32:P2=P2+MF(T2)
290 IFPK=192ANDF2=0THENB2=P2-MF(T2-1):F2=1
300 IFPK=96ANDF2=0THENB2=P2-MF(T2+1):F2=1
310 POKEP2,TA(T2)
320 POKEKB,PT:PK=PEEK(KB):IFVB=600THENPK=255-PK
330 IFPK=8THENT1=T1-1:IFT1=0THENT1=8
340 IFPK=10ANDPEEK(P1+MF(T1))=32THENPOKEP1,32:P1=P1+MF(T1)
350 IFPK=2THENT1=T1+1:IFT1=9THENT1=1
360 IFPK=4ANDF1=0THENF1=1:B1=P1:SM=MF(T2)
370 IFPK=6ANDF1=0THENB1=P1-MF(T1+1):F1=1
380 IFPK=12ANDF1=0THENB1=P1-MF(T1-1):F1=1
390 POKEP1,TA(T1)
400 FORX=1TO3:IFF1=0THEN460
410 IFB1<>P1THENPOKEB1,32
420 P=PEEK(B1+M1):IFP=161THENF1=0:GOTO460
430 B1=B1+M1:POKEB1,BD(T1)
440 IFP=TA(T2)THENF1=0:B1=P1:S1=S1+1:GOTO460
450 IFB1<C1ORB1>C2THENF1=0
460 IFF2=0THEN520
470 IFB2<>P2THENPOKEPB2,32
480 P=PEEK(B2+M3):IFP=161THENF2=0:GOTO520
490 B2=B2+M3:POKEB2,BD(T2)
500 IFP=TA(T1)THENF2=0:B2=P2:S2=S2+1
510 IFB2<C1ORB2>C2THENF2=0
520 IFB2<>P2THENPOKEB2,32
530 IFB1<>P1THENPOKEB1,32
540 NEXTX
550 DS=S2:IFS2>10THENDS=S2-10:POKES(2)-1,49
560 POKES(2),DS+48:IFDS=10THENPOKES(2),48
570 DS=S1:IFS1>10THENDS=S1-10:POKES(1)-1,49
580 POKES(1),DS+48:IFDS=10THENPOKES(1),48
590 IFS1>19ORS2>19THEN810
600 GOTO230
610 PRINT:PRINT:PRINT:PRINT"PLAYER 1 USES KEYS 1,2, AND 3
620 PRINT"PLAYER 2 USES KEYS N,M, AND<
630 PRINT"1,2,N, AND< ARE DIRECTION KEYS
640 PRINT"PRESSING BOTH DIRECTION KEYS MOVES YOU FORWARD
650 PRINT:PRINT"KEYS 2 AND M ARE FIRE CONTROL KEYS
660 PRINT"PRESSING THEM ALONE FIRES STRAIGHT AHEAD
670 PRINT"PRESSING THEM WITH A DIRECTION KEY SHOOTS
680 PRINT"TO THE SIDE
690 PRINT"THE MISSLE IS STEERABLE AFTER IT IS SHOT
700 INPUT"INPUT A NUMBER TO START";X:GOTO160
710 DATA248,249,250,251,252,253,254,255
720 DATA -65,-64,-63,1,65,64,63,-1,-65,-64,-63
730 DATA139,189,132,190,139,189,132,190,139
740 DATA53633,53526,54618,54411,54793
750 DATA53216,53233,53848,53702,54411,54939,54406
760 DATA-33,-32,-31,1,33,32,31,-1,-33,-32
770 DATA53845,53965,53956,53609,53845,53968,54006
780 DATA53641,53359,53415,53782,54005
790 FORX=0TO9:READBD(X):NEXT:L=64
800 RETURN
810 IFS1>19THENFORX=1TO32:PRINT"TANK 1 WINS!":NEXTX
820 IFS2>19THENFORX=1TO32:PRINTTAB(15)"TANK 2 WINS!":NEXTX
830 S1=0:S2=0
840 RESTORE:GOTO30

View file

@ -0,0 +1,7 @@
VisiCalc History
---
See [http://www.bricklin.com/history/vcexecutable.htm](http://www.bricklin.com/history/vcexecutable.htm)
VisiCalc License
---
See [http://www.bricklin.com/history/vclicense.htm](http://www.bricklin.com/history/vclicense.htm)

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcjs/1.15.3/manifest.xsl"?>
<manifest type="software">
<title>VisiCalc</title>
<!-- Since version numbers are incorporated into the disk image names, and this version number is a bit ugly, we're not exposing it with the normal "version" tag -->
<versionInternal>VC-176Y2-IBM-TEST</versionInternal>
<type>Application</type>
<category>Productivity</category>
<company>Software Arts</company>
<author href="http://www.bricklin.com/history/sai.htm">Dan Bricklin</author>
<author href="http://www.frankston.com/public/?name=ImplementingVisiCalc">Bob Frankston</author>
<releaseDate>December 16, 1981</releaseDate>
<license href="http://www.bricklin.com/history/vclicense.htm">Lotus Development</license>
<machine href="/configs/pc/machines/5150/mda/64kb/machine.xml" state="/apps/pc/1981/visicalc/state.json"/>
<disk id="disk01" dir="/apps/pc/1981/visicalc/private/" href="/apps/pc/1981/visicalc/disk.json">
<file>VC.COM</file>
<file dir="../">README.md</file>
<link href="http://www.bricklin.com/history/vclicense.htm">VisiCalc License</link>
</disk>
</manifest>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcjs/1.15.3/manifest.xsl"?>
<manifest type="software">
<title>Executive Suite</title>
<version/>
<type>Game</type>
<category>Text Simulation</category>
<author>Armonk Corporation</author>
<releaseDate>1982</releaseDate>
<machine href="/configs/pc/machines/5160/mda/256kb/fake188/machine.xml" state="/apps/pc/1982/esuite/state.json"/>
<disk id="disk01" dir="/apps/pc/1982/esuite/private/" href="/apps/pc/1982/esuite/disk.json">
<name>Executive Suite (1982)</name>
<file>esuite.com</file>
<file>game.dat</file>
<link href="http://www.mobygames.com/game/executive-suite">MobyGames</link>
</disk>
</manifest>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,33 @@
CACHE MANIFEST
/apps/pc/1985/rogue/manifest.xml
/versions/pcjs/1.13.6/manifest.xsl
/versions/pcjs/1.13.6/common.xsl
/versions/pcjs/1.13.6/components.xsl
/configs/pc/machines/5160/cga/640kb/machine.xml
/configs/pc/keyboards/minimal-f1-f10.xml
/configs/pc/disks/library.xml
/disks/pc/dos/microsoft/3.20/manifest.xml
/disks/pc/dos/microsoft/4.0M/manifest.xml
/disks/pc/tools/microsoft/BASIC/manifest.xml
/disks/pc/tools/microsoft/MSC-048014.400/manifest.xml
/disks/pc/tools/microsoft/MASM-016014.400/manifest.xml
/disks/pc/tools/microsoft/MOUSE-000199.500/manifest.xml
/disks/pc/apps/lotus/123/1.0a/manifest.xml
/disks/pc/apps/microsoft/word/2.0c/manifest.xml
/disks/pc/apps/microsoft/word/3.0/manifest.xml
/disks/pc/apps/microsoft/word/5.0/manifest.xml
/apps/pc/1981/visicalc/manifest.xml
/apps/pc/1982/esuite/manifest.xml
/apps/pc/1987/thinktank/manifest.xml
/apps/pc/1992/moria/manifest.xml
/versions/pcjs/1.13.6/common.css
/versions/pcjs/1.13.6/components.css
/versions/pcjs/1.13.6/pc.js
/devices/pc/hdc/ibm-xebec-1982.json
/devices/pc/basic/ibm-basic-1.10.json
/devices/pc/bios/5160/1982-11-08.json
/devices/pc/video/ibm-mda-cga.json
/disks/pc/dos/ibm/2.00/PCDOS200-DISK1.json
/disks/pc/dos/ibm/2.00/PCDOS200-DISK2.json
/apps/pc/1985/rogue/state.json
/apps/pc/1985/rogue/disk.json

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcjs/1.15.3/manifest.xsl"?>
<manifest type="software">
<title>Rogue</title>
<version/>
<type>Game</type>
<category>ASCII Adventure</category>
<creator>Michael Toy</creator>
<creator>Glenn Wichman</creator>
<creationDate>1980</creationDate>
<releaseDate>1985</releaseDate>
<author>Ken Arnold</author>
<author>Jon Lane</author>
<author>Michael Toy</author>
<disk id="disk01" dir="/apps/pc/1985/rogue/private/" href="/apps/pc/1985/rogue/disk.json">
<name>Rogue (1985)</name>
<file>MKOPT.EXE</file>
<file>ROGUE.COM</file>
<file>ROGUE.EXE</file>
<file>ROGUE.OPT</file>
<file>ROGUE.PIC</file>
<file>ROGUE.SCR</file>
</disk>
<machine href="/configs/pc/machines/5160/cga/640kb/machine.xml" state="/apps/pc/1985/rogue/state.json"/>
</manifest>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcjs/1.15.3/manifest.xsl"?>
<manifest type="software">
<title>ThinkTank</title>
<version>2.41NP</version>
<type>Application</type>
<category>Productivity</category>
<company>Living Videotext</company>
<releaseDate>September 25, 1987</releaseDate>
<disk id="disk01" dir="/apps/pc/1987/thinktank/private/" href="/apps/pc/1987/thinktank/disk.json">
<name>ThinkTank 2.41NP</name>
<file>AUTOEXEC.BAT</file>
<file>READ_ME.DB</file>
<file>READ_ME.SAV</file>
<file>TANK.EXE</file>
<file>TANKCLIP.BRD</file>
<file>TANKOPTS.DAT</file>
<file>TMPLATES</file>
<link href="http://outliners.scripting.com/thinkTank2Pc.html">Outliners.com</link>
</disk>
<machine href="/configs/pc/machines/5160/cga/640kb/machine.xml" state="/apps/pc/1987/thinktank/state.json"/>
</manifest>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcjs/1.15.3/manifest.xsl"?>
<manifest type="software">
<title>The Dungeons of Moria</title>
<version>4.872</version>
<type>Game</type>
<category>ASCII Adventure</category>
<creator>
<name>Robert Alan Koeneke</name>
</creator>
<creationDate>March 25, 1983</creationDate>
<releaseDate>November 1, 1988</releaseDate>
<author>
<name>D. G. Kneller</name>
<desc>MSDOS port</desc>
</author>
<disk id="disk01" dir="/apps/pc/1988/moria/private/">
<name>Moria v4.872</name>
<file>CONFIG.DOC</file>
<file>GOD</file>
<file>MADNESS1</file>
<file>MORIA.CNF</file>
<file>MORIA.DOC</file>
<file>MORIA.EXE</file>
<file>MORIA.SCR</file>
<file>MORIACHR.DIE</file>
<file>ORC2</file>
<file>PKZIP.EXE</file>
</disk>
</manifest>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,112 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcjs/1.15.3/manifest.xsl"?>
<manifest type="software">
<title>The Dungeons of Moria</title>
<version>5.5</version>
<type>Game</type>
<category>ASCII Adventure</category>
<creator>
<name>Robert Alan Koeneke</name>
</creator>
<creationDate>March 25, 1983</creationDate>
<releaseDate>August 12, 1992</releaseDate>
<author>
<name>Robert A. Koeneke</name>
<position>Student</position>
<org>University of Oklahoma</org>
</author>
<author>
<name>Jimmey W. Todd Jr.</name>
<position>Student</position>
<org>University of Oklahoma</org>
</author>
<author href="mailto:grabiner@math.harvard.edu">
<name>David J. Grabiner</name>
<org>Harvard University</org>
</author>
<author href="mailto:wilson@kithrup.com">
<name>James E. Wilson</name>
<org>Cygnus Support</org>
</author>
<contributor>
<name>D. G. Kneller</name>
<desc>MSDOS Moria port, reduced map display, 16 bit integers</desc>
</contributor>
<contributor>
<name>Christopher J. Stuart</name>
<desc>recall, options, inventory, running code, etc.</desc>
</contributor>
<contributor>
<name>Curtis McCauley</name>
<desc>Macintosh Moria port for MPW C</desc>
</contributor>
<contributor>
<name>Stephen A. Jacobs</name>
<desc>Atari ST Moria port for MW C</desc>
</contributor>
<contributor>
<name>William Setzer</name>
<desc>object naming code</desc>
</contributor>
<contributor>
<name>David J. Grabiner</name>
<desc>numerous bug reports, consistency checks, etc</desc>
</contributor>
<contributor>
<name>Dan Bernstein</name>
<desc>UNIX hangup signal fix, many bug fixes</desc>
</contributor>
<contributor>
<name>Corey Gehman</name>
<desc>Amiga Moria port</desc>
</contributor>
<contributor>
<name>Ralph Waters</name>
<desc>VMS support code, IBM-PC Turbo C bug fixes</desc>
</contributor>
<contributor>
<name>Johsua Delahunty</name>
<desc>VMS support code</desc>
</contributor>
<contributor>
<name>Todd Pierzina</name>
<desc>VMS support code</desc>
</contributor>
<contributor>
<name>Joseph Hall</name>
<desc>line of sight code, monster compiler</desc>
</contributor>
<contributor>
<name>Eric Vaitl</name>
<desc>PC-Curses replacement for Turbo C</desc>
</contributor>
<contributor>
<name>Scott Kolodzieski</name>
<desc>Atari ST port for Gnu C</desc>
</contributor>
<contributor>
<name>Hildo Biersma</name>
<desc>Atari ST port for Turbo C</desc>
</contributor>
<contributor>
<name>Ben Schreiber</name>
<desc>Macintosh port for Think C</desc>
</contributor>
<disk id="disk01" dir="/apps/pc/1992/moria/bin/" href="/apps/pc/1992/moria/disk.json">
<name>Moria 5.5</name>
<file>EXP.DOC</file>
<file>MORIA.CNF</file>
<file>MORIA1.TXT</file>
<file>MORIA2.TXT</file>
<file>MORIA88.EXE</file>
<file>ORIGCMDS.HLP</file>
<file>OWIZCMDS.HLP</file>
<file>ROGLCMDS.HLP</file>
<file>RWIZCMDS.HLP</file>
<file>SPELLS.DOC</file>
<file>VERSION.HLP</file>
<file>WELCOME.HLP</file>
<file>SCORES</file>
</disk>
<machine href="/configs/pc/machines/5160/cga/640kb/machine.xml" state="/apps/pc/1992/moria/state.json"/>
</manifest>

File diff suppressed because one or more lines are too long

15
apps/pc/README.md Normal file
View file

@ -0,0 +1,15 @@
IBM PC Application Archives
---
Below are selected demos of classic IBM PC applications running on [PCjs](/docs/about/).
* [VisiCalc (1981)](1981/visicalc/)
* [Executive Suite (1982)](1982/esuite/)
* [Rogue (1985)](1985/rogue/)
* [ThinkTank (1987)](1987/thinktank/)
* The Dungeons of Moria (1988, [1992](1992/moria/))
All of these demos are driven by simple XML manifest files. Click one and use your web browser's "View Source"
command to see the raw manifest. Learn more about PCjs manifest files [here](/apps/).
You can browse the rest of our software archives by year. There is no search capability at this time.