Processor Tech Access, Vol 1, Number 1 Access_v1n1 Access V1n1
User Manual: access_v1n1
Open the PDF directly: View PDF .
Page Count: 12
Download | |
Open PDF In Browser | View PDF |
Published by Wible/Rampton Advertising, San Francisco. Volume One, Number One, February 1977 75C per issue A Letter from the Editor "The flowers, the gorgeous, mystic multi-colored flowers are not the flowers of life, but people, yes people are the true flowers of life: and it has been a most precious pleasure to have temporarily strolled in your garden." Lord Buckley No, this isn't a poetry journal or philosophical tract, but we do feel that Lord Buckley elucidates the concept behind the Processor Technology newsletter: its contents will be the kind of information that allows you to expand the creative applications of your personal computing system. ACCESS is dedicated to the creation of a personal dialog between us at PTC and you, the people using our products, because we believe that it's important for you to understand your present system well enough to use it effectively, before you become trapped in the "bigger means better" syndrome. Hence there will be no advertising of any kind in ACCESS, and no thinly disguised pitches aimed at getting you to part with your hard earned money for the unneccessary duplication of existing hardware. Each issue will contain articles, engineering/application bulletins, and software (PROGRAM) listings which we think will help you get more fun out of owning your computer. All we expect from you in return is what's known in technical and psychological circles as feedback. If you have devised a neat hardware modification or written a nifty program, send it to us and you'll get no financial remuneration. You'll just get the glory of seeing your name in print. Very spiritual, eh what? Aram Attarian II Subscription Information ACCESS will be published every six weeks. This first issue is being sent free to all of our customers. If you like what you see, we hope you'll send us $4.00 for a year's subscription so we can keep the info coming. Write to us at Processor Technology, 6200 Hollis Street, Emeryville, CA 94608. One to One Communication Open two-way communication is our goal, and it would be great to have unlimited time to rap with you over the phone. But we can't manage that logistically, so we are instituting procedures that will get your questions answered efficiently, without eliminating the personal touch. You can get through to our engineers and technical staff any time between 9:30 and noon or 1:30 and 4, Monday through Friday. The number is (415) 652-8080. They'll try to answer your technical questions and provide more detailed product information than you may glean from our literature. It helps a lot if you think out your questions before you call, maybe make a few notes. It helps, too, if you have the manual and/or equipment handy to the phone. The easier it is for you to figure out exactly what we're talking about (and vice versa), the more help we can give in one phone call and the more phone calls we can handle. We'll also be happy to answer your questions if you drop us a letter. There are two or three situations in which calling us isn't the fastest way to get help. If you have a problem with a Processor Technology product which you purchased from a local dealer, try your dealer first. They're all authorized to service the products they sell, precisely because they can give you faster and more personalized service than anybody can by mail. Our dealers all have diagnostic tapes available now, so if you need a PTC product tested it can be handled on the spot. If you need a defective part replaced, just mail it to us with a note of explanation. There's nothing we can do about it over the phone anyway, so you might as well save yourself the time. (Naturally, it helps if your explanation is as clear and concise as possible. but we can't all he Hemingways.) If you need service that isn't covered by your warranty, please enclose a check for the $20.00 minimum service charge. If the cost exceeds that (heaven forbid!) you will be notified before we proceed with the service. If you do send in one of our products for repair, please send only the defective board. For obvious reasons, we cannot be responsible for the care and feeding of your monitors, keyboards or other products from other manufacturers. MATCHMAKING-Software Division Since most important programs are written for a particular system, modifications are sometimes in order to improve compatibility with your system. We'll be passing on more good ideas as we come across them; here are two dealing with MITS BASIC and the VDM. MITS 12K Extended Disk and the VDM If you don't have a 3P+S interface, you can still use the BASIC program in your VDM manual to link MITS 12K Extended Disc to your VDM driver. Simply change these six lines in the listing of VDM-1 to BASIC link appearing on page AV-18 of your VDM manual, and then run the program as explained there. Change the statements to read as follows: 0106 FOR Y=L TO L+419 0140 POKE G,195:POKE G+1,0:POKE G+2,P:POKE G+3,0 0160 DATA195,151,1001,195,156,1001,245,229,213,197 0162 DATA205,58,1000,193,209,195,147,1001,245,58 0232 DATA0,0,6,225,241,193,201,254,26,195,142 0234 DATA13,254,127,202,142,13,195,46,1000 MITS 8K or 12K BASIC and the VDM If you have I/O ports that are assigned 20 and 21 instead of 0 and 1, you'll need to make five statement changes in the VDM-1 to BASIC link program in your VDM manual. The listing appears on pp. AV-17 to AV-19 of the manual, and should be modified as follows: 0078 IF A=219 AND 11=16 GOTO 92 0080 IF A=219 AND B=17 THEN I=K:GOTO 106 0152 DATA219,255,31,210,13,1000,219,16,230,2000 0224 DATA201,219,16,230,6000,201,58,140,1001,254 0228 DATA201,219,17,230,127,254,1,202,46,1000 MATCHMAKING-Hardware Division When you're combining equipment from different manufacturers, optimum performance often depends on specific information about the idiosyncracies of their connections. Owner's manuals can't cover every permutation and combination, so think of this feature as a running supplement that gets down to cases. 3P+S and the OP 80A We've had a lot of inquiries about using the OP-80A high speed manual punchpaper tape reader with the 3P+S, so we asked Oliver Audio Engineering for the straight scoop on interconnecting it with the 3P+S interface. Note that the OP-80A acknowledge line must be programmed for a negative true (ack) signal. We've also heard from many of our customers that the use of black tape and rolled tape (instead of fanfold) produces more accurate data transfer, using the OP-80. PT 4KRA Memory Boards and the Motorola M6800 are suggested.) Presence of a "1" on either line will cause the address decoder to switch its comparison to to the status port address. The status port will therefore respond to any address whose top six bits are set by jumpers (see your VDM-1 manual), and whose bits 8 and 9 are zero. The loworder 8 bits are not decoded during status port response. The following diagram should help you expand your M6800 system with minimum headaches. Note that the M6800 can drive 2 4KRA cards at reduced clock rates without bus drivers; however, full buffering is recommended. CONNECTING PROCESSOR TECHNOLOGY 4KRA MEMORY CARD FOR USE IN MOTOROLA M6800 SYSTEMS PWR Externally generated signal consisting of VMA • Φ2 • R/W MWRITE Inverted PWR PDBIN Externally generated signal consisting of VMA • Φ2 • R/W XRDY, PRDY Not used Note that +8V, +16V and -16V are still required to operate the board, and that 6800 systems designed for all 5-volt operation may have to be augmented. Simple unregulated supplies will perform well, but care should be taken not to exceed +10V on the +8V line to avoid excessive dissipation in the +5V regulator. 3P+S/OP-80A INTERFACE What's the Best Monitor for your Sol or VDM-1? VDM-1 and the 6800 Microprocessor Announcing the SOL USERS GROUP! The Sol Users Group was recently organized by members of the Homebrew Computer Club in Palo Alto; SUG is not affiliated in any way with Processor Tech-nology. The purposes of SUG are to exchange software and other applications, and to create standards. If plenty of interest is shown, a Sol Newsletter will be published and sent to members. If you own or have ordered a Sol, send your name, address, phone number and ideas to: Bill Burns 4190 Maybell Way Palo Alto, CA 94306 (Please don't call.) Page 2 The VDM-1 can live quite happily with your 6800 if a small amount of signal processing is performed externally. Signals which may be directly used by the 6800 system are: ADR0-ADR15 High-active address DO0-DO7, High-active data lines. They DI0-DI7 may be connected in parallel to form a bi-directional data bus if necessary. Signals which require conversion or re-interpretation: PSYNC Connect to high-active VMA (Valid Memory Address) Φ2 Connect to Φ1 clock Pin 4 of IC 18 Break connection to Pin 3 (74LS132 ) and connect to Pin 2 SINP, SOUT Connect to the highestorder address bits which are "1" when registers are addressed. (Bits 14 and 15 That's one of the questions we're asked most frequently. We always recommend a black & white monitor designed for use with closed circuit TV systems or videotape recorders. Check your local Processor Technology dealer for good sources; they're up on that sort of thing. If you want to use a regular black & white TV, try for a solid state model with an isolation transformer. In either case, remember that you don't have to spend a lot of money to get a decent picture, so let the rest of the family enjoy that big screen super color set. ACCESS. PROCESSOR TECHNOLOGY Editor: Aram Attarian II Publisher: Wible/Rampton Advertising, 727 15th Avenue, San Francisco, CA 94118 ACCESS is published approximately every six weeks. Subscription rate: $4 per year, from Processor Technology Corp., 6800 Hollis St., Emeryville, CA 94608. ACCESS Copyright © February 1977 by Processor Technology Corp. All Rights Reserved. Material in this publication may not be reproduced in any form without permission from Processor Technology Corp. Interfacing a Keyboard and VDM with ALS-8, using the 3P+S. To get your keyboard connection up and running, you'll need to connect 7 data lines, the keyboard strobe, and ground to the J2 connector of your 3P+S. Figure 1 shows the typical keyboard connections. USING A KEYBOARD AND THE VDM WITH THE ALS-8 The keyboard strobe. This circuit tells the processor when a key has been pressed. You'll need to install an additional IC (preferably in a 16 pin DIP socket) in the unused IC pad in the lower right corner of your 3P+S, and connect it to pin 7 of J2. It's used to condition the strobe. Use a 74LS109 or 74109. (Figure 2) To wire the 74109: 1) Connect pins 2 and 3 to ground. 2) Pins 16 (VCC) and 8 (GND) are already connected on board. 3) Connect pin 1 to pin 1 of IC 15 to provide a pull-up connection. 4) Connect pin 5 to pin 11 of IC 15 to reset the flip-flop when data has been accepted. 5) Connect pin 7 to a point on 3P+S leading to J2 pin 12. This point will go low when the strobe occurs. 6) Connect pin 4 to a point on 3P+S leading to J2 pin 7, the point where the strobe from the keyboard will be connected. The data lines. Either seven or eight data lines are used to transmit the ASCII code for the key being pressed to the computer. They're connected to the B port inputs of the 3P+S in the following manner: Keyboard 3P+S J2 Signal Connector Data Bit Bit 1 Z D0 Bit 2 Y D1 Bit 3 X D2 Bit 4 W D3 Bit 5 V D4 Bit 6 U D5 Bit 7 T D6 Bit 8* S D7 *Pin J2-S is left unconnected if your keyboard doesn't have an eighth bit. Ground, +5V, -12V. These provide power for the circuitry of the keyboard. Ground is simply connected to pin 12 of J2. +5V and -12V (regulated) should be provided by a separate power supply. Some KYBDS only require +5V Figure 3 shows an example of one, assembled on a small piece of perf board and attached to the keyboard or main frame. Jumper it to the keyboard connector. ASSEMBLE ON SMALL PIECE OF PERF BOARD AND ATTACH TO KYBD OR MAINFRAME AND JUMPER TO KYBD CONNECTOR 3) Type IODR/SYSIO/0 FE77, then hit the return key. Again, address light A13 should blink. 4) Now hit Space, Space, Return; wait a moment and then hit Control Z. The screen should now be blank. 5) Hit Control S. The word SPEED? should now appear in the lower left corner of the screen. If it doesn't, you may have to adjust the horizontal and vertical controls on the VDM to get this message onto the visible portion of the screen. 6) Type 1; you should get an automatic carriage return, then type DUMP 0 FFFF and hit Return. Memory will now dump on the VDM display. You can hit the Escape key to stop the dump. 7) Now you're ready to start programming with the ALS-8! Try some of the examples from the ALS-8 manual to familiarize yourself with its operation. Hoare's Law of Large Programs Inside every large program is a small program struggling to get out. Good News for our Customers in Europe: VDM-1 and the European 50 Hz Standard Jumper areas. Only two are important for the keyboard interface: Area A must be jumpered for address 0 (i.e., all to ground), and Area B must be jumpered from left to center, to set port A at 0 (status) and port B at 1 (data) to correspond to Processor Technology software. Testing the interface with ALS-8. 1) Turn on the computer and examine location E000H. When you hit Run, the address lights should look like this: A15 A14 A13 A12 All A10 A9 A8 • • o • o o o • • = Light on o = Light out 2) Be sure the keyboard is sending upper case characters. Type EXEC E024, then hit the carriage return key. Address light A13 should blink instantaneously at this point. The European television standard maintains the same horizontal rate as the U.S. (15,750 Hz), but it defines a raster of 625 lines at a field rate of 50 Hz. The effect is to increase the number of scan lines on the screen. It's quite easy to modify your VDM-1 to work on this standard. Simply disconnect pin 5 of IC 8 from pin 6, and reconnect it to ground (pin 4). This increases the modulus of the counter to 8 in the VDISP time, resulting in 4 extra character lines (52 scan lines) on the display. The total is now 312 scan lines per field, the equivalent of 624 per frame. The field rate should be close enough to 50 Hz to reduce any swim effects to less than 0.1 Hz. You may have some trouble centering the display in the frame, because the standoff time to VSYNC from the bottom of the display is still on the 60 Hz standard. If the effect is objectionable, increase Resistor R 34 in series with the VPOS control. Rule of Accuracy When working toward the solution of a problem it always helps you to know the answer. Sattinger's Law It works better if you plug it in. Page 3 Newett Awl's Choo Choo Train Or, Idle Fantasies on a VDM Screen 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001 0003 0006 0009 000B 000C 000D 000E 000F 0012 0015 0018 001A 001D 0020 0022 0025 0028 002A 002D 0030 0032 0035 0038 003A 003D 0040 0042 0045 0048 004A 004D 0050 0050 0051 0053 0054 0055 0058 0059 0059 005C 005E 0061 0063 0066 0068 006B 006E 0071 0074 0077 007A 007D 0080 0083 0086 0089 008C 008F 0092 0095 0098 009B AF D3 21 01 36 23 0B AF A8 C2 21 11 06 CD 11 06 CD 11 06 CD 11 06 CD 11 06 CD 11 06 CD 11 06 CD C3 C8 84 01 00 08 20 09 F7 00 0F 50 2B 0D 50 30 09 50 34 04 50 3B 02 50 3C 01 50 3E 01 50 59 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 19 36 6F 23 05 C2 51 00 C9 21 36 21 36 21 36 2A 22 2A 22 2A 22 2A 22 2A 22 2A 22 22 2A 22 2A 22 2A A6 16 A9 07 AB 6E 66 AE 68 B0 6A B2 6C E5 6E E7 70 E9 EB 72 ED 74 EF 76 04 04 04 01 04 01 04 01 04 01 04 01 04 01 04 04 01 04 01 04 01 0000 0010 0020 0030 0040 0050 0060 0070 0071 0072 0080 0090 0100 0110 0120 0130 0140 0150 0160 0170 0180 0190 0200 0210 0220 0230 0240 0250 0260 0270 0280 0290 0300 0310 0320 0330 0340 0350 0360 0370 0380 0390 0400 0410 0420 0430 0440 0450 0460 0470 0480 0490 0500 0510 0520 0530 0540 0550 0560 0570 0580 0590 0600 0610 0620 0630 0640 0650 0660 0670 0680 0690 0700 (continued on page 11) Page 4 Once upon a time, in a curious little place, there was a Sol system and a programmer sitting around with nothing to do. So Newett Awl decided to tell his computer a bedtime story, and VDM-1 helped him out by drawing the pictures. Try it on your system. Ol' Uncle Sol makes a great babysitter. TRAIN EMPTY . SMO1 SMO2 . ENGINE XRA OUT LXI XSI MVI INX DCX XRA XRA JNZ LXI LXI MVI CALL LXI MVI CALL LXI MVI CALL LXI MVI CALL LXI MVI CALL LXI MVI CALL LXI MVI CALL JMP DAD MVI INX DCR JNZ RET A ONCE UPON A TIME, 0C8H IN A CURIOUS LITTLE PLACE H,SHED THERE WAS B,2048 ..A TINY TRAIN M,20H ..AND IT STAYED IN A H ..TINY SHED B ..THAT WAS ALL EMPTY A B EMPTY H,CLOUD .. EXCEPT FOR A HUGE D,0 B,15 B SMO1 I D,43 L B,13 L SMO1 O D,48 W B,9 Y SMO1 D,52 C B,4 L SMO1 O D,59 U B,2 D SMO1 D,60 O B,1 F SMO1 D,62 S B,1 M SMO1 O ENGIN K E D M,SMOKE .. COUGH H B .. COUGH SMO2 . COMING OUT OF THE STACK OF LXI MVI LXI MVI LXI MVI LHLD SHLD LHLD SHLD LHLD SHLD LHLD SHLD LHLD SHLD LHLD SHLD SHLD LHLD SHLD LHLD SHLD LHLD H,SHED+322H A TINY LOCOMOTIVE M,16H WITH A LITTLE SMOKESTAK H,SHED+325H AND A LITTLE BELL M,07H H,SHED+327H ..AND A TINY DOME M,6EH CAB1 ..AND A CAB SHED+32AH WITH WINDOWS CAB2 .. SO THAT YOU COULD SHED+32CH SEE INTO WHERE THE CAB3 .. ENGINEER AND THE SHED+32EH FIREMAN SAT. BOI1 .. IT HAD A BEAUTIFUL SHED+361H POLISHED BOI2 .. BRASS SHED+363H BOILER BOI3 .. WITH SHED+365H THE NUMBER SHED+367H "99" ON THE BOI4 .. SIDE OF SHED+369H THE CAB BOI5 .. BUT YOU COULDN'T SHED+36BH SEE EITHER THE BOI6 .. ENGINEER OR THE Ups and Downs or How to Type in Upper Case Only without Shifting If you have a keyboard with both upper and lower case operation, the frequent shifts are a pain when you're entering alphanumeric data. Here's a simple cure that sets data bit D5 low when a lower case alphabetic character is output from the keyboard, thus presenting it to the computer as upper case. You'll need two chips, either a 7404 and a 7408 or a 74LS04 and a 74LS08. (Either pair works fine.) Install them on a small piece of perf board as shown in the diagram, and tie all unused inputs to +5V. The pins you'll be using on the 04 chip are 3, 5, 9, 11, and 13; on the 08 chip use 4, 5, 9, 10, 12, and 13. Application News Ham Computer Based on Sol Terminal System FLASH ~~ VDM Access Flicker Eliminated That blasted flicker you get whenever the VDM memory is being frequently accessed occurs because the screen is blanked for a very short time whenever the processor reads or writes to memory. You can eliminate it by modifying the timing system so than VDM memory is accessed only when the beam of the picture tube is off the visible portion of the screen. The VDM has a timing signal that indicates this condition, and you can use it to synchronize access to display memory. Connect a jumper wire from pin 13 of IC 39 to pin 5 of IC 39. This hooks up an unused section of IC 39 to DI bit 1. Connect a wire from IC 39 pin 14 to IC 15 pin 9. (This allows programs which access the VDM memory to use the timing signal.) Now when C8 is input, bit 1 will be low whenever the display memory can be accessed. We'll explore the implications further in the next issue, and provide an example program or two. Murphy's Law of Thermodynamic Things get worse under pressure. Lowery's Law If it jams—force it. If it breaks, it needed replacing anyway. SYSTEM 4000 ham computer was developed by Curtis Electro Devices, Inc., Box 4090, Mountain View, Ca. 94040. The company makes ham keyers and an industrial line of PROM programmers. We asked the president, John G. Curtis, to comment on working with the Sol system; he did all of the hardware and software work himself, developing programs for the Sol Terminal on ALTAIR with ALS-8, VDM 1, 40K of RAM, 3P+ 1, Tarbell cassette system, Bytesaver, ASR-33 TTY, and Motorola video monitor. Jack's report was glowing: "I had no previous experience or trainin software development. It was all learned on the fly from books and practical experience. (Try, try and try again!!!) . . . Not too much assistance was required. The ALS-8 is easy to use and the Simulator program is absolutely essential. The Editor is also absolutely necessary. (Everything is necessary!!)... "The Sol went together with a minimum of effort and trouble even though it was one of the first units actually put on the line. There were things which didn't work but with the help of PTC (especially Bob Marsh and Aram) things were put in order in a hurry. "In my opinion, the Sol terminal is the most ideal small computer system available today (certainly at that price) and every needed feature is there. For our purposes it was absolutely ideal from every standpoint. We are now able to get the computer into the hamshack on a commercial basis. This has been predicted for sometime, now it has happened." System 4000 Ham Computer The SYSTEM 4000 is a full scale standard desk top minicomputer specially equipped with firmware programs and interfaces for the amateur radio operator. Being a stand-alone computer, it can also run business, educational, scientific or games programs. The SYSTEM 40000 is derived from the Sol terminal Computer and can take advantage of Processor Technology's programs and accessories. System 4000 uses the standard S-100 bus for plug-in accessory boards, and the owner can add or exchange PROM integrated circuits to update the system. Features: Morse reader, capable of receiving code at speeds of 6-250 WPM (or higher). CRT or TTY output, selectable for upper and lower case. Paddle keyer, with dot= and dash memory, iambic and full self completion. CRT or TTY printout. Keyboard keyer, sends Morse from keyboard. CRT or TTY output. ASCII terminal, half or full duplex. Complete details can be obtained by writing to: Curtis Electro Devices, Inc., P O. Box 4090, Mountain View, Ca. 94040. Murphy's Third Law In any field of scientific endeavor, anything that can go wrong will go wrong. Sevarenid's Law The chief cause of problems is solutions. Brooks's Law Adding manpower to a late software project makes it later. O'Tooles's Commentary on Murphy's Laws Murphy was an optimist. Page 5 Where the %× ×&*# is Emeryville? A major purpose of this newsletter is helping you stomp out the bugs that inev-itably occur even in the best of systems. Bug Squad will be a regular feature. We'll tackle the problems we've encountered most frequently, and you're also invited to send in any problems that have been bugging you. Send solutions, too, if you've found them. Share the wealth. For starters, here's how to fix a few of the bugs that crept into early Sol systems: Emeryville, Ca., is located at the foot of the Oakland Bay Bridge, squeezed between Oakland and Berkeley. Neither wishes to claim it. Emeryville consists largely of mudflats and factories, the principle landmarks being a highrise apartment complex called Watergate (no relation), a shoreline assemblage of driftwood sculptures, and Processor Technology. Before the rise of Processor Technology, the main industry was legal gambling clubs. We, however, plan to put Emeryville on the map. overvoltage protection of the crowbar circuit. The squasher: Make the modification here by adding the components shown and cutting appropriate traces (as shown). Memory Protect/Unprotect Lines The bug: Erratic behavior when early Sol-PC, Sol-10, and Sol-20 units are used with S-100 bus compatible memory modules. The squasher: On early Sol circuit boards, the protect (pin 70) and unprotect (pin 20) lines are floating. Simply ground bus line 70 on the Sol PCB itself to disable the memory protect signal. Current Loop Source The bug: R23, a 470 ohm 1/2w resistor, is incorrectly tied to +5 on early Sol PC boards, producing less than a full 20mA current to teletype connections. The squasher: Reconnect R23 to + 12V which is only 1/4" away. Check to make sure that R29 remains connected to +5V. We suggest that the 20mA current loop connections (such as for ASR33) be made as follows: Consol Source Listing For those of you who haven't seen it yet, here's the source list for the minimum Sol operating System, CONSOL. It provides all necessary display routines, along with standardized calling points for input/output operations. -== CONSOL ==COPYRIGHT 1976 Accidental Avalanche The bug: On some Sol Power Supply REG Boards, the SCR1 (MCR 106-2 ) in the +5 volt regulated supply will intermittently go into the avalanche mode. This draws sufficient current to drop the +5 volt to about +1V This modification will prevent the accidental triggering, but will retain the Page 6 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 C000 00 C001 C3 65 C2 C004 C004 C004 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010 0011 0012 0013 0014 0015 0016 0017 0018 0019 0020 0021 0022 0023 0024 0025 0026 0027 0028 0029 0030 0031 0032 0033 0034 0035 0036 0037 0038 0039 0040 0041 0042 0043 0044 0045 0046 0047 0048 0049 0050 0051 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ***** * * * * * ***** ** * * ** * * * * ****** SYSTEM SOLFTWARE <<>> CONSOL <<>> VERSION: 1.0:5 RELEASE: 10.11.76 COMMANDS ARE ALSO AVAILABLE TO ENTER DATA TO MEMORY AND TO DISPLAY MEMORY DATA ON THE SCREEN. AN EXECUTE COMMAND IS PROVIDED TO ALLOW PROGRAM EXCUTION OUTSIDE OF THE CONSOL PROM AND PROVISION IS MADE FOR CASSETTE TAPE LOAD OF PROGRAMS OR DATA. NOTE: CONSOL,SOLOS AND SOLED ARE REGISTERED TRADEMARKS OF: PROCESSOR TECHNOLOGY CORP. EMERYVILLE,CALIF THE FOLLOWING CODE IS THE PROPERTY OF PROCESSOR TECHNOLOGY CORP. IT IS DISTRIBUTED ON A 'PERSONAL USE BASIS FOR THE BENIFIT OF SoL SYSTEM OWNERS. ALL FORMS OF THE CODE ARE COPYRIGHT 1976 BY PROCESSOR TECHNOLOGY AND ALL RIGHTS THERIN ARE RESERVED. BGIN * * * AUTO-STARTUP CODE DB JMP 0 STRTA FOUR PHASE WONDER C004 C004 C004 C004 C004 C004 C004 C004 C004 C004 C004 C004 C004 C004 C004 C004 C004 C004 C004 C004 C004 C004 C004 C004 C004 3A C007 E6 C009 E5 C00A 21 C00D 07 C00E 85 C00F 6F C010 C3 C013 C013 C013 C013 C013 C013 C013 C013 C013 C013 C013 C013 C013 C013 C013 3A C016 E6 C018 E5 C019 21 C01C 07 C01D 85 C01E 6F C01F C3 C022 C022 C022 C022 C022 C022 C022 C022 DB C024 E6 C026 C9 C027 C027 C027 C027 C027 C027 C027 C027 E1 C028 CD C02B C2 C02E DB C030 C9 C031 C031 C031 C031 C031 DB C033 E6 C035 C9 C036 C036 C036 C036 C036 E1 C037 CD C03A CA C03D DB C03F C9 C040 C040 C040 C040 C040 E1 C041 DB C043 17 C044 D2 EMPTY C047 78 C048 D3 C04A C9 C048 C04B C048 C048 C04B C04B C04B C048 C04B C04B C04B C04B C04B C04B C04B C04B C04B C04B C04B C04B C04B C04B C04B E5 C04C D5 C04D C5 C04E F5 C04F 78 SCREEN! C050 21 C053 CD C056 C056 CD C059 7E C05A F6 C05C 77 C05D F1 C05E C1 C05F D1 C060 E1 03 C8 03 84 C1 71 C0 04 C8 03 8C C1 71 C0 FA 01 22 C0 28 C0 FC F8 40 31 C0 37 C0 F9 F8 41 C0 F9 65 C1 62 C0 21 C1 80 0052 0053 0054 0055 0056 0057 0058 0059 0060 0061 0062 0063 0064 0065 0066 0067 0068 0069 0070 0071 0072 0073 0074 0075 0076 0077 0078 0079 0080 0081 0082 0083 0084 0085 0086 0087 0088 0089 0090 0091 0092 0093 0094 0095 0096 0097 0098 0099 0100 0101 0102 0103 0104 0105 0106 0107 0108 0109 0110 0111 0112 0113 0114 0115 0116 0117 0118 0119 0120 0121 0122 0123 0124 0125 0126 0127 0128 0129 0130 0131 0132 0133 0134 0135 0136 0137 0138 0139 0140 0141 0142 0143 0144 0145 0146 0147 0148 0149 0150 0151 0152 0153 0154 0155 0156 0157 0158 0159 0160 0161 0162 0163 0164 0165 0166 0167 0168 0169 0170 0171 0172 0173 0174 0175 0176 0177 0178 0179 0180 0181 * ----= SoL SYSTEM I/O ROUTINES =----* * THE FOLLOWING CODE IS STANDARDIZED FOR ALL SoL SYSTEM * SOLFTWARE IT PROVIDES COMMON ENTRY POINTS FOR INPUT AND * OUTPUT OPERATIONS. CONSOL DOES NOT HAVE PROVISION FOR * PARALLEL I/O OPERATIONS BECAUSE OF SPACE LIMITATIONS. * * * * * JUMP TABLE INPUT/OUTPUT ROUTINES * * THIS ROUTINE OUTPUTS THE CHARACTER IN REGISTER 'B' TO * THE OUTPUT DEVICE POINTED TO BY THE CURRENT OUTPUT SELECT * REGISTER. THE DEVICES ARE DEFINED AS FOLLOWS: * * 0 - VDM SCREEN * 1 - SERIAL OUTPUT PORT * 2 - PARALLEL OUTPUT PORT (NOT AVAILABLE ON CONSOL) * 3 - ERROR HANDLER * * ENTRY AT: SOUT SELECTS CURRENT OUTPUT DEVICE * AOUT SELECTS DEVICE IN REGISTER 'A' * SOUT LDA OPORT GET PORT NUMBER FROM MEMORY LOCATION AOUT ANI 3 KEEP IT IN CONTROL PUSH H WE'LL RESTORE IT LATER LXI H,OTAB POINT TO TABLE RLC . COMPUTE ADDRESS ADD L MOV L,A WE HAVE IT JMP DISPT GO TO HL.... * * * * THIS ROUTINE INPUTS A CHARACTER TO REGISTER 'A' FROM * THE CURRENT INPUT DEVICE POINTED TO BY THE CURRENT INPUT * SELECT REGISTER. * * ENTRY POINTS ARE DEFINED: * * 0 - KEYBOARD INPUT * 1 - SERIAL INPUT * 2 - PARALLEL INPUT (NOT AVAILABLE ON CONSOL) * 3 - ERROR HANDLER * SINP LDA IPORT GET PORT NUMBER FROM MEMORY LOCATION AINP ANI 3 WE MUST BE REASONABLE PUSH H SAVE H&L LXI H,ITAB POINT TO TABLE RLC . THE MATH ADD L MOV L,A DONE JMP DISPT WE HAVE THE ADDRESS ... GO TO HEAVEN * * * KEYBOARD INPUT STATUS CHECK * * THIS ROUTINE TESTS THE KEYBOARD STATUS AND RETURNS * WITH THE TEST BITS SET. * KSTAT IN STAPT GET STATUS WORD ANI KDR TEST KEYBOARD BIT RET . FLAGS ARE SET * * * KEYBOARD DATA INPUT * * THIS ROUTINE, ENTRY AT KREAD, GETS THE DATA FROM THE * KEYBOARD. ON RETURN THE CHARACTER IS IN REGISTER 'A'. * KREA1 POP H JUMP TABLE ENTRY POINT KREAD CALL KSTAT CHECK STATUS JNZ KREAD WAIT FOR INPUT IN KDATA GET DATA RET . GO BACK WITH IT * * * SERIAL INPUT STATUS CHECK * SSTAT IN SERST GET SERIAL STATUS WORD ANI SDR TEST FOR SERIAL DATA READY RET . FLAGS ARE SET * * * SERIAL DATA INPUT * SREA1 POP H RESTORE HL FROM JUMP TABLE ENTRY SREAD CALL SSTAT NORMAL ENTRY POINT JZ SREAD WAIT FOR INPUT IN SDATA GET DATA BYTE RET . WE HAVE IT * * * SERIAL DATA OUTPUT * SEROT POP H JUMP TABLE ENTRY POINT SDROT IN SERST GET PORT STATUS RAL . PUT HIGH BIT IN CARRY JNC SDROT LOOP UNTIL TRANSMITTER BUFFER IS MOV OUT RET A,B SDATA . GET THE CHARACTER BACK SEND IT OUT AND WE'RE DONE * * * * * * VIDEO DISPLAY DRIVER ROUTINES * * * THESE ROUTINES ALLOW FOR STANDARD VIDEO TERMINAL * OPERATIONS. ON ENTRY, THE CHARACTER FOR OUTPUT IS IN * REGISTER B AND ALL REGISTERS ARE UNALTERED ON RETURN. * * THE 'CONSOL' VERSION OF THIS ROUTINE IS A MINIMUM * IMPLEMENTATION OF ROUTINES ORIGINATED BY: * * IAN KETTLEBOROUGH * OF * COLLEGE STATION, TEXAS * * SOLOS AND SOLED CONTAIN THE ESC SEQUENCES AND OTHER * FULL IMPLEMENTATION FEATURES. * VDMOT PUSH H SAVE EVERYBODY VDMO1 PUSH D ENTRY FROM DEVICE SELECT PUSH B PUSH PSW MOV A,B SAVE IN B...STRIP PARITY BEFORE 0182 0183 0184 * 0185 GOBACK 0186 0187 0188 0189 GOBK 0190 0191 0192 LXI CALL H,TBL TSRCH CALL MOV ORI MOV POP POP POP POP VDADD A,M 80H M,A PSW B D H GO PROCESS GET SCREEN ADDRESS CURSOR IS BACK ON RESTORE ALL REGISTERS C061 C062 C062 C062 C063 C064 C067 C068 C069 C06C C06D C070 C071 C071 C071 C071 C071 C071 C071 C072 C073 C074 C075 C076 C076 C076 C077 C078 C07B C07B C07B C07C C07D C07E C080 C081 C081 C081 C081 C084 C085 C087 C088 C08B C08D C090 C093 C095 C098 C098 C098 C098 C099 C09C C09D C0A0 C0A1 C0A4 C0A7 C0A8 C0AA C0AD C0AD C0AD C0AD C0B0 C0B1 C0B4 C0B6 C0B7 C0B8 C0BB C0BE C0BF C0C1 C0C4 C0C5 C0C5 C0C5 C0C5 C0C8 C0CA C0CA C0CB C0CC C0CE C0D1 C0D3 C0D6 C0D6 C0D7 C0DA C0DD C0DD C0DF C0E2 C0E3 C0E3 C0E3 C0E6 C0E9 C0EB C0EC C0EE C0EF C0F0 C0F3 C0F3 C0F3 C0F3 C0F4 C0F7 C0FA C0FA C0FA C0FA C0FD C0FF C100 C101 C104 C104 C104 C104 C107 C108 C109 C10A C10D C10D C10D C10D C110 C111 C112 C113 C116 C117 C117 C117 C117 C11A C11C C11D C9 7E B7 CA 7B C0 B8 23 C2 76 C0 E5 CD 3D C1 E1 7E 23 66 6F E9 23 23 C3 62 C0 78 B7 C8 FE 7F C8 CD 78 E6 77 3A FE DA 3A FE C2 AF 32 4F CD AF CD 3A 3C E6 C3 3A 3C 32 FE D8 AF 32 3A 3C E6 32 C9 21 C1 7F 00 3F AD 01 0F AD C8 C0 C8 C0 00 C8 28 C1 E9 C0 02 C8 0F DD C0 00 C8 00 C8 40 00 C8 01 C8 0F 01 C8 21 00 CC 36 A0 23 7C FE D2 36 C3 D0 D6 C0 20 CA C0 AF 32 01 C8 32 00 C8 D3 FE 32 02 C8 C9 CD 3A FE D0 36 23 3C C3 21 C1 00 C8 40 20 E9 C0 AF 32 00 C8 C3 C1 C0 3A 01 C8 FE 0F C8 3C C3 C1 C0 3A 01 C8 B7 C8 3D C3 C1 C0 3A 00 C8 B7 C8 3D 32 00 C8 C9 3A 00 C8 FE 3F C8 3C 0193 0194 0195 0196 0197 0198 0199 0200 0201 0202 0203 0204 0205 0206 0207 0208 0209 0210 0211 0212 0213 0214 0215 0216 0217 0218 0219 0220 0221 0222 0223 0224 0225 0226 0227 0228 0229 0230 0231 0232 0233 0234 0235 0236 0237 0238 0239 0240 0241 0242 0243 0244 0245 0246 0247 0248 0249 0250 0251 0252 0253 0254 0255 0256 0257 0258 0259 0260 0261 0262 0263 0264 0265 0266 0267 0268 0269 0270 0271 0272 0273 0274 0275 0276 0277 0278 0279 0280 0281 0282 0283 0284 0285 0286 0287 0288 0289 0290 0291 0292 0293 0294 0295 0296 0297 0298 0299 0300 0301 0302 0303 0304 0305 0306 0307 0308 0309 0310 0311 0312 0313 0314 0315 0316 0317 0318 0319 0320 0321 0322 0323 0324 0325 0326 0327 0328 0329 0330 0331 0332 0333 0334 0335 0336 * * TSRCH RET . MOV ORA JZ CMP INX JNZ PUSH CALL POP A,M A CHAR B H NEXT H CREM H EXIT FROM VDMOT GET CHR FROM TABLE ZERO IS THE LAST TEST THE CHR POINT FORWARD FOUND ONE ... SAVE ADDRESS REMOVE CURSOR * * * THIS ROUTINE DISPATCHES TO THE ADDRESS POINTED TO * BY THE HL REGISTER PAIR. THE RETURN ADDRESS IS THE * LAST ENTRY ON THE STACK. * DISPT MOV A,M GET LOW BYTE INX H MOV H,M AND THE HIGH MOV L,A WE HAVE PLACED THEM BOTH PCHL . GO TO IT * * NEXT INX H GO TO NEXT INX H JMP TSRCH * * CHAR MOV A,B GET CHARACTER ORA A RZ . RETURN IF A NULL CPI 7FH IS IT A DEL? RZ . GO BACK IF SO * * * OCHAR CALL VDADD GET SCREEN ADDRESS MOV A,B GET CHARACTER FOR OUTPUT ANI 7FH NO HIGH BITS GO PAST HERE MOV M,A PUT CHR ON SCREEN LDA NCHAR GET CHARACTER POSITION CPI 63 END OF LINE? JC OK LDA LINE CPI 15 END OF SCREEN? JNZ OK * * END OF SCREEN...ROLL UP ONE LINE * SCROLL XRA A STA NCHAR BACK TO FIRST CHAR POSITION SROL MOV C,A CALL VDAD CALCULATE LINE TO BE BLANKED XRA A CALL CLIN1 CLEAR IT LDA BOT INR A ANI 0FH JMP ERAS3 * * INCREMENT LINE COUNTER IF NECESSARY * OK LDA NCHAR GET CHR POSITION INR A STA NCHAR STORE THE NEW CPI 64 RC XRA A WE'RE PAST THE END... REWIND THE COUNT STA NCHAR LDA LINE GET THE LINE COUNT INR A ANI 0FH MOD 15 INCREMENT CUR STA LINE STORE THE NEW RET * * ERASE SCREEN * PERSE LXI H,VDMEM POINT TO SCREEN MVI M,80H+' ' THIS IS THE CURSOR * ERAS1 INX H BUMP THE COUNT MOV A,H GET HIGH ORDER CPI 0D0H THE TOP JNC ERAS2 MVI M,' ' PUT IN A BLANK JMP ERAS1 * ERAS2 XRA A STA LINE ZERO LINE STA NCHAR LEFT SIDE OF SCREEN * ERAS3 OUT DSTAT RESET SCROLL PARAMETERS STA BOT BEGINNING OF TEXT OFFSET RET * * CLINE CALL VDADD GET CURRENT SCREEN ADDRESS LDA NCHAR CURRENT CURSOR POSITION CLIN1 CPI 64 NO MORE THAN 63 RNC . ALL DONE MVI M,' ' ALL SPACED OUT INX H INR A JMP CLIN1 LOOP TO END OF LINE * * HOME CURSOR * PHOME XRA A STA NCHAR JMP CUR * * MOVE CURSOR DOWN ONE LINE * PDOWN LDA LINE CPI 15 RZ . HOW FAR IS DOWN? INR A JMP CUR * * ROUTINE TO MOVE THE CURSOR UP ONE LINE * PUP LDA LINE GET LINE COUNT ORA A RZ . DON'T GO MORE UP THAN UP DCR A JMP CUR * * MOVE CURSOR LEFT ONE POSITION * PLEFT LDA NCHAR ORA A RZ . DON'T GO MORE BACK THAN BACK DCR A PCUR STA NCHAR RET * * CURSOR RIGHT ONE POSITION * PRIT LDA NCHAR CPI 63 RZ . HOW RIGHT CAN WE BE? INR A Page 7 C11E C121 C121 C121 C121 C121 C121 C121 C121 C121 C121 C124 C125 C128 C129 C12C C12D C12E C12F C130 C132 C133 C135 C136 C137 C138 C13A C13B C13C C13D C13D C13D C13D C140 C141 C143 C144 C145 C145 C145 C145 C148 C14B C14D C14E C14E C14E C14E LINE C151 C152 C155 C155 C155 C155 C158 C15A C15D C15E C161 C161 C162 C165 C165 C165 C165 C165 C165 C165 C165 C166 C168 C169 C16B C16C C16E C16F C171 C172 C174 C175 C177 C178 C17A C17B C17D C17E C180 C181 C183 C184 C184 C184 C184 C186 C188 C18A C18C C18C C18C C18C C18E C190 C192 C194 C194 C194 C194 C194 C194 C194 C196 C198 C19A C19C C19E C1A0 C1A2 C1A4 C1A6 C1A8 C1AA C1AC C1AD C1AD C1AD C1AD C1AD C1AE C1B1 C1B4 C1B4 C1B4 C1B4 C1B4 C1B4 C1B4 C1B4 C1B4 C1B4 C1B7 C1BA C1BD C1C0 C3 13 C1 3A 4F 3A 6F 3A 85 0F 0F 6F E6 57 3E 82 67 7D E6 81 6F C9 00 C8 01 C8 02 C8 03 CC C0 CD 21 C1 7E E6 7F 77 C9 CD 0D C1 CD 21 C1 36 20 C9 CD E3 C0 AF C3 13 C1 3A FE D2 3C C3 01 C8 0F 61 C1 C1 C0 AF C3 9C C0 8B C5 97 04 9A FA 81 0D 93 17 8E F3 0D 4E 0A 55 5F 45 80 B4 00 C0 C1 C0 C1 C1 C0 C1 C1 C1 C1 4C 40 AD AD C0 C0 C1 C1 27 36 AD AD C0 C0 C1 C1 54 70 44 A1 45 07 45 35 54 39 42 00 00 45 C2 55 C2 4E C3 58 C3 4C C3 41 00 AF 32 04 C8 32 03 C8 31 CD CD CD C3 00 12 C3 E1 B4 CC C2 C1 C1 C1 Page 8 0337 0338 0339 0340 0341 0342 0343 0344 0345 0346 0347 0348 0349 0350 0351 0352 0353 0354 0355 0356 0357 0358 0359 0360 0361 0362 0363 0364 0365 0366 0367 0368 0369 0370 0371 0372 0373 0374 0375 0376 0377 0378 0379 0380 0381 0382 0383 0384 0385 0386 0387 0388 0389 0390 0391 0392 0393 0394 0395 0396 0397 0398 0399 0400 0401 0402 0403 0404 0405 0406 0407 0408 0409 0410 0411 0412 0413 0414 0415 0416 0417 0418 0419 0420 0421 0422 0423 0424 0425 0426 0427 0428 0429 0430 0431 0432 0433 0434 0435 0436 0437 0438 0439 0440 0441 0442 0443 0444 0445 0446 0447 0448 0449 0450 0451 0452 0453 0454 0455 0456 0457 0458 0459 0460 0461 0462 0463 0464 0465 0466 0467 0468 0469 0470 0471 0472 0473 0474 0475 0476 0477 0478 0479 JMP PCUR * * ROUTINE TO CALCULATE SCREEN ADDRESS * * ENTRY AT: RETURNS: * * VDADD CURRENT SCREEN ADDRESS * VDAD2 ADDRESS OF CURRENT LINE, CHAR 'C' * VDAD LINE 'A', CHARACTER POSITION 'C' * VDADD LDA NCHAR GET CHARACTER POSITION MOV C,A IC' KEEPS IT VDAD2 LDA LINE LINE POSITION VDAD MOV L,A INTO 'L' LDA BOT GET TEXT OFFSET ADD L ADD IT TO THE LINE POSITION RRC . TIMES TWO RRC . MAKES FOUR MOV L,A L HAS IT ANI 3 MOD THREE FOR LATER MOV D,A MVI A,' THE PROMPT JMP VDMOT PUT IT ON THE SCREEN * CRLF MVI B,LF LINE FEED CALL VDMOT MVI B,CR CARRIAGE RETURN JMP VDMOT PUT IT OUT AND RETURN * * * SCAN OVER UP TO 12 CHARACTERS LOOKING FOR A BLANK * SBLK MVI C,12 MAXIMUM COMMAND STRING SBLK1 LDAX D CPI BLANK JZ SCHR GOT A BLANK NOW SCAN PAST IT INX D DCR C NO MORE THAN TWELVE JNZ SBLK1 RET . GO BACK WITH ZERO FLAG SET * * * SCAN PAST UP TO 10 BLANK POSITIONS LOOKING FOR * A NON BLANK CHARACTER. * SCHR MVI C,10 SCAN TO FIRST NON BLANK CHR WITHIN 10 SCHR1 LDAX D GET NEXT CHARACTER CPI SPACE RNZ . WE'RE PAST THEM INX D NEXT SCAN ADDRESS DCR C RZ . COMMAND ERROR JMP SCHR1 KEEP LOOPING * * THIS ROUTINE SCANS OVER CHARACTERS, PAST BLANKS AND * CONVERTS THE FOLLOWING ADDRESS TO HEX. ERRORS RETURN TO * THE ERROR HANDLER. * SCONV CALL SBLK JZ ERR1 * * THIS ROUTINE CONVERTS ASCII DIGITS INTO BINARY FOLLOWING * A STANDARD HEX CONVERSION. THE SCAN STOPS WHEN AN ASCII * SPACE IS ENCOUNTERED. PARAMETER ERRORS REPLACE THE ERROR * CHARACTER ON THE SCREEN WITH A QUESTION MARK. * SHEX LXI H,0 CLEAR H & L SHE1 LDAX D GET CHARACTER CPI 20H IS IT A SPACE? RZ . IF SO * HCONV DAD H MAKE ROOM FOR THE NEW ONE DAD H DAD H DAD H CALL HCOV1 DO THE CONVERSION JNC ERR1 NOT VALID HEXIDECIMAL VALUE ADD L MOV L,A MOVE IT IN INX D BUMP THE POINTER JMP SHE1 * HCOV1 SUI 48 REMOVE ASCII BIAS CPI 10 RC . IF LESS THAN 9 SUI 7 IT'S A LETTER?? CPI 10H C264 C265 C265 C265 C265 C265 C265 C266 C267 C26A C26A C26B C26C C26D C270 C270 C270 C270 C270 C270 C270 C270 C270 C270 C270 C270 C270 C270 C270 C273 C276 C279 C279 C27C C27F C281 C282 C284 C287 C28A C28D C28D C290 C293 C296 C298 C29A C29B C29E C2A1 C2A1 C2A1 C2A1 C2A1 C2A1 C2A1 C2A1 C2A1 C2A1 C2A1 C2A1 C2A1 C2A1 C2A1 C2A1 C2A1 C2A1 C2A4 C2A5 C2A8 C2A9 C2AC C2AD C2B0 C2B1 C2B4 C2B4 C2B5 C2B6 C2B7 C2B7 C2BA C2BC C2BE C2C1 C2C4 C2C7 C2C9 C2C9 C2CA C2CB C2CE C2D1 C2D4 C2D5 C2D6 C2D7 C2DA C2DD C2DD C2DD C2DD C2DE C2E1 C2E2 C2E2 C2E5 C2E7 C2EA C2EA C2EB C2EC C2ED C2EE C2EF C2F2 C2F3 C2F3 C2F5 C2F7 C2F9 C2FC C2FE C2FF C302 C302 C302 C302 C303 C304 C305 C306 C307 C307 C307 C307 C307 C307 C307 C307 C307 C307 C307 C9 AF 4F 21 00 C8 77 23 0C C2 6A C2 31 00 CC CD ED C3 CD C5 C0 CD C2 DB 47 E6 CA CD C3 22 C0 90 C2 FC CD CD CA DB E6 47 CD C3 41 C0 31 C0 79 C2 F9 7F CD E5 CD E1 CA E5 CD D1 C3 80 8D C2 4B C0 90 C2 4B C0 79 C2 3E C2 32 C2 B4 C2 44 C2 B6 C2 54 5D EB CD DB FE CA CD CD 0E 7E C5 CD CD D2 C1 23 0D C2 C3 1A FC 80 B4 DD E5 10 C2 C1 C2 C2 E2 C2 02 C3 B4 C1 C9 C2 B7 C2 7C CD EA C2 7D CD EA C2 06 20 C3 4B C0 4F 0F 0F 0F 0F CD F3 C2 79 E6 C6 FE DA C6 47 C3 0F 30 3A FE C2 07 4B C0 7D 93 7C 9A C9 CD 3E C2 0623 0624 0625 0626 0627 0628 0629 0630 0631 0632 0633 0634 0635 0636 0637 0638 0639 0640 0641 0642 0643 0644 0645 0646 0647 0648 0649 0650 0651 0652 0653 0654 0655 0656 0657 0658 0659 0660 0661 0662 0663 0664 0665 0666 0667 0668 0669 0670 0671 0672 0673 0674 0675 0676 0677 0678 0679 0680 0681 0682 0683 0684 0685 0686 0687 0688 0689 0690 0691 0692 0693 0694 0695 0696 0697 0698 0699 0700 0701 0702 0703 0704 0705 0706 0707 0708 0709 0710 0711 0712 0713 0714 0715 0716 0717 0718 0719 0720 0721 0722 0723 0724 0725 0726 0727 0728 0729 0730 0731 0732 0733 0734 0735 0736 0737 0738 0739 0740 0741 0742 0743 0744 0745 0746 0747 0748 0749 0750 0751 0752 0753 0754 0755 0756 0757 0758 0759 0760 0761 0762 0763 0764 0765 RET . WITH TEST IN HAND * * * SYSTEM START UP, CLEAR PART OF RAM AND SET STACK * POINTER, FALLING THROUGH TO TERMINAL MODE. * STRTA XRA A MOV C,A WE CLEAR THE FIRST 256 BYTES LXI H,SYSRAM POINT TO SYSTEM RAM * CLERA MOV M,A INX H INR C JNZ CLERA CLEAR FIRST 256 BYTES * * * * TERM COMMAND * * THIS ROUTINE GETS CHARACTERS FROM THE SYSTEM KEYBOARD * AND OUTPUTS THEM TO THE SERIAL OUTPUT PORT. IT IS * INTENDED TO CONFIGURE THE SoL AS A STANDARD VIDEO * TERMINAL. COMMAND KEYS ARE NOT OUTPUT TO THE OUTPUT * PORT BUT ARE INTERPRETED AS DIRECT SoL COMMANDS. * THE MODE COMMAND, RECEIVED BY THE KEYBOARD, PUTS THE * SoL IN THE COMMAND MODE. * * TERM LXI SP,SYSTP SET STACK POINTER CALL TOFF SLOW DOWN THE TAPES CALL PERSE CLEAR THE SCREEN * KIN CALL KSTAT IS THERE ONE WAITINGI JNZ TIN IN KDATA GET THE CHARACTER MOV B,A ANI 80H COMMAND KEY? JZ TOUT CALL VDMOT PROCESS IT JMP TIN * TOUT CALL SDROT OUTPUT IT TO THE SERIAL PORT TIN CALL SSTAT GET SERIAL STATUS JZ KIN LOOP IF NOT IN SDATA GET DATA ANI 7FH NO HIGH BITS FROM HERE MOV B,A IT'S OUTPUT FROM 'B' CALL VDMOT PUT IT ON THE SCREEN JMP KIN LOOP OVER AND OVER * * * * DUMP COMMAND * * THIS ROUTINE DUMPS CHARACTERS FROM MEMORY TO THE * CURRENT OUTPUT DEVICE. (WITH CONSOL ALL OUTPUT GOES TO * THE SCREEN). ALL VALUES ARE DESPLAYED AS ASCII HEX. * * THE COMMAND FORM IS AS FOLLOWS: * * DUmp addr1 addr2 * * THE VALUES FROM ADDR1 TO ADDR2 ARE THEN OUTPUT TO THE * OUTPUT DEVICE. IF ONLY ADDR1 IS SPECIFIED THEN THE * VALUE AT THAT ADDRESS IS OUTPUT. * DUMP CALL SCONV SCAN TO FIRST ADDRESS AND CONVERT IT PUSH H SAVE THE VALUE CALL SCHR GET THE NEXT POP H JZ POVER NO SECOND VALUE PUSH H CALL SHEX GET SECOND POP D THIS IS THE FIRST JMP NPASS MIND BENDERS * POVER MOV D,H NO SECOND PARAMETER COPY FIRST TO DE MOV E,L NPASS XCHG . HL HAS START, DE HAS END * DLOOP CALL CRLF IN KDATA CPI MODE MODE KEY' WILL ESCAPE THE DUMP JZ COMND CALL ADOUT OUTPUT ADDRESS CALL BOUT ANOTHER SPACE TO KEEP IT PRETTY MVI C,16 VALUES PER LINE * DLP1 MOV A,M GET THE CHR PUSH B SAVE VALUE COUNT CALL HBOUT SEND IT OUT WITH A BLANK CALL ACOMP COMPARE ADDRESSES JNC COMND ALL DONE POP B VALUES PER LINE INX H DCR C BUMP THE LINE COUNT JNZ DLP1 NOT ZERO IF MORE FOR THIS LINE JMP DLOOP DO A LFCR BEFORE THE NEXT * * OUTPUT HL AS HEX 16 BIT VALUE * ADOUT MOV A,H H FIRST CALL HEOUT MOV A,L THEN L FOLLOWED BY A SPACE * HBOUT CALL HEOUT BOUT MVI B,' ' JMP VDMOT CONSOL PUTS IT ON THE SCREEN * HEOUT MOV C,A GET THE CHARACTER RRC RRC . MOVE THE HIGH FOUR DOWN RRC RRC CALL HEOU1 PUT THEM OUT MOV A,C THIS TIME THE-LOW FOUR * HEOU1 ANI 0FH FOUR ON THE FLOOR ADI 48 WE WORK WITH ASCII HERE CPI 58 0-9? JC OUTH YUPI ADI 7 MAKE IT A LETTER OUTH MOV B,A OUTPUT IT FROM REGISTER 'B' JMP VDMOT * * COMPARE DE AND HL * ACOMP MOV A,L SUB E MOV A,H SBB D RET . FLAGS ARE SET * * * ENTER COMMAND * * THIS ROUTINE GETS VALUES FROM THE KEYBOARD AND ENTERS * THEM INTO MEMORY. THE INPUT VALUES ARE SCANNED FOLLOWING * A STANDARD 'GCLIN' INPUT SO ON SCREEN EDITING MAY TAKE * PLACE PRIOR TO THE LINE TERMINATOR. A BACK SLASH '/' * ENDS THE ROUTINE AND-RETURNS CONTROL TO THE COMMAND MODE. * ENTER CALL SCONV SCAN OVER CHARS AND GET ADDRESS C30A C30B C30B C30E C310 C313 C316 C318 C31B C31C C31C C31E C321 C324 C325 C327 C32A C32D C32E C32F C330 C331 C332 C335 C335 C335 C335 C335 C335 C335 C335 C335 C335 C335 C335 C338 C339 C339 C339 C339 C339 C339 C339 C339 C339 C339 C339 C339 C339 C33C C33F C342 C343 C345 C347 C34A C34A C34B C34D C34F C352 C354 C354 C357 C35A C35A C35D C35E C361 C361 C362 C363 C366 C369 C36A C36B C36E C370 C370 C372 C373 C373 C376 C377 C378 C379 C37A C37B C37C C37D C380 C380 C383 C386 C386 C388 C38B C38E C38E C38E C38E C38E C38F C391 C394 C394 C394 C394 C396 C398 C39A C39D C39F C3A0 C3A3 C3A4 C3A7 C3A7 C3A7 C3A7 C3AA C3AB C3AE C3AE C3AE C3AE C3B1 C3B4 C3B4 C3B7 C3B8 C3B9 C3BA C3BB C3BC C3BD C3BE C3C1 C3C1 C3C1 C3C1 C3C1 C3C1 E5 CD 06 CD CD 0E CD EB 1A 3A CC 3D 01 25 C2 0E CD CA 1A FE CA CD 7D E1 77 23 E5 C3 03 34 C2 0B C3 C1 C1 C1 2F B4 C1 44 C2 1C C3 CD 3E C2 E9 CD CA CD 7D E6 3E C2 24 C2 4A C3 44 C2 01 20 4B C3 AF F6 D3 CD DB C0 FA F1 C3 FB CD 94 C3 C2 54 C3 2A 0C C8 EB 2A 0E C8 7A B3 CA 01 EB 09 D2 06 ED C3 00 FF E1 C3 00 0E 00 EB CD C6 C3 77 23 A9 2F 91 4F 05 C2 73 C3 CD C1 C3 CA 61 C3 06 07 CD 4B C0 C3 B4 C1 EB 36 3F C3 B4 C1 06 DB E6 CA DB B7 C2 05 C2 0A FA 40 96 C3 FB 94 C3 96 C3 CD C6 C3 3D C2 A7 C3 21 05 C8 01 00 10 CD C6 C3 77 23 A9 2F 91 4F 05 C2 B4 C3 CD C6 C3 0766 0767 0768 0769 0770 0771 0772 0773 0775 0776 0777 0000 0778 0779 0780 0781 0782 0783 0784 0785 0786 0787 0788 0789 0790 0791 0792 0793 0794 0795 0796 0797 0798 0799 0800 0801 0802 0803 0804 0805 0806 0807 0808 0809 0810 0811 0812 0813 0814 0815 0816 0817 0818 0819 0820 0821 0822 0823 0824 0825 0826 0827 0828 0829 0830 0831 0832 0833 0834 0835 0836 0837 0838 0839 0840 0841 0842 0843 0844 0845 0000 0846 0847 0848 0849 0850 0851 0852 0853 0854 0855 0856 0857 0858 0859 0860 0861 0862 0863 0864 0865 0866 0867 0868 0869 0870 0871 0872 0873 0874 0875 0876 0877 0878 0879 0880 0881 0882 0883 0884 0885 0886 0887 0888 0889 0890 0891 0892 0893 0894 0895 0896 0897 0898 0899 0900 0901 0902 0903 0904 0905 0906 0907 * ENLOP * ENLO1 ENLO2 PUSH H SAVE ADDRESS CALL MVI CALL CALL MVI CALL XCHG CRLF B,':' CONT CREM C,1 VDAD2 . GET LINE OF INPUT REMOVE THE CURSOR START SCAN GET ADDRESS ....TO DE MVI CALL JZ LDAX CPI JZ CALL MOV POP MOV INX PUSH JMP C,3 NO MORE THAN THREE SPACES BETWEEN VALUES SCHR1 SCAN TO NEXT VALUE ENLOP LAST ENTRY FOUND START NEW LINE D GET THE CHR '/' COMMAND TERMINATOR? COMND IF SO... SHEX CONVERT VALUE A,L GET LOW PART AS CONVERTED H GET MEMORY ADDRESS M,A PUT IN THE VALUE H H BACK GOES THE ADDRESS ENLO1 CONTINUE THE SCAN * * * * EXECUTE COMMAND * * THIS ROUTINE GETS THE FOLLOWING PARAMETER AND DOES A * PROGRAM JUMP TO THE LOCATION GIVEN BY IT. IF PROPER * STACK OPERATIONS ARE USED WITHIN THE EXTERNAL PROGRAM * IT CAN DO A STANDARD 'RET'URN TO THE CONSOL COMMAND MODE. * * EXEC CALL SCONV SCAN PAST BLANKS AND GET PARAMETER PCHL GO ........ (AMD TAKE NOTE) * * * * TAPE LOAD COMMAND * * THIS ROUTINE READS FROM EITHER TAPE UNIT PLACING * THE READ DATA INTO MEMORY. WHILE SPACE WITHIN CONSOL * DOES NOT ALLOW FOR 'STANDARD' TAPE ROUTINES THIS * COMMAND WILL LOAD SoL- BASIC5 AND OTHER STANDARD SoL * SYSTEM SOLFTWARE FOR DIRECT EXECUTION. * * TLOAD CALL SBLK SCAN TO SPEED PARAMETER JZ DFLT DEFAULT TO HIGH SPEED IF NONE CALL SHEX CONVERT IT MOV A,L GET VALUE ANI 1 ONLY BIT ZERO COUNTS MVI A,32 PRETEND ITS SLOW JNZ SETSP * DFLT XRA A MAKE IT FAST SETSP ORI TAPE1+TAPE2 CONSOL STARTS BOTH TAPES OUT STAPT START TAPES AND SELECT SPEED CALL DELAY WAIT WHILE THE TAPE UNIT WINDS UP IN TDATA CLEAR THE UART FLAGS * TLOD1 CALL RHEAD READ PAST HEADER JNZ TLOD1 IF ERROR START OVER * LHLD BLOCK GET BLOCK SIZE XCHG . ...TO DE LHLD LOADR GET LOAD ADDRESS * LOLOOP MOV A,D GET COUNT ORA E JZ TOFF COUNT IS ZERO-TURN OFF TAPE AND RETURN LXI B,-256 THIS MANY PRIOR TO CRC TEST XCHG . COUNT TO HL DAD B A LITTLE MATH JNC LBLK NO CARRY, IT'S THE LAST BLOCK MVI B,0 256 TO READ * RDBLK MVI C,0 ZERO THE CRC XCHG . ROUND ROBIN * RTBYT CALL TAPIN GET CHARACTER MOV M,A STORE IT INX H BUMP MEMORY LOCATION XRA C UPDATE THE CRC CMA SUB C MOV C,A STORE THE NEW DCR B COUNT DOWN JNZ RTBYT STILL MORE IF NOT ZERO * CALL CRCCK CHECK CRC AND FALL THROUGH TO ERROR IF NO GOOD JZ LOLOOP TEST OK * TERR MVI B,'G'-40H BELL CHARACTER CALL VDMOT PUT IT ON THE SCREEN JMP COMND * * * CONSOL ERROR HANDLER * ERR1 XCHG . GET SCAN ADDRESS ERR2 MVI M,'?' PUT A QUESTION MARK THERE JMP COMND AND GO TO COMMAND MODE * * READ THE HEADER * RHEAD MVI B,10 FIND 10 NULLS RHEA1 IN STAPT GET A BYTE ANI TDR JZ RHEA1 IN TDATA IGNORE ERROR CONDITIONS ORA A ZERO? JNZ RHEAD DCR B JNZ RHEA1 LOOP UNTIL 10 IN A ROW * * WAIT FOR THE START CHARACTER * SOHL CALL TAPIN DCR A JNZ SOHL WAIT FOR A '1' * * NOW GET THE HEADER * LXI H,THEAD POINT TO BUFFER LXI B,HLEN*256 LENGTH OF HEADER IN 'B',C > * * * VDM PARAMETERS * VDMEM EQU 0CC00H VDM SCREEN MEMORY * * * KEYBOARD SPECIAL KEY ASSIGNMENTS * DOWN EQU 9AH UP EQU 97H LEFT EQU 81H RIGHT EQU 93H LOADK EQU 8CH LOAD KEY MODE EQU 80H CLEAR EQU 8BH HOME EQU 08EH BACKS EQU 5FH BACKSPACE LF EQU 10 CR EQU 13 BLANK EQU ' ' SPACE EQU BLANK CX EQU 'X'-40H * * PORT ASSIGNMENTS * STAPT EQU 0FAH STATUS PORT GENERAL SERST EQU 0F8H SERIAL STATUS PORT SDATA EQU 0F9H SERIAL DATA TDATA EQU 0FBH TAPE DATA KDATA EQU 0FCH KEYBOARD DATA PDATA EQU 0FDH PARALLEL DATA DSTAT EQU 0FEH VDM DISPLAY PARAMETER PORT SENSE EQU 0FFH SENSE SWITCHES * * * * BIT ASSIGNMENT MASKS * SCD EQU 1 SERIAL CARRIER DETECT SDSR EQU 2 SERIAL DATA SET READY SPE EQU 4 SERIAL PARITY ERROR SFE EQU 8 SERIAL FRAMING ERROR SOE EQU 16 SERIAL OVERRUN ERROR SCTS EQU 32 SERIAL CLEAR TO SEND SDR EQU 64 SERIAL DATA READY STBE EQU 128 SERIAL TRANSMITTER BUFFER EMPTY * KDR EQU 1 KEYBOARD DATA READY PDR EQU 2 PARALLEL DATA READY PXDR EQU 4 PARALLEL DEVICE READY TFE EQU 8 TAPE FRAMING ERROR TOE EQU 16 TAPE OVERFLOW ERROR TDR EQU 64 TAPE DATA READY TTBE EQU 128 TAPE TRANSMITTER BUFFER EMPTY * SOK EQU 1 SCROLL OK FLAG * TAPE1 EQU 64 TAPE ONE 'ON' BIT TAPE2 EQU 128 TAPE TWO * * * * * SoL SYSTEM GLOBAL AREA * ORG 0C800H START OF 1K RAM AREA * SYSRAM EQU $ START OF SYSTEM RAM SYSTP EQU $+1024 STACK IS AT THE TOP * * * CONSOL PARAMETER AREA * NCHAR DS 1 CURRENT CHARACTER POSITION LINE DS 1 CURRENT LINE POSITION BOT DS 1 BEGINNING OF TEXT DISPLACEMENT OPORT DS 1 OUTPUT PORT IPORT DS 1 INPUT PORT * * * THEAD DS 5 NAME DS 1 THIS BYTE MUST BE ZERO HTYPE DS 1 TYPE BLOCK DS 2 BLOCK SIZE LOADR DS 2 LOAD ADDRESS XEQAD DS 2 AUTO EXECUTE ADDRESS HSPR DS 3 SPARES * HLEN EQU $-THEAD LENGTH OF HEADER * * ACOMP BACKS BOT CLERA COMTA CRCCK CUR DISPT DOWN ENLO2 ERAS2 ERROT GOBAC HCOV1 HOME ITAB KREA1 LEFT LOADR NCOM OK PBACK PDOWN PLEFT PROCS RDBLK RIGHT SC SCONV SDR SEROT SHE1 SOHL SPE SSTAT SYSRA TAPIN TERM TIN TOFF TTBL VDADD XEQAD C302 005F C802 C26A C194 C3C1 C0C1 C071 009A C324 COD6 C1AD C056 C25B 008E C18C CO27 0081 C80E C20B COAD C145 COFA C1OD C1D2 C370 OO93 C161 C23E 0040 C040 C247 C3A7 0004 C031 C800 C3C6 C270 C290 C3ED 0080 C121 C810 ADOUT BGIN BOUT CLIN1 CONT CREM CX DLOOP DSTAT ENLOP ERAS3 EXEC GOBK HEOU1 HSPR KDATA KREAD LF LOLOO NEXT OPORT PCR PDR PLF PROMP RHEA1 RTBYT SCD SCROL SDROT SERST SHEX SOK SREA1 SIAPT SYSTP TBL TERR TLOAD TOUT UP VDMEM C2DD C001 C2E5 C0E9 C1CC C13D 0018 C2B7 00FE C30B C0DD C335 C05D C2F3 C812 00FC C028 000A C361 C076 C803 C14E 0002 C155 C212 C396 C373 0001 C098 C041 00F8 C244 0001 C036 00FA CC00 C165 C386 C339 C28D 0097 CC00 AINP BLANK CHAR CLINE COPRC CRLF DELAY DLOP1 DUMP ENTER ERR1 FDCOM HBOUT HEOUT HTYPE KDR KSTAT LINE MODE NPASS OTAB PCUR PERSE POVER PUP RHEAD SBLK SCHR SCTS SDSR SETSP SINP SOUT SREAD STBE TAPE1 TDATA TFE TLOD1 TREDY VDAD VDMO1 C016 0020 C07B C0E3 C1E1 C21A C3F1 C3F4 C2A1 C307 C38E C1F4 C2E2 C2EA C80B 0001 C022 C801 0080 C2B6 C184 C113 C0C5 C2B4 C104 C394 C224 C232 0020 0002 C34B C013 C004 C037 0080 0040 00FB 0008 C354 C3D7 C128 C04C AOUT BLOCK CLEAR COMND CR CRPRC DFLT DLP1 ENLO1 ERAS1 ERR2 GCLIN HCONV HLEN IPORT KIN LBLK LOADK NCHAR OCHAR OUTH PDATA PHOME PRIT PXDR RHED1 SBLK1 SCHR1 SDATA SENSE SFE SOE SPACE SROL STRTA TAPE2 TDR THEAD TOE TSRCH VDAD2 VDMOT C007 C80C 008B C1B4 000D C1DD C34A C2C9 C31C C0CA C38F C1C3 C24B 0010 C804 C279 C3E1 008C C800 C081 C2FE 00FD C0F3 C117 0004 C3B4 C226 C234 00F9 00FF 0008 0010 0020 C09C C265 0080 0040 C805 0010 C062 C125 C04B (continued from page 4) 009E 00A1 00A4 00A7 00AA 00AD 00B0 00B3 00B6 00B9 00BC 00BF 00C2 00C5 00C8 00CB 00CD 00CE 00CF 00D0 00D1 00D4 00D7 00D8 00DB 00DC 00DD 00DE 00DF 00E0 00E1 00E2 00E4 00E7 00EA 00ED 00ED 00F0 00F1 00F4 00F7 00F8 00F9 00FA 00FB 00FE 00FF 00FF 0102 0104 0105 0106 0107 0108 0109 010A 010B 010E 010F 010F 0112 0113 0114 0116 0119 011A 011B 011D 0120 0123 0123 0125 0126 0127 012A 012B 012C 012D 012E 0131 0131 0133 0136 0139 013C 22 2A 22 2A 22 22 22 2A 22 2A 22 2A 22 01 21 36 03 23 AF A8 C2 21 EB 21 7E 23 EB 77 23 7C EB FE C2 CD C3 F1 78 24 7A 26 28 2A 7C 2C 7E 2E 80 30 DF 62 19 04 01 05 01 05 05 05 01 05 01 05 01 05 FF 05 01 C5 CD CD C1 0B AF A8 C2 C9 40 03 CB 00 00 CC 84 01 D0 DB 00 ED 00 D4 00 FF 00 0F 01 F0 00 21 01 CC 0E D0 7E 2B 77 23 23 7C B9 C2 04 01 C9 21 7E 23 FE C2 23 7E FE C2 11 00 CC 06 12 01 11 31 01 7E 14 06 07 72 05 CA 52 01 23 73 23 05 C2 25 01 FE C2 11 C3 FE 14 3C 01 2D 13 23 01 13 0710 0720 0730 0740 0750 0760 0770 0780 0780 0800 0810 0820 0830 0840 8850 0860 0870 0880 0890 0900 0910 0920 0930 0940 0950 0960 0970 0980 0990 1000 1010 1020 1030 1040 1050 1060 1070 1080 1090 1100 1110 1120 1130 1140 1150 1160 1170 1180 1190 1200 1210 1220 1230 1240 1250 1260 1270 1280 1290 1300 1310 1320 1330 1340 1350 1360 1370 1380 1390 1400 1410 1420 1430 1440 1450 1460 1470 1480 1490 1500 1510 1520 1530 1540 1550 RAILS HOSTL FIRE . TRAVL CHOO . STROK COAL . TURN HISS FOUND AXLE . AXL1 AXL2 . NXT1 NXT2 SHLD LHLD SHLD LHLD SHLD SHLD SHLD LHLD SHLD LHLD SHLD LHLD SHLD LXI LXI MVI INX INX XRA XRA JNZ LXI XCHG LXI MOV INX XCHG MOV INX MOV XCHG CPI JNZ CALL JMP SHED+36DH FIREMAN FRA1 .. THE LITTLE ENGINE SHED+3A0H ALSO FRA2 .. HAD A COWCATCHER SHED+3A2H AND LOTS OF FUNNY SHED+3A4H WHEELS AND THE SHED+3A6H THINGS THAT CONNECTED FRA3 .. AND TWO VERY TINY SHED+3A8H WHEELS AT THE VERY FRA4 .. VERY BACK SHED+3AAH ALTOGETHER IT LOOKED FRA5 .. QUITE LONELY AND YET SHED+3ACH IT APPEARED VERY B,-21H . FUNNY JUST SITTING H,SHED+3DEH THERE ON THE M,19H .. RAILS B .. WITH NOTHING AT ALL H .. EVER A .. TO DO B .. W E L L ! RAILS .. LET'S RUN IT JUST FOR FUN H,RRY GET TRAIN OUT OF SHED . MOVE IT FROM SHED H,SHED A,M LIGHT FIRE H LXI PUSH CALL CALL POP DCX XRA XRA JNZ RET B,64.13 MAKE TRIP 13 MILES B CHUFF ONCE STROK MAKE FORWARD MOTION TURN TURN WHEELS B B CLICK ODOMETER A B 13 MILES YET? CHOO NO . DO NEXT TRIP LXI MVI MOV DCX MOV INX INX MOV CMP JNZ RET H,0CC01H MOVE DOWN THE TRACK C,0D0H A,M ADD MORE COAL H M,A H H A,H C ENOUGH COAL? COAL NO, PUT MORE ON! LXI MOV INX CPI JNZ INX MOV CPI JNZ LXI H,0CC00H TURN WHEELS A,M H 6 FIND COWCATCHER HISS LOOK AGAIN H A,M 11H WHAT QUARTER TURN? NXT1 D,147EH NEXT QUARTER TURN MVI MOV DCR JZ INX MOV INX DCR JNZ B,7 M,D B WORK H M,E H B AXL2 CPI JNZ LXI JMP CPI 14H QUARTER TURN NXT2 D,132DH AXL1 13H QUARTER TURN M,A H A,H ..MOVE IT 0D0H END OF YARD? FIRE NO, MAKE MORE STEAM! TRAVL GO TAKE TRIP HOSTLE NO ROUND TRIPS, JUST DO AGAIN DO 4 AXLES WHEELS MOVED HERE LAST WHEEL? I'VE BEEN WORKIN'... ..ON THE RAILROAD.. (SIDE RODS MOVED HERE) ..ALL THE LIVE.. ..LONG DAY..... Page 11 013E 0141 0144 0147 0149 014C 014F 0152 0152 0155 0156 0158 015A 015D 015E 015F 0162 0163 0163 0163 0166 0166 0166 0166 0166 0168 016A 016C 016E 0170 0172 0174 0176 0178 017A 017C 017E 0180 0182 0184 0185 0185 0185 C2 11 C3 FE C2 11 C3 47 5F 23 12 1A 2D 23 01 12 01 01 0B DB E6 C2 AF A8 C2 C9 B8 0B 01 11 01 00 40 63 01 55 01 C3 60 E0 01 10 7E 28 0A 0A 0A 39 5D 06 11 11 6F 6F 19 00 10 5D 20 0A 19 0A 5B 39 20 20 2D 20 2D 20 19 1560 1570 1580 1590 1600 1610 1620 1630 1640 1650 1660 1670 1680 1690 1700 1710 1720 1730 1740 1750 1760 1770 1780 1790 1800 1810 1820 1830 1840 1850 1860 1870 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 NXT3 . WORK OIL JNZ LXI JMP CPI JNZ LXI JMP NXT3 D,125FH AXL1 12H QUARTER TURN AXLE D,112DH AXL1 LXI DCX IN ANI JNZ XRA XRA JNZ RET B,3000 B, 0 RDA QUIT A B OIL DID THE CONDUCTOR ..FLAG US DOWN? QUITTIN' TIME NO, THEN HIGHBALL NO SQUEEKS, PLEASE! . . PUT A JUMP TO WHEREVER YOU NEED TO RETURN IN THE NEXT QUIT JMP ALS8 ..YOUR RETURN LINK GOES HERE . RDA EQU 40H PUT YOUR DATA READY FLAG HERE RRY EQU 0CC00H SMOKE EQU 6FH SMOKE CHARACTER CAB1 DW 1001H CAB DESCRIPTION CAB2 DW 5D10H " " CAB3 DW 207EH " " BOI1 DW 0A28H BOILER DESCRIPTION BOI2 DW 190AH " " BOI3 DW 0A0AH " " BOI4 DW 5B0AH " " BOI5 DW 3939H " " BOI6 DW 205DH " " FRA1 DW 2006H FRAME DESCRIPTION FRA2 DW 2D11H " " FRA3 DW 2011H " " FRA4 DW 2D6FH " " FRA5 DW 206FH " " TIES DW 1919H TIES DESCRIPTION SHED NOP . THIS IS SHED AREA CLOUD EQU $+0172H BEGINNING OF CLOUD . :10000000AFD3C82184010100083620230BAFA8C2090021F702110000060F07 :1A001A00CD5000112B00060DCD50001130000609CD50001134000604CD506A :1A00340000113B000602CD5000113C000601CD5000113E000601CD5000C39A :1A004E00590019366F2305C25100C921A604361621A904360721AB04366EE7 :1A0068002A660122AE042A680122B0042A6A0122B2042A6C0122E5042A6E09 :1A0082000122E7042A700122E90422EB042A720122ED042A740122EF042A0D :1A009C00760122F1042A78012224052A7A01222605222805222A052A7C0195 :1A00B600222C052A7E01222E052A800122300501DFFF21620536190323AF52 :1A00D000A8C2CB002100CCEB2184017E23EB77237CEBFED0C2DB00CDED00B1 :1A00EA00C3D400014003C5CDFF00CD0F01C10BAFA8C2F000C92101CC0ED049 :1A0104007E2B7723237CB9C20401C92100CC7E23FE06C21201237EFE11C2DD :1A011E003101117E1406077205CA520123732305C22501FE14C23C01112D5C :1A01380013C32301FE13C24701115F12C32301FE12C21A01112D11C323010C :1A01520001B80B0BDB00E640C26301AFA8C25501C9C300060110105D7E2046 :1A016C00280A0A190A0A0A5B39395D200620112D11206F2D6F20191900CB :00
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.2 Linearized : No Page Count : 12 Creator : Microsoft Word Create Date : Saturday, January 15, 2000 11:29:54 PM Title : Processor Tech Access, Vol 1, Number 1 Author : OCR'd and formatted by Jim Battle Producer : Acrobat PDFWriter 3.02 for Windows Subject :EXIF Metadata provided by EXIF.tools