# shell archive created by dwjones on Tue Aug 26 11:10:15 AM CDT 2025 # To install this software on a UNIX compatable system (Linux or MacOS): # 1) create a directory (e.g. with the shell command mkdir project) # 2) change to that directory (e.g. with the command cd project), # 3) direct the remainder of this text to sh (e.g. sh < ../thisfile). # This will make sh create files in the new directory; it will do # nothing else (if you're paranoid, you should scan the following text # to verify this before you follow these directions). Then read README # in the new directory for additional instructions. # On other systems, extract files from this file using a text editor. # Each file is bracketed between two lines of xxxx. # The first line of xxxx contains a cat command giving the file name. cat > README <<\xxxxxxxxxx PDP-8 Core images ================= These core images were created for use with Doug Jones's PDP-8 emulator. When available, source has also been included. The PDP-8 emulator is available from: > [http://www.cs.uiowa.edu:~dwjones/pdp8/pdp8e.txt](http://www.cs.uiowa.edu:~dwjones/pdp8/pdp8e.txt) > Distributed by: Douglas W. Jones > Contact: douglas-w-jones@uiowa.edu > Date: Aug. 26, 2025 Files in this distribution -------------------------- * bin -- core image, loaded with the high speed reader BIN loader * bin.pal -- the source used to make this starts at 7777, requires a high speed reader * blankRX01.uu -- a formatted rx01 diskette with no data on it, needed because (just like the real thing) the RX01 emulator can't format disks. Copy this as needed. this file is uuencoded; use uudecode or on-line tools to convert the blank disk to usable form. * chase -- core image, small demo of blinkenlights front panel * chase.pal -- the source used to make this (and how to use more than 4K) starts at 0000, requires 4K core * focal -- core image, loaded with RIM, BIN and 4K stand alone FOCAL starts at 0200, requires a TTY * rim -- core image, loaded with the high speed reader RIM loader * rim.pal -- the source used to make this starts at 7756, requires a high speed reader * rxboot -- core image, DEC's rx01 bootstrap code * rxboot.pal -- the source used to make this starts at 0033, requires an RX01. * rxboot1 -- core image, an alternate (shorter) rx01 bootstrap * rxboot1.pal -- the source used to make this starts at 0032, requires an RX01. * vc8edemo -- core image, demo of the VC8E oscilloscope display * vc8edemo.pal -- the source used to make this starts at 0000, requires a VC8E scope display. RX01 diskette images of OS/8 are distributed separately Use --- To launch the emulator on a core image file, `focal` for example, use the Unix or Linux command line (the shell) and type: > `pdp8e focal` This will load the core image on the emulator and then start the emulator in halt state. You will then need to use the console (front panel switches or command-line debugger) to enter the starting address and start the emulated PDP-8 running. When you exit the emulator, it will try to write its core image out to the currently mounted core file. This simulates the non-volatile nature of core memory, so if you launch the emulator on the same core file you used, you will see the data that was there when you last executed the emulator. If you make a core file read only, the emulator will not save its state, allowing you to keep important demos in pristine form. Data formats ------------ **Core images** are distributed in what is essentially Charles Lasner's IPL format. Optionally, the actual memory contents may be preceeded by a line giving the emulator's location, for example: > `#!pdp8e` If the emulator is installed in the right place on a Unix or Linux system, (Posix compatable), this may allow you to make core files executable and have the emulator lauch automatically when you run core file. **RX01 images** begin with the 4-character ASCII string: > `rx01` Followed, in bytes 4 through 255, with the deleted sector bits, one per sector, packed least significant bit first in sector order. Bytes 256 and up hold 128 byte sectors, with 26 consecutive sectors making up each track and 77 tracks per disk. For more detail on the above data formats, see > [http://www.cs.uiowa.edu:~dwjones/pdp8/formats/](http://www.cs.uiowa.edu:~dwjones/pdp8/formats/) **PAL source files** are written in DEC's PAL assembly language for the PDP-8. PAL assemblers are available from several sources, but the PAL code given here was all assembled using the PAL compatable cross assembler written in C available from > [http://www.cs.uiowa.edu:~dwjones/pdp8/pal.txt](http://www.cs.uiowa.edu:~dwjones/pdp8/pal.txt) The assembler output code was loaded into the emulator's memory image by either of two means: Either the `coremake` utility distributed with the emulator was used to load RIM or BIN format assembler output, or the BIN loader was run on the emulated PDP-8 to load BIN images. The image of FOCAL contained here was loaded from a bytestream image of the original FOCAL 1969 paper tape in BIN format. **UUencoding** is used to distribute RX01 diskette images, as indicated by the `.uu` suffix on the file name. UUencoding converts binary files to a textual representation so that they may be e-mailed (or processed as parts of a Unix shell archive such as this). There are on-line UUdecoders, and the the UUencode and UUdecode utilities are easy to install on any Unix or Linux box if they are not already installed. xxxxxxxxxx cat > bin <<\xxxxxxxxxx #!pdp8e !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!C[,'`IKO]#KI,J#W,)^)3H`IOH,J$",# bin.pal <<\xxxxxxxxxx / PAPER TAPE BINARY AND RIM LOADERS FOR PAPER TAPE INPUT / BASED ON CODE PLACED IN PUBLIC DOMAIN BY C. J. LASNER / DERIVED BY CJL FROM DEC'S BIN LOADERS FOR USE IN P?S/8 / MODIFIED FOR STAND-ALONE USE BY D. W. JONES / I/O INSTRUCTIONS USED. COMMENT OUT ALL BUT ONE VERSION / TTY INPUT /KSFIOT= KSF /KRBIOT= KRB /KCCIOT= KCC /KRSIOT= KRS / HIGH SPEED READER INPUT KSFIOT= RSF KRBIOT= RFC RRB KCCIOT= RFC KRSIOT= RRB * 7647 /HISTORICAL STARTING LOCATION MAY BE AS LOW AS 7625 /RANGE 07600-07642 AVAILABLE FOR DISK BOOT ROUTINE / / / / / / / / / ROUTINE TO GET AND DECODE FRAME OF TAPE / SKIPS NEXT INSTRUCTION IF DATA OR ORIGIN WORD / RETURN DIRECTLY IF LEADER / PROCESS ORIGIN SETTING AND GET NEXT FRAME / ON RETURN, AC=0 ALWAYS / WHAT A KLUGE! BEGG, .-. /HISTORICAL NAME BEGG1, JMS BNREAD /GET A FRAME TAD BNHLT /(7402) /TEST FOR ERROR (HIGH BITS) SPA SNA CLA /SKIP IF (FRAME+7402) > 0 BNLINE, JMP BGOOD /JUMP IF NO / / HLT /HERE IF ERROR JMP BEGG1 /GET MORE CHARACTERS BGOOD, TAD BCHAR /\ AND BN300 /(300) / \ TAD BN7600 /(-200) / >BUMP RETURN IF DATA SPA / / OR ORIGIN ISZ BEGG // SPA SNA CLA /RETURN IF NOT FIELD SETTING JMP I BEGG /RETURN IF LEADER, SKIP RETURN TAD BCHAR /\ IF DATA OR ORIGIN BN300, AND BFMASK /(70) / \ TAD BNCDF /(CDF) / >PROCESS FIELD SETTINGS DCA BMTEM / / JMP BEGG1 // / / / / / / / / / ROUTINE TO GET ONE FRAME TO AC AND BCHAR BNREAD, .-. KSFIOT JMP .-1 /WAIT FOR INPUT KRBIOT DCA BCHAR /SAVE FRAME TAD BCHAR /GET IT BACK JMP I BNREAD /RETURN BFMASK, 70 /HARMLESS AND BNCDF, CDF 00 /CDF CONSTANT / / / / / / / / / PROCESS END OF TAPE BEND, JMS BASEMB /GOT TRAILER, DO LAST WORD CIA /INVERT FOR CHECKSUM COMPARISON BIPZP1, TAD BCHKSM BNHLT, HLT /AC EQUALS ZERO IF NO ERRORS / / / / / / / / / MAIN PROGRAM BBEGIN, KCCIOT /START OF PROGRAM BN7600, 7600 /GROUP 2 CLA USED AS CONSTANT RDF /\ TAD BNCDF /(CDF) / >SETUP INITIAL LOADING FIELD DCA BMTEM // BAUTO, JMS BEGG /GET A FRAME JMP .-1 /IGNORE LEADER BEGO, DCA BCHKSM /ZERO OR ADD TO CHECKSUM TAD BMTEM /SET UP DCA BLODIT /DESIRED FIELD TAD BCHAR /SAVE AS DCA BWORD1 /FIRST FRAME JMS BNREAD /GET NEXT DCA BWORD2 /SAVE AS SECOND FRAME JMS BEGG /GET NEXT FRAME JMP BEND /TRAILER, GO FINISH UP JMS BASEMB / BLODIT, HLT /CDF INTO LOADING FIELD SNL /SKIP IF ORIGIN SETTING DCA I RORG /STORE THE WORD IF DATA ISZ RORG /PUSH POINTER SZL /NOP NOT NEEDED; SKIP IF ORIGIN DCA RORG /SAVE ORIGIN BCHEX, TAD BWORD1 /NOT RICE, CORN OR WHEAT TAD BWORD2 /ADD LATEST WORDS TAD BCHKSM /AND CHECKSUM JMP BEGO /ACCUMULATE AND DO NEXT / / / / / / / / / ASSEMBLE A WORD FROM 2 FRAMES / AC = 0 ON ENTRY, AC = ASSEMBLED WORD ON EXIT / LINK = ORIGIN SETTING BIT ON EXIT BASEMB, .-. TAD BWORD1 /GET FIRST FRAME CLL RTL;RTL;RTL /SHIFT LEFT 6 TAD BWORD2 /ADD ON SECOND FRAME JMP I BASEMB /RETURN / / / / / / / / BCHAR, .-. /INPUT BUFFER BMTEM, .-. /FIELD TEMPORARY BCHKSM, .-. /CHECKSUM BWORD1, .-. /FRAME 1 TEMPORARY BWORD2, .-. /FRAME 2 TEMPORARY / THE RIM LOADER FOLLOWS IN 7756-7775 RORG= 7776 /USED BY RIM AND BIN FOR ORIGIN * 7777 / FINAL WORD OF CORE (AFTER RIM) JUMPS TO BIN JMP BBEGIN /START BINARY LOADER $ xxxxxxxxxx cat > blankRX01.uu <<\xxxxxxxxxx begin 600 blank M chase <<\xxxxxxxxxx #!pdp8e \1]2Y!1,I$1,I&1,I(Y)I1!!!!!!!!!!19I119I319I5Y)IA!!!!!!!!!!!!!!!! 1IIA1IIC1IIEY)J!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2)J!2)J#2)J%Y)N*!!#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 3)K!3)K#3)K%Y)O*!!%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 3)K!3)K#3)K%Y)O*!!)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 3)K!3)K#3)K%Y)O*!!1!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 3)K!3)K#3)K%Y)O*!!A!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 3)K!3)K#3)K%Y)O*!!!# end xxxxxxxxxx cat > chase.pal <<\xxxxxxxxxx / A blinkenlights demo program that makes chase lights in both PC and AC / The low 4 bits of PC will all flicker as the program executes while the / high 9 bits of PC and all the bits of AC display chase lights. / / Author: Douglas W, Jones / Contact: douglas-w-jones@uiowa.edu / Date: Aug. 26, 2025 / Copyleft: This is freeware, distributed with no restrictions at all. / Duplicate, redistribute, sell, or modify as you wish. / Hardware: Requires PDP-8 with 4K memory and blinkenlights front panel. / Comments in the code show how to extend the chase up to 32K. / It will run on a PDP-8/A or later, but won't be interesting. / On a PDP-8/E or PDP-8/F, set the front panel to display AC. *0000 CLA CLL CML / L,AC = 10000 MQL / MQ = 0 /A, CDF 0000 / Use this line if you have 8K to 32K of memory A, NOP / Use this line for the 4K version ISZ A3 JMP .-1 / DELAY 1 ISZ A3 JMP .-1 / DELAY 2 ISZ A3 JMP .-1 / DELAY 3 RAR JMP B A3, .-. *0020 B, ISZ B3 JMP .-1 / DELAY 1 ISZ B3 JMP .-1 / DELAY 2 ISZ B3 JMP .-1 / DELAY 3 RAR JMP C B3, .-. *0040 C, ISZ C3 JMP .-1 / DELAY 1 ISZ C3 JMP .-1 / DELAY 2 ISZ C3 JMP .-1 / DELAY 3 RAR JMP D C3, .-. *0100 D, ISZ D3 JMP .-1 / DELAY 1 ISZ D3 JMP .-1 / DELAY 2 ISZ D3 JMP .-1 / DELAY 3 RAR JMP I D4 D3, .-. D4, E *0200 E, ISZ E3 JMP .-1 / DELAY 1 ISZ E3 JMP .-1 / DELAY 2 ISZ E3 JMP .-1 / DELAY 3 RAR JMP I E4 E3, .-. E4, F *0400 F, ISZ F3 JMP .-1 / DELAY 1 ISZ F3 JMP .-1 / DELAY 2 ISZ F3 JMP .-1 / DELAY 3 RAR JMP I F4 F3, .-. F4, H *1000 H, ISZ H3 JMP .-1 / DELAY 1 ISZ H3 JMP .-1 / DELAY 2 ISZ H3 JMP .-1 / DELAY 3 RAR JMP I H4 H3, .-. H4, J *2000 J, ISZ J3 JMP .-1 / DELAY 1 ISZ J3 JMP .-1 / DELAY 2 ISZ J3 JMP .-1 / DELAY 3 RAR JMP I J4 J3, .-. J4, K *4000 K, ISZ K3 JMP .-1 / DELAY 1 ISZ K3 JMP .-1 / DELAY 2 ISZ K3 JMP .-1 / DELAY 3 RAR / / The following code is the end for the 4K version JMP I K4 K3, .-. K4, A / / If you have more than 4K, uncomment the following and comment out the above / CIF 0010 / JMP I K4 /K3, .-. /K4, L / / FIELD 1 /*0000 /L, CDF 0010 / ISZ L3 / JMP .-1 / DELAY 1 / ISZ L3 / JMP .-1 / DELAY 2 / ISZ L3 / JMP .-1 / DELAY 3 / RAR / / The following code is the end for the 8K version / CIF 0000 / JMP I L4 /L3, .-. / .-. / addr 0013, auto increment, so can't use as L4 / .-. / 14 / .-. / 15 / .-. / 16 / .-. / 17 /L4, A / addr 0020, safe to use as L4 / / If you have more than 8K, uncomment the following and comment out the above / CIF 0020 / JMP I L4 /L3, .-. / .-. / addr 0013, auto increment, so can't use as L4 / .-. / 14 / .-. / 15 / .-. / 16 / .-. / 17 /L4, M / addr 0020, safe to use as L4 / / FIELD 2 /*0000 /M, CDF 0020 / ISZ M3 / JMP .-1 / DELAY 1 / ISZ M3 / JMP .-1 / DELAY 2 / ISZ M3 / JMP .-1 / DELAY 3 / RAR / / The following code is the end for the 16K version / CIF 0000 / JMP I M4 /M3, .-. / .-. / addr 0013, auto increment, so can't use as M4 / .-. / 14 / .-. / 15 / .-. / 16 / .-. / 17 /M4, A / addr 0020, safe to use as M4 / / If you have more than 16K, uncomment the following and comment out the above / CIF 0040 / JMP I M4 / / FIELD 4 /*0000 /N, CDF 0040 / ISZ N3 / JMP .-1 / DELAY 1 / ISZ N3 / JMP .-1 / DELAY 2 / ISZ N3 / JMP .-1 / DELAY 3 / RAR / CIF 0000 / JMP I N4 /N3, .-. / .-. / addr 0013, auto increment, so can't use as N4 / .-. / 14 / .-. / 15 / .-. / 16 / .-. / 17 /N4, A / addr 0020, safe to use as N4 $ xxxxxxxxxx cat > focal <<\xxxxxxxxxx #!pdp8e !!M$M$7$!%!,"!U!!!!!!!DY:0!!]#;.!!!!5(!!!!!!!"!!!!@Q!!!!!!DY!!!! !!!!!!!!!!!!!!!!!!W$1%X5!!!!!!`Q@Q,M5-7_7W!"#.!!!&!!#-#(#$$@#+#. ]#`!#O`"_!`Q"`!0#``_]`#Q^A^3^T`^`\`X!`#!A!192NP.Q!S!:A;':A;0105( &2.V%`&=&M3]6#,-(25V2N56$#3C4Q%,.0.<1>(E(!1S87!!!!!!!!!!!!!!DZ_) N_*@93Y":!97+79,+6FJ*;9)9S*;98FKFH!\%]FGK0#K;1FGFG*;9091FF)>9,FQ FRLSKZ17FM*5)V_AFW)Q9)9S)X=)FQ])FFFG)W*/_AKQFVFOJ`FA'*-3]IJ`93)3 Y"K;!!FQ)W*+_IL39?HZ)H$[)G_AFW)HFPY%9XFRFFFRLALK)MZ')MY%)X9XFFFR FWLK)M)X9XFFFRLA])FWZ!)X"%_AY1)X"']QFW_A,\Y1Y%9VP#O!`A1!1-1)*Q*C .L,DI!G1IAK&K!]!868686!!Z'Y'Y'O,FM)3FCFD!0FD!V)V`)KTFNY!)49*-*FT FWFA''FE!V-3]IKZY"99)V`AKQ-9FTKZ-99XK6FNFWFA')FE!VFE!0-,93O_'*!! 9ZYAD))Z=,YAD)O`!!),9,),ZB):_9FWP)!!029ZYAD),2Y"=,YAD)MZ!![A0=9* 4=*0D)*09Z-*=,1ZLF*0D)P=!![A0M4M9**09Z-,=*1ZLTPM8A#+#0#8)^*@86)V ')'-][FMFNFW)493FF)W*/_INBFI,_K))W!^FCFFFI,_])K4-,FH(\"XFWFM17FN KX)X_AFLFFFJ)W*/_AKE-4]IKZY"99)V`!-9FTK\-99XK@)4KL97NB)V`IKZFJKU !!FQFI0XP!)W4!+#_IL0FRP!])P!4!4!P!!!029+-+^)LAYB)W_AL502YA)+9M]) 4242\!P2!!"%YB9Z)X"%)Z_I4EPE!!)?_ALUFFPOFKFHX_=#PO)>')'-$4$'$*$% $($$$"$5$-$&$8$.$2$3#+FUG@1,GA**9;)F^)1;`I1;])PXFH,`\ZFFK9FFK6/" 1HFA-$FQ)W,>]AFW)9FCFA/+-,99E(U9!!FH,`Z`FW)9FCFA/+FH,`Z]FWFD19FA /+FD19FD!0FA')FE!0FE19FE]Y-,99E(%90+O"` .TTR[A9O97FH,Z"_1OK7FA-$)WFC+NFJ1?Y"F:-,9WK#FA/,F9K$17FFFH-$(\FJ K#_#M#\#.#^FD5&FE!E+:`)EJE(Y!S9!!*699CHO8/3!!!!!!!!!$!!)M*2 `!O>)M*1`A3>O>!!-,9N+=-,YB)M_AFWFFOH!!Q#FNOS17FF)W*/_AKX)0YA)49P *9Q><)Q9:J`FM)Q9)FV14)V`!-4FTK0-49XK6)Q 9:NB!!*<96*<94)49*)XZB-*]IKW_9KX)496-4]AKG])3C)4Y"9091OC!!D9`))' ,P)W]IL/)^9W)7*!_IFJO]D9YAK_)7_AL7*!_IY":!K^*)L&!!11LF)2"39W)W*$ _IL,)W,OP9-092YA91)2Z+Y+Y+L=`A_B!!Y!-6=Q)Q=6)R]A=)))Y"9Q)Q9:PQ+L '-S#(P(PSI!"1!!!!!!!!!`W!!Q:K.Q?"']IK.*4O-!!)XFP"3CC*#FJ)XCC,O9W FJO6!!"'9;*,9Y!P#*3D>L5!!1SLP )R=)9R),ZB)&))_1P>FW!A$`"A9%_AFP9RYA9SP>!!!!!!!!!!!!!!!!!!!!!!!! !!!!^^;!Y);"QBK6QC9//V]IK6QE9/?V+VY""(+T;VQ:KGQ?"']IKG*4;S+S+#_I LA)=_AFW+S9=Q*KKQ+9@SER"Y!+"Z%+!Q"M!!!:1:1:1!!)=^IKX;_9=+_OW!!;W Q"/U_AL"Q#)/_AL-+WQG9/L4+W?U+UY""(+T;UQ"O_<7!![A,79XQ")/_AL#+5ABC$0/(3"56-"5*0/4BBC`.;[#55A ABC:06A)"7&A46$$&44'6--:A-0"%&%AH'0$"-MRZWZHA0/A"A`.<9#:4&5A1%1^ 1%1KS?RR\%AROSW\%0AROZ\%0AS\A5ABC130$&&%OCBB\3`.($1*'AI 1%1JROZ\5ACV`.>3$;5ACA$0.165&3OCBB`.>:%04&5A9'^R`.>G%55ABC4)"--A *A3&5"*/AC`.>S%:5AC-0(MA&91MA"5/A@`.?"%?%0ARQ\*'AI3&JSOZMSOUMSOU `.?;%I%0ASOS\5AC4*/&MA$04*/&A@C\%0ARQ\*'AI3&JSOV\3`.?C%S4A9'^NR\ A3`.?I&;4A9'^Q`.?\5I"A3&\*AI3&NQ:&4JARQOVMRQOUVMRQOV`.@%5NA4&5A3 &^NR\3`.@25S*'AI3&NQ/0JRQOWMRQOY`.@I5]5ABC1-&"4&A"/48&3AH:&4HA03 AH/0HAC\(ARQOU`.!!614&5A3&^R\3`.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8B,Y:_RCQ`RKXSQ+ TGX[\!=-1PK$,SDZ,Y9!YARX[!RZ_IK7,VRB,WRB[!L)RB!0!#Y"_IL'Z"TET:`! KG,I@K,J@LL(\M,X_IKV\E,W_IL+*!@U++@TL,8RL-QGQ!Q!Q!Q!Q!Q!Q!Q!1PQB KW)P*9`)L*59595959595959QGQ"FA%2Q#,QDZ]ILE`),W*19P,M9*,N=*1PL<,Q DZ`)*%,O,P9>PH3-T,T(*L*O%"86&QG09'7R1%T37M!(!#A#ES4E9RFA-@19-9PZ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)F`)H59!"1!!!!#1!!!JT!!!!!!!!!!E('^G^W_D],Z G_,WT7$TG_,QG_,NG^<7!!PMI5!!5@/D``<%E=`\<'MM!!5@/G!!5844`^=8YK!! )F`)DT97@!!)F`)K2E('@?>W>!![A'?7>!!O=L#L3L/H/ )F]IFW`)EJE(XO7@!!)F]IN?`!KUE('@@OXO!![A9<)&9EYA0O9F9G9HY"@OE(DP W>(O7@XODL,IHO,FHO,CHO,@HO,=HO,:HO,7HO/>!!O=!!@``C``A!B!``60$(`_ B,[*`_6><"`^HG(Z`]3?D%`ZFE0>H7!!7,E-!!!!EJ[APT!!!!!!!!!!!!!!!!!! E(T3$/43!!)F`AK.)F`!N?EJYA9!#:)@O;>!":)@O;>!!!!!!!!!!!!!!!!`U5"Y.)C`ZMU N-RI`^5:LRH?!!L6%-:X!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!<=)KFP"39;);YB]I,7<>)K]IKB"3<<,>,<^)K9[A);<)<^ALN,<^![!YB )P?O!YA)<9<4=LLYA<=L,--L,[!H;*#FJ3!--D?4=LSYA<=LT!!)F9I)F`)EJPZ !!9G9E9F9H<-9I)W+U]IK1**_AK2YA9IGW)W+V_IK1C8O!!!)W+S_IO8FRO8KH)M <,CX4-_AFWGWK9)W*+`)O8)W+T`AO8)W"3KA]\]G^6^A(O!!)H9D)G9C)F9B<+D. D.DFJ)F`!,=,?FJHL9<)E^)K8]A,B`IK=E(HE!!Y")!D!!!!!!!!!!!!!!!!!!*&W4PMXPP[R[O[!!!\!)DYB9D)CYA]9Z"9C)BYA]9Z"9BPL!!)I`)EJP\ !!]IO!;M;L+P;NZ!+MY);M+L]1K1Z!+OY);L3NK)+MY);N/!YB+K;M+NZ!/M?M3M Y%+L/M?M]1O!3M7MO!KGZ#!!!!!!!!`U`J!!;!;M+Q;N])F8Z!)C)G;OY%)F)B]1 L%9F+O9G[!+MY%;M+!Y%;!3NKX+M9G+!9FORY%<>3NKX,>9F+!9G+M9HOR!!H^DW )F]I)H]I)G_ILT)FZ%`)LQF8ZA)E9ELHH_DWP>9EP>XP!!)F^)YB`)HVPWNZZ\!! E(S]!!)F`)FW)E^)Y1Y);Y]93YY!+X;Z;[;\+^]I+__IKVE(#];Y+Y!![A)E9E)E YB+Y_AKR)FYB+Z_AKR)GYB+[^!YBY"`!N?E(SY!!K89EN?9.!!!!!!!!!!!!!!^$ !!!!!!*D8L/FFFJ)W*/_AL-)/_AL3Q#N%!!9;);Y'Y'DIFPY%DI Y+Y)DIDI[!)`FJP8!!$O*,FJ);PI!(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!`7C[,'`IKO]#KI,J#W,)^)3H`IOH,J$",# rim <<\xxxxxxxxxx #!pdp8e !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!Q-Q*LPQ/Z'Y'^)L]Y'Q*LXQ/]1@_<_LP!!!! end xxxxxxxxxx cat > rim.pal <<\xxxxxxxxxx / RIM LOADERS FOR PAPER TAPE INPUT /UNCOMMENT FOLLOWING FOR TTY INPUT /KSFIOT= KSF /KRBIOT= KRB /KCCIOT= KCC /KRSIOT= KRS /HSR= 0 /UNCOMMENT FOLLOWING FOR HIGH SPEED READER INPUT KSFIOT= RSF KRBIOT= RRB RFC KCCIOT= RFC KRSIOT= RRB RFC HSR= 1 / FIXUP TO CHANGE BRANCH TARGET FROM TTYC TO HSRC HSRF= HSRC-TTYC^HSR *7756 BEG, KCCIOT / INITIALIZE READER TTYC, KSFIOT / AWAIT INPUT JMP TTYC KRBIOT / GET A CHARACTER CLL RTL RTL SPA / SKIP IF HIGH BIT OF 8 BIT CHAR RESET JMP TTYC+HSRF / ELSE LOOP (SKIPPING LEADER) RTL / 6 BIT CHAR IN AC[0-5], LINK=BIT 7 KSFIOT / AWAIT INPUT JMP .-1 KRSIOT / OR 6 BIT CHAR INTO AC[6-12] SNL / SKIP NEXT IF BIT 7 OF CHAR 1 WAS SET DCA I TEMP / STORE DATA HSRC, DCA TEMP / SET ADDRESS OF NEXT DATA WORD JMP BEG+HSR / GO GET NEXT DATA WORD TEMP, .-. / ADDRESS OF NEXT DATA WORD $ xxxxxxxxxx cat > rxboot <<\xxxxxxxxxx #!pdp8e !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Z7)QXJ["ALALZ%XNIMXM]I_) IG)QYB)R9QI5XJAL9#1IIH!!XLI rxboot.pal <<\xxxxxxxxxx / rx01 boot, from DEC RX01/02 Reference Card, 1979. / minimally disassembled and commented by Douglas Jones, 1994. / this code has been verified to work. It boots OS/8 correctly, / when started at 0033! X=0050 / device address of RX01 is 75. *0024 7126 / 24 L, CLL CML RTL 1060 / 25 TAD 60 6701+X / 26 LCD 7201 / 27 CLA IAC /AC = 1 4053 / 30 JMS P 4053 / 31 JMS P 7104 / 32 CLL RAR 6705+X / 33 S, SDN / start here, AC=0? perhaps AC needs to be 0002? 5054 / 34 JMP P+1 / strange, but does poll til done, unless xfer req. 6704+X / 35 SER / if not OK (result of reset on drive zero), skip. 7450 / 36 SNA / if no error, check AC. 7610 / 37 SKP CLA / error or AC is zero; CLA. 5046 / 40 JMP N / no error and AC nonzero. 1060 / 41 TAD 60 /here AC=0, there was error 7041 / 42 CMA IAC /complement 1061 / 43 TAD 61 /subtract 60 3060 / 44 DCA 60 /60 = 61 - 60 5024 / 45 JMP L / N, / here only if done, no error, nonzero AC, move data! 6701+X/44 46 LCD / command = AC? set AC=0 4053 /45 47 T, JMS P / call proc (AC=0) 3002 /46 50 DCA 2 / store result in M; set AC=0 2050 /47 51 ISZ .-1 / bump M 5047 /50 52 JMP T / loop 0000 / 53 P, .-. 6703+X / 54 STR / skip if transfer request 5033 / 55 JMP S / strange, but does poll till xfer req, unless done 6702+X / 56 XDR / transfer data 5453 / 57 JMP I P / return 7024 / 60 / initially, the command 6030 / 61 / the command toggler $ xxxxxxxxxx cat > rxboot1 <<\xxxxxxxxxx #!pdp8e !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!XNY!\8)RXJ\"ALAL\&XNIM)RXJIH !!!!!!!!!!!!!!AL9#1IIH!!XLI rxboot1.pal <<\xxxxxxxxxx / MINIMAL PDP-8 BOOTSTRAP PROGRAM (RX) / / Taken from a manual for an 8/e disk subsystem built by DSD; / shorter and easier to toggle in than DECs bootstrap. / The following is a minimal length boot program for both / the RX01 and RX02. This boot tries only the specified / drive with the specified density. Start at location 32 to / BOOT drive 0. Start at location 22 to boot drive 1. / This has been verified to work with an OS/8 diskette. / the contents of locations 60 and 61 can be fudged to / change what disk and what density are used. / configuration section IOTADR= 0750 / default system drive is at IOT 75 DRIVE0= 0000 DRIVE1= 0020 DRIVE= DRIVE0 / set to either DRIVE0 or DRIVE1 SINGLE= 0000 DOUBLE= 0400 DENSTY= SINGLE / set to either SINGLE or DOUBLE / RX01 and other opcode definitions LCD= 6001+IOTADR XDR= 6002+IOTADR STR= 6003+IOTADR SDN= 6005+IOTADR NL001= CLA CLL IAC NL002= CLA CLL IAC RAL NL006= CLA CLL CML IAC RTL / THIS SECTION IS NEEDED ONLY WHEN BOOTING FROM DRIVE 1. / READS IN SECTOR 1 TRACK 1 ON DRIVE O OR 1. *22 BOTDV1, SDN / START HERE TO BOOT DRIVE 1. NOP / SKIP THIS WHEN CLEARING FLAG NL006 / SET AC=6 TAD UNIT / MAKE INTO READ SECTOR COMMAND LCD / COMMAND = CONTROLLER NL001 / SET AC TO 1 FOR SECTOR, TRACK JMS LOAD / SEND SECTOR TO CONTROLLER JMS LOAD / SEND TRACK TO CONTROLLER / DOES NOT USE LOCATIONS 22-31 WHEN STARTED AT 32 / START HERE TO BOOT DRIVE 0 (ASSUME MASTER CLEAR HAS / READ DRIVE 0 TRACK 1 SECTOR 1 FOR YOU). *32 BOTDV0, NL002 / MAKE EMPTY BUFFER COMMAND CHKFLG, SDN / WAIT FOR DONE FLAG UP JMP LOAD+1 / NO - CHECK FOR READY TRANSFER TAD UNIT / YES-PUT IN READ UNIT, DENSITY LCD / SEND EMPTY BUFFER COMMAND JMP BOTLP / START TO LOAD SECTOR BUFFER *47 ///////////////// BOTLP, JMS LOAD / READ NEXT WORD FROM SILO DCA 2 / START LOADING AT LOC. 2 ISZ .-1 / BUMP LOAD ADDRESS JMP BOTLP / CONTINUE EMPTYING BUFFER / LOAD, .-. / DATA TRANSFER SUBROUTINE STR / SKIP IF CONTROLLER WILL SPEAK JMP CHKFLG / NO - CHECK IF FINISHED XDR / TRANSFER DATA IN OR OUT JMP I LOAD / RETURN TO CALLER / 7004+DRIVE / USED BY SECONDARY BOOT / TO SELECT DRIVE 0 OR DRIVE 1 UNIT, DENSTY+DRIVE / WHAT TRANSPORT, WHAT DENSITY? $ xxxxxxxxxx cat > vc8edemo <<\xxxxxxxxxx #!pdp8e M"#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+_!``!"`))```T`A"A_A$^!(`Z!-`U!# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! QI[!)19C9D9B)59A)1C,K&!!)69)-);=+=Y#!2]IO,C>+=!2]IO,C>K/!!!!9*Q: KCD;)*Z%)*Z%)*);9*)=<+-*<-\!)>Y%)B9B)?<,\AY%)B9B,-Y%<-]9D.4,KU\" Y%)A9A4+KL)@Y%)A9AO>!!!!!!!!\!)AQL\!)BQMQKL5QJQN[!P.!!Q?!4<^,^)7 ]ILZ[!,^):^!)8)9!21DLU<^-C!3,^=C1C=C9DP;Y#=CYA9DP;)19C9DP;!!$Q%) *E+5+5+A(Q!-"Q/AQA/A"Q!-`]C%C%C%C%>)!Q0Q1)A%A%A%1))1`]A%A%A%A%1) 0Q`]C%C%C%C%C%A%`]C!C!C!C!C!A!0Q1)A%A%A%1I)]`]#!#!#!#!#!`]!!!!A% `]A%!!!!!1!)A%A)`Q!!!!`]"!$!%A)11)A%`]!%!%!%!%!%!%`]1!)!%!)!1!`] `]1!-!$!!Q!)`]0Q1)A%A%A%1)0Q`]B!B!B!B!3!-!0Q1)A%A%A51)0U`]B!B!BA B13)-%91E)E%E%E%C)"QA!A!A!`]A!A!A!`Q!)!%!%!%!)`QY!(!!Y!%!Y(!Y!]! $Q!-"Q!-$Q]!Q-)1%A$!%A)1Q-Q!)!%!$]%!)!Q!A-A5AED%E%I%Q%!!!!`]A%A% !!!!A!9!'!"!!Q!-!#!!!!A%A%`]!!!!!!)!1!A!1!)!!!!"!"!"!"!"!"!"!!!! !!!!!!!!!!!!!!@-@-!!!!!!!!!!Y!!!Y!!!!!%1@]%1%1%1@]%1/)2%`_2%`_2% *Y-)313A.9#E%E)9=YC%B%AE15!)!U!!!!!!Y!!!!!!!!!!!(A99A%!!!!!!!!A% 99(A!!!!"!2%.9$A.92%"!"!"!"!0Y"!"!"!!!!!!.!/!!!!!!"!"!"!"!"!"!"! !!!!!-!-!!!!!!!#!-!Q"!'!9!A!(Q))1%1%1%))(Q!!!!)%@]!%!!!!%%)-151E 2%3%-%%)))1%1%2%3E-9@A!A!A!A@]!A!A?)3%3%3%3%2)1Q(Q+)3%3%3%")!Q1! 1%191A4!5!9!!Q.)3%3%3%.)!Q'!*!1E1E1E*)(Q!!!!'-'-!!!!!!!!!!'.'/!! !!!!!A"1"1#)#)%%%%#1#1#1#1#1#1#1%%%%#)#)"1"1!A)!1!A!BUB!3!-!5:1& A40.&5)*/(B! end xxxxxxxxxx cat > vc8edemo.pal <<\xxxxxxxxxx / VC8E Demo. It plots text on the screen, and it lets you type. / It only lets you type one line. / CR lets you replace that line with a new line. / type long lines, and the display will start to flicker. / / Author: Douglas W. Jones / Date: Aug. 12, 2025 / Copyleft: This is free software, with no use or distribution restrictions / IOT instructions for VC8E DILC= 6050 / Clear all state DICD= 6051 / Clear done flag DISD= 6052 / Skip if done DILX= 6053 / Load X DILY= 6054 / Load Y DIXY= 6055 / Display point (must wait for done first) / IOT instructions for KL8E KCF= 6030 / Clear flags KSF= 6031 / Skip if keyboard ready KRB= 6036 / Read character, clear flag and initiate next read / make it easy to start demo from location zero *0000 JMP I PMAIN PMAIN, MAIN / autoincrement locations X0= 0010 / Used to scan and display string X1= 0011 / Used to scan bitmap of each character *0020 / Constants ASTR, STRING / address of string to display C0077, 0077 / mask to clear high byte or to smash ASCII C7700, 7700 / mask to clear low byte C0177, 0177 / mask to preserve low 7 bits (make ASCII) C1010, 1010 / somewhere near the left margin C7777, 7777 / constant negative 1 CR= 015 / ASCII character values SPACE= 040 GRAVE= 140 MCR, -CR / used to compare with CR MSPACE, -SPACE / used to fold lower-case into upper CGRAVE, GRAVE MGRAVE, -GRAVE / used to compare with underscore PFONT, FONT-1 / constant pointer to font table (-1 so auto-index is *(++X)) CFNTWI, FNTWID / constant width of one character MFNTWI, -FNTWID / negate CFNTHE, FNTHEI / constant height of one character MFNTHE, -FNTHEI / negate CFNTSP, FNTSP / space between characters / variables of global interest X, .-. / X coord of point or character or string to plot Y, .-. / Y coord of point or character or string to plot STRPTR, .-. / index into string used to build string from keyboard STRBYT, .-. / 0 or -1, byte number in current word of string (0 = high) / code (it just fits in one page) *0200 MAIN, DILC / reset display CLA TAD ASTR DCA STRPTR / strptr = string -- used to build string from kbd DCA STRBYT / strbyt = 0 -- start with even (high) byte MAINLP, DCA Y / Y = 0 -- for fun, replace this with ISZ Y TAD C1010 DCA X / X = over near left edge TAD ASTR JMS PLOTST / plotst( string ) JMP MAINLP / over and over and over / plot string / on entry, AC is string pointer / X,Y gives he lower left corner of the first character / string is 2 6-bit chars per word, smashed ASCII / uses X0, autoincrement register to point to string / @ character (coded 000000) is end-of-string / returns AC=0 PLOTST, .-. TAD C7777 DCA X0 / X0 = string - 1 PLSLP, TAD I X0 / for (;;) { -- loop exits by return DCA PLS2CH / pls2ch = *(++X0) -- get 2 chars TAD PLS2CH BSW AND C0077 / AC = (pl2ch >> 6) & 0077 SNA / if (AC == 0) JMP I PLOTST / return JMS PLOTCH / plotch( AC ) -- plot upper byte TAD PLS2CH AND C0077 / AC = (pl2ch ) & 0077 SNA / if (AC == 0) JMP I PLOTST / return JMS PLOTCH / plotch( AC ) -- plot lower byte JMP PLSLP / } PLS2CH, .-. / character pair to plot / plot a character on the screen / on entry, AC is CH, character to plot, 6 bit squashed ASCII / X,Y gives the lower left corner of the character / X,Y advance to an appropriate place for the next character at end / uses FONT for bitmaps of each character / uses X1, autoincrement register to point to bitmap / returns AC=0 PLOTCH, .-. DCA X1 KSF / if (keyboard ready) JMP PLCONT JMS GETCH / process input character PLCONT, TAD X1 CLL RAL TAD X1 / -- this code multiplies by 7 (FNTWID) CLL RAL TAD X1 / -- compute ch * FNTWID TAD PFONT / -- compute (font - 1) + (FNTWID * ch) DCA X1 / X0 = &(font[ch]) - 1 -- setup for autoincrement TAD MFNTWI DCA PLCHX / for (plchx = -FNTWID; plchx != 0; plchx++) { PLCCLP, TAD I X1 / -- loop through columns left to right DCA PLCCOL / plccol = *(++X1) CLA CLL TAD CFNTHE RAL / -- SCALE FACTOR (x2) TAD Y DCA Y / Y = Y + fnthei -- go to top of column TAD MFNTHE DCA PLCHY / for (plchy = -FNTHEI; plchy != 0; plchy++) { PLCRLP, CLA CLL CMA / -- loop through rows in a column RAL / -- SCALE FACTOR (x2) TAD Y DCA Y / Y = Y - 1 -- step down column TAD PLCCOL RAL DCA PLCCOL / plccol = plccol << 1, L = high bit SZL / if (L) JMS PLOT / plot ISZ PLCHY JMP PLCRLP / } CLA CLL IAC RAL / -- SCALE FACTOR (x2) TAD X DCA X / X = X + 1 -- advance to next column ISZ PLCHX JMP PLCCLP / } TAD CFNTSP RAL / -- SCALE FACTOR (x2) TAD X DCA X / X = X + fontsp -- space between characters JMP I PLOTCH /return PLCHX, .-. / local variable, loop counter for columns within character PLCHY, .-. / local variable, loop counter for rows within character PLCCOL, .-. / one column of 12 pixels / plot the point at X,Y on the screen / returns AC=0 PLOT, .-. CLA CLL TAD X DILX CLA CLL TAD Y DILY PLOTLP, DISD / poll coordinates ready to plot JMP PLOTLP DICD / reset done (DISD doesn't) DIXY / display the point CLA JMP I PLOT / return / handle keyboard input / returns AC=0 GETCH, .-. KRB / get char from keyboard AND C0177 / make 7 bit ASCII DCA GETASC / getasc = gotten character TAD GETASC TAD MCR / if (getasc != CR) { SNA JMP GOTCR CLA / -- not cr TAD GETASC / AC = getasc TAD MGRAVE / -- * SMA TAD MSPACE / if (getasc >= '`') AC = AC - ' ' -- capitalize it! TAD CGRAVE / -- undo damage done by * line above AND C0077 / AC = AC & 0077 -- smash ascii ISZ STRBYT JMP GETEVN / if (strbyt was -1) { -- odd byte DCA GETASC / getasc = AC TAD I STRPTR AND C7700 TAD GETASC DCA I STRPTR / *strptr = (*strptr & 7700) + getasc ISZ STRPTR / strptr++ DCA I STRPTR / *strptr = NUL -- must explicitly append DCA STRBYT / strbyt = 0 -- next byte is even JMP I GETCH / return GETEVN, / } else { -- even byte BSW DCA I STRPTR / *strptr = AC << 6 -- appends NUL! CMA DCA STRBYT / strbyt = -1 -- next byte is odd JMP I GETCH / return GOTCR, / } TAD ASTR / } else { -- CR DCA STRPTR / strbyt = string -- back to start of string DCA STRBYT / strbyt = 0 -- start with even (high) byte JMP I GETCH / return / } GETASC, .-. / the gotten character / The font, one column per word, left to right, MSB is topmost pixel FNTWID= 7 / width of each character, in pixels FNTHEI= 14 / height of each character, in pixels (12 decimal) FNTSP= 2 / space between characters, in pixels FONT, / @ 0360;0410;1144;1224;1224;1240;0760 / A 0014;0160;1640;6040;1640;0160;0014 / B 7774;4204;4204;4204;4204;3510;0060 / C 1760;2010;4004;4004;4004;2010;1020 / D 7774;4004;4004;4004;4004;2010;1760 / E 7774;4204;4204;4204;4204;4204;4004 / F 7774;4200;4200;4200;4200;4200;4000 / G 1760;2010;4004;4004;4004;2050;1074 / H 7774;0200;0200;0200;0200;0200;7774 / I 0000;0000;4004;7774;4004;0000;0000 / J 0020;0010;4004;4010;7760;0000;0000 / K 7774;0100;0300;0440;1020;2010;4004 / L 7774;0004;0004;0004;0004;0004;0004 / M 7774;2000;1000;0400;1000;2000;7774 / N 7774;2000;1400;0300;0060;0010;7774 / O 1760;2010;4004;4004;4004;2010;1760 / P 7774;4100;4100;4100;4100;2200;1400 / Q 1760;2010;4004;4004;4024;2010;1764 / R 7774;4100;4100;4140;4120;2210;1404 / S 3020;4410;4404;4404;4404;4210;0160 / T 4000;4000;4000;7774;4000;4000;4000 / U 7760;0010;0004;0004;0004;0010;7760 / V 7000;0700;0070;0004;0070;0700;7000 / W 7400;0360;0014;0160;0014;0360;7400 / X 6014;1020;0440;0300;0440;1020;6014 / Y 6000;1000;0400;0374;0400;1000;6000 / Z 4014;4024;4044;4304;4404;5004;6004 / [ 0000;0000;7774;4004;4004;0000;0000 / \ 4000;3000;0600;0100;0060;0014;0002 / ] 0000;0000;4004;4004;7774;0000;0000 / ^ 0000;1000;2000;4000;2000;1000;0000 / _ 0001;0001;0001;0001;0001;0001;0001 / 0000;0000;0000;0000;0000;0000;0000 / ! 0000;0000;3714;3714;0000;0000;0000 / " 0000;0000;7000;0000;7000;0000;0000 / # 0420;3774;0420;0420;0420;3774;0420 / $ 1610;2104;7776;2104;7776;2104;1170 / % 1410;2220;2240;1530;0244;0444;1030 / & 3470;4204;4104;4044;2024;0010;0064 / ' 0000;0000;0000;7000;0000;0000;0000 / ( 0000;0000;0740;3030;4004;0000;0000 / ) 0000;0000;4004;3030;0740;0000;0000 / * 0100;2104;1530;0340;1530;2104;0100 / + 0100;0100;0100;1770;0100;0100;0100 / , 0000;0000;0015;0016;0000;0000;0000 / - 0100;0100;0100;0100;0100;0100;0100 / . 0000;0000;0014;0014;0000;0000;0000 / / 0002;0014;0060;0100;0600;3000;4000 / 0 0760;1010;2004;2004;2004;1010;0760 / 1 0000;0000;1004;3774;0004;0000;0000 / 2 0404;1014;2024;2044;2104;2204;1404 / 3 0410;1010;2004;2004;2104;2244;1430 / 4 3740;0040;0040;0040;3774;0040;0040 / 5 3610;2204;2204;2204;2204;2110;2060 / 6 0760;1210;2204;2204;2204;0110;0060 / 7 2000;2004;2030;2040;2300;2400;3000 / 8 0060;1510;2204;2204;2204;1510;0060 / 9 0600;1100;2044;2044;2044;1110;0760 / : 0000;0000;0614;0614;0000;0000;0000 / ; 0000;0000;0615;0616;0000;0000;0000 / < 0040;0120;0120;0210;0210;0404;0404 / = 0220;0220;0220;0220;0220;0220;0220 / > 0404;0404;0210;0210;0120;0120;0040 / ? 1000;2000;4000;4164;4100;2200;1400 / finally, the text to display or replace with keyboard input STRING, TEXT "TYPE SOMETHING!@" $ xxxxxxxxxx