Download Ipso Facto Issue 16
Transcript
-- ---------------------- • INDEX 111~ P!,-f- . MARCH 1980. A.C.E. EXECUTIVE COMMITTEE ..•.......•....•....•...••.•. ·2 EDITORIAL COMMENTS .•.•.....•....••..••••.•••...•.•.••.•. 3 THE MONITOR ••••••••••• _:_ 11 A COMPARISON OF NETRONICS AND QUEST: "FULL BASIC" •••..• 19 ROLL OVER HEX WHILE LOADING ..•...•......• i • • • • • • • • • • • • • 21 SOFTWARE FOR THE ETI 2708 EPROM PROGRAMMER .••.•••.•.••. 22 LETTERS TO THE EDITORS •...••...•.•..•.....•.•.....•...• 24 SOME THOUGHTS ON DEVICE INPEPENDENT 1/0 ......•...•.•..• 25 THE 1/Nth DEGREE .•.••.••.•..•.•...•.......•..••.•••••.• 27 • 8K EPROM MEMORY BOARD .••••••.•..••..••••....••••.•••.•• 28 SOME THOUGHTS ON THE FUTURE OF THE 1802.••.•.•••.•....• 30 FUTURE MEETINGS AND NEW LOCATION ••........••..••..••..• 32 ITEMS FOR SALE ••..•••••••••••••••••••••.••••••••••••••• 33 ASSEMBLY LISTING FOR COSMAC GRAPHICS PROGRAM .......•••• 33 PROTO BOAR D•••• '• ••••• '•••.•••••••••••••••••••••••••••• • • 110 BYTE CONTROL 1811 .•.••...••.•.•....•.••.•.•..•.•..•••••• !t3 MINUTES OF ACE MEETINGS ••.•••••.•••....•.•.•...•..••••• 50 64K DECODING FOR TEKTRON MEMORY ..•••...•.••...•.••...•• 51 CUDDLY SOFTWARE: A PRODUCT REVIEW •.•....•.•.•••....•••• 52 ERRATA ••••••••••••••••••••••••••••••••••••••••••••••••• 511 PALO ALTO TINY BASIC INTERPRETER ••.•••.•.•.•... ,•.•••••. 55 NEW PRODUCT: SUPER ISOLATOR .•.....••.•......•...•.•..•• 55 MEMBERSHIP INFORMATION ••.........•...••.•..•..••..•..•• 56 IPSO FACTO is published by the ASSOCIATION OF COMPUTER EXPERIMENTERS (A.C.E), a non-profit, educational organization. Information contained in IPSO FACTO is belieVed to be accurate and reliable. However, no responsibility is assumed by IPSO FACTO or the ASSOCIATION OF COMPUTER EXPERIMENTERS for its use; nor for any infringements of patents or other rights of third parties which may result from its use. • Send newsletter correspondence to > Bernie Murphy, 102 McCraney St., Oakville, Ontario, Canada. L6H 1H6 • PAGE: 2 • 1979-1980 ACE EXECUTIVE COMMITTEE PRESIDENT Ken Bevis 220 Cherry Post Rd. Toronto, ONT., L5A 1H9 416-277-2495 TREASURER Mike Franklin 24 Duby Rd, Acton, ONT., L7J 2P1 519-853-3421 ASSOCIATE EDITOR Vic Kushnir 2640 Barnstone Cr., Mississauga, ONT., L5K 2C1 416-822-6505 ASSOCIATE EDITOR Earle Laycock 2772 Hollington Cres., Mississauga, ONT, L5K 1E7 416-823-1345 ASSOCIATE EDITOR Bob Silcox 562 Forestwood Cr., Burlington, ONT., L7L 4K3 416-681-2848 CONSULTING EDITOR Bernie Murphy 102 McCraney St., Oakville, ONT., L6H 1H6 416-845-1630 D R A F T I N G J . Myszkowski 99 Augusta St., Hamilton, ONT. 416-529-0250 MEMBERSHIP CO-ORDINATOR Blair Gerrish 2110 Prospect St., Apt. 3, Burlington, Ont., L7R 1Y9 416-634-0268 HARDWARE CO-ORDINATOR Fred Feaver 105 Townsend Ave., Burlington, ONT., L7T 1Y8 416-637-2513 PROGRAM CO-ORDINATOR Fred Pluthero 1013 Upper Wellington St., Hamilton, ONT., L9A 3S4 416-389-4070 PUBLISHING COMMITTEE Dennis Mildon 44 Wildewood Ave., Hamilton, ONT., L8T 1X3 416-385-0798 John Hanson 955 Harvey Place, Burlington, Onto L7T 3E9 416-637-1076 • • • PAGE: • 3 EDITORIAL COMMENTS As mentioned elsewhere in this issue, A.C.E. meetings will be returning to the Stelco Auditorium in Hamilton, beginning in April. The Oakville location which we have been using for the past few meetings was excellent in almost every respect, but unfortunately, turnout at these meetings has been rather poor -consistently so, and so we felt that if we were getting fewer members out to meetings, then apparently the membership in this area generally prefer the old location. If there are any who have not been coming out because of the move to Oakville, we hope to see you again starting with the April 8 meeting (starting time 7:30 P.M.). • As noted on the back cover, we are now entirely sold out of back issues 1-12, so please do not send in any further orders for them. Work is currently in progress on our collection of the best material from these issues, and this collection, tentatively titled 'De Facto', should be available before too long. We cannot yet specify the exact price (this will depend on a number of factors, such as number of pages that we wind up with), or the exact date of availability, so please do not send in orders at this time. We hope to be able to supply this information before too long -- in issue 18 at the latest. 'De Facto' will be sold as loose leaf pages, with 3-hole punch, a cardboard cover, and plastic wrapping so that it will survive the rigors of travelling through the postal system. This format will, among other advantages, keep the cost at a minimum, and make it fairly straight-forward to supply supplementary volumes for issues beyond number 12 at a later date. We have received two offers to serve as Education Co-ordinator, and hope to feature material from one or both of these people in upcoming issues. • The annual meeting is still a couple of months away, but it is not too soon to start thinking about candidates for next year's for next year's executive. In particular, the position(s) associated with editing of the club newsletter may prove very difficult to fill. The success of Ipso Facto, and its consequent growth from a small newsletter into a more substantial publication, has brought with it new problems, in that producing it can no longer be handled by one person as it was originally. Availability of word-processing equipment, or similar automatic e qi.t pmen t is almost a necessity for producing it at its present size -- hand-typing a manuscript of this size for each issue would keep a typist busy for a long time. A recent executive meeting addressed this problem without any definite solution, after considering a number of ideas, such as assigning responsibility for each issue to a different group of people. Ideas on how we can keep Ipso Facto going -at its present level, in terms of both quantity and quality, would be much appreciated. Even better would be offers to take part in this unde~taking. Please give it some thought. > ~teve PAGE: 2510 4 THE MONITOR "1eS DellS St. Bossier City, LA 71111 As I did more and more machine language programming on ., Elf, I realized that I needed a mOnitor with more than the usual memoryj cassette routines. After looking over all the monitors available for the 1802, I decided that none of them would meet all of my needs. That's when I decided to design a custom monitor for my Elf. I then sat down and tried to think of what commands I would need now and in the future. After much consideration, the following 10 commands were chosens 1. Execute - X,P can be set to any value except 0 or 1. 2. Memory Examine/Load. 3. Register Examine/Load. 4. Breakpoint Insertion. S. Fill memory with a byte. 6. Move a block of memory from one location to another. 7. Search memory for a varible length string of bytes. 8. Cassette Routines Save - Load - Verify at either 300 or 1200 baud using named files of any length up to 16 characters (modified Ipso Facto standard). Another feature of this monitor is the ability to add to the command set Without having to change any code in ROM. This is accomplished by having the table lookup routine vectored through System RAM. The first application of this feature will be the addition of an EDITOR - ASSEMBLER to the monitor. Also, future plans include a BASIC Pseudo-Compiler to be called by a monitor command. The actual operation of this feature will be discussed in more detail later on in the article. Other miscellaneous niceities of this monitor includes 1. Totally transparent to the calling program. D,DF, and all registers except R(O) and R(1) are saved. 2. I/O vectored through System RAM. This allows the user to dynamically change the I/O device while the program is executing. 3. Eight Level Interrupts supported. 4. 12 utility subroutines available to the caller's program through the SCRT subroutine convention. As mentioned earlier in the article, this monitor requires a block of memory to be dedicated as System RAM. This block (256 bytes) can be located anywhere in memory. However, I recommend 9800 since the Quest Super Elf already has memory there. The purpose of the System RAM is for temporary storage of the buffer, register save area, stack, and other varibles used by the monitor. Future additions to the monitor will also use this RAM. A memory map of the System RAM is shown in Figure 1. After this monitor was written and debugged, I noticed I had a little memory left over in the R page. Not wanting to waste good memory, I decided to include software to drive a keyboard and memory mapped video display (since I already had the board). After talking to some friends, they asked if it would be possible to add a driver routine for a RS-232 device. Since the monitor was designed to be independent of I/O, there are no restrictions on the type of I/O software used. Even though I have not given much thought to an RS-232 scheme, I am sure the software Uart routines in the monitor could be used to accomplish this. • • • PAGE: • S 00 - S 3F . :§: 40 - :§: 5B .§. 5c S,5D §:5E S 5F - S 63 S 64 - S 66 S 67 - S 69 S 6A - S so -S 6D - S 6F - .§. 70 - .§. 7F • S 80 - S 8F S 90 - S CF S DO - S FF 5 Input Buffer (64 characters wide) Register storage (R(2).1 at S 40, R(2).0 at S 41, • ••••R(F).O at ~ 5B) DF of user's program stored D register stored X,P of user's program stored. This value defaults to 2,.3. For other values of X,P , change this location to the desired value. Break location and contents stored Long jump to Input routine (defaults to f 97) Long jump to Output routine (defaults to f 9C) Long jump to SoftWare Interrupt routine. When the user's program executes a SWI (bytes 22 79 D1), control is vectored through this location. (defaults to monitor·location 1. 04) End-of-table pointer. This pointer defaults to the area immediately after the monitor. It is in this area that I plan to put future additions to the monitor. If the user wishes to add other commands, this pointer can be changed to point to his table elsewhere in memory. Interrupt Vector: storage •.Vector. 7 is stored first, followed:by vector.6, and so on. All vectors except vector 0 default to NOP. Vector 0 defaults to the SWI routine, location L 71Cassette file name storage. (Note I the filename is stored backwards) Unused Monitor stack. Figure 1. •• While On the subject of I/O, I should mention that all input to the monitor is first stored in a buffer. This allows the user to backspace over any errors and correct the mistakes before typing a OR. The only exception to this is in the Memory or Register Examine commands. While in this mode, any input from the I/O. device is used directly by the command. Before continuing on to discuss the commands, two bits of information concerning my notation might be helpful. First, the monitor does not require the commands to be entered in any particular format. The monitor will ignore any excess characters entered. As long as the information is in there somewhere, the monitor will accept it. For example, suppose the operator types 'Memory Examine Location 0.300 Hex', the monitor will interpret this as 'ME 0.300'. There are a few basic syntax rules, however. 1. All commands must begin in column 1. 2. There must be a.t least one space between the command and any parameters • .3. All parameters must consist of either 2 or 4 consecutive hex digits, depending on the parameter • PAGE: 6 Note that with this arrangement, commands can be abbreviated. All that is needed by the monitor is the abbreviation that would make the command unique. Later on, in the discussion of the commands, the abbreViation of the command will be shown as both capitalized and underlined letters, with optional letters being lowercase (i.e. BReak). Concerning the second part of my notation, all references to the high order byte of an address will be given by a underlined capital letter (with I being the base page). This was done to enable the user to easily relocate the monitor to any 2K block of memory. Any future references to the monitor (or any subroutines) should also use this notation. This way, everyone can maintain software compatibility while having the flexibility of locating the monitor anywhere. Also, any future expansion of "the monitor will use this notation, beginning with the letter g. One exception to this convention was that the letter S was chosen to represent the page where the System RAM resides. As an example to this notation, I debugged this program this monitor beginning at 0800, with my System RAM at 9800. Therefore, I would equal 08, .!!. equals 09, and so forth. Also, £ would equal 2§.. One last'thing should be mentioned. While discussing the commands, the first parameter will be sy,mbolically represented as AAAA, with the second parameter (as required) being BBBB, and so on. If a parameter only needs two digits, it will be shown as AA (for the first Parameter), BB (for the second parameter) and so forth. Also, a CR will be shown as ~. With this in mind, the commands will each be listed separatly, with a short description on each. Ia , Execute AAAA~ -This command will transfer control to the user's program beginning at AAAA. Before transferring control to the program, D,DF, and all registers are restored. In order to use a different X and/or P value for the program, change the byte at location S 5E to the desired value. The new value of X,P is what the computer will use for the user's program. • • lb. Execute,}. -This command has two subfunctions. If X,P have not been changed, (X,P defaulted to 2,3) execution of the user's program will begin at location 0000. If X,P has been changed, execution will be transferred to the location pointed to by the register defined by P. This second function is useful after a breakpoint has been serviced. To resume execution after a break, simply type E ~ • This will transfer control back to the point of the break with the original· value of X,P that the user's program established. Before control is passed to the user's program, the monitor will print 'SST?' and wait for an entry. This will allow the user to activate his single step circuitry. Note that the single step operation is accomplished by hardware only I If single step circuitry is not implemented on the system, change the byte at location ~ 33 from 39 to 30. • PAGE: • • 7 If the user does have single step capability, he can chose to single step through the program by pressing a 'y' on the keyboard. The program then loops until the hardware is activated. Once the circuitry has been activated, pressing any key On the keyboard will start the single step operation. If the user does not want to single step through the program, any key on the keyboard except 'Y' can be pressed. Control will then be Passed to the target program. 2. MEmory examine AAAA ~ --This command is probably the most used command in the monitor. It's purpose is to examine and/or load. data into memory. After the command is entered, the monitor will print the location, a hyphen, and then .the data. If the byte is also a valid ASCII character (between 20 and 7F), the monitor will also print the character. This feature is useful for obserVing text in memory. There are five subcommands available. They are the carriage return, line feed, space, back space, and escape keys. There functions are as follows I 'The carriage return key will close the current location and then open up the next location for examination/modification. The line feed key will close the current location, increment the pointer by 8, and then print the contents of the new location. Pressing the space bar will step through memory one nibble at a time • Any bytes spaced over are not changed • Pressing the back space key will accomplish one of two thingsl 1) If the second nibble of the byte is being observed, the back space key will move the cursor back to the first nibble. 2) If the first nibble of the byte is being observed, pressing the back space key will close the current location, decrement the memory pOinter, and then open up the new location. Finally, the escape key will exit the Memory Examine command and reenter the monitor. 3. Register examine ~ - This command is used to examine or modify the registers that were saved from the user's program. After the command is entered, the monitor will print the number of the register being observed (R(2) is the first register examined),a hyphen, and then the two-byte contents of the register. These registers are later restored to the original program through the use of the Execute command. There are four options associated with this command. They are the carriage return, space, back space, and escape keys. These options are basically the same as the Memory Examine options, but with a few differences. The first difference is that the options now operate on two-byte data, instead. of one byte. The second difference is that the monitor will not allow the user to space beyond R(F), or back space Past R(2). If the user attempts this, the console bell will be rung • • PAGE: 8 4. SAve AA BB 'CCC ••• CC'~ --This command is used to save memory blocks (in increments of bytes) on a storage device. The general form for this command is SA AA BB ' cee ... CC'). , where AA is the number of the starting page, BB is the number of the ending page, and 'ece ...ee' is the file name. The file name can be any length up to 16 characters. If a name is not 16 characters long, it will be padded on the right with blanks. If the name is longer than 16 characters, it will be truncated. Before going on to the next command, some discussion on the format is needed. When I first designed these routines, I wanted it to be compatable with the Ipso Facto standard. However, I also wanted longer file names than one character. After thinking over the possibilities, I decided on the following format. 256 • 1) At l~ast five seconds of mark (2400 hZ) at the beginning of a file. 2) .All data bytes are 8 bits, plus one start bit, even parity, and two stop bits. 3) Tape format file name 16 bytes Any ASCII characters between 20 and 7F. start address 2 bytes (hi then 10 byte) byte count 2 bytes (hi then 10 byte) data bytes n x 256 bytes checksum 1 byte Checksum formed by adding all bytes excluding file name and checksum. Besides the obvious advantage of having longer file names, anotpar advantage of this format is the ability to have the data rate at either 300 or 1200 baud. In order to Save or Load files at 300 baud, the file name should begin with an '5' as the first character of the name. If the file does not have the preceeding '5', the monitor will assume a 1200 baud rate. Finally, the monitor does not reguire any additional hardware. All Kansas City tones are software generated. Also, a routine has been included (the PLL routine) to receive and decode these tones into a binary 1 or O. The only other difference is the checksum byte. In my software, I did not complement the checksum, mainly because for a long time I did not know how this method worked. However, it took about the same number of bytes to do it either way, and I really did not want to hand re-assemble the monitor allover again! Since the standard was mOdified anyway, I decided that this difference was insignificent. • 5. Load 'CCC •.. CC,) - This command is used to load memory with a file name of 'CCC ..• CC' from a storage device. The monitor will search for this file name, while printing 'FOUND CCC •.• CC' for every other file it skips over. If the programmer wishes to only load the first file found, he can type'L ,.) Also, there is no need to select the baud rate. The monitor will select the baud rate from the first letter of the file name. Please refer to the Save command for an explanation of this format. • PAGE: • There are two possible error indications associated with this command. If a parity error occurs, the Q light will come on but loading will continue. If a checksum error occurs, the monitor will then print 'CHECKSUM?'. One exception to these conditions is if a parity error occurs in loading the header information. If an error occurs here, further loading will stop and control will be returned to the monitor. This feature was included to preserve memory from being wiped out by a misread tape. 6. ~erify 'CCC ••• CC'~ This command is the same as Load in every way except that instead of a file being loaded into memory, the file on the storage device is compared to the file already in memory. If the two files match, control will be passed back to the monitor. If the two files differ, the monitor will print 'ERROR IN XXXX'. One application for this command is for checking if a file was transmitted to tape successfully. 7. BReak AAAA ~ • This command is used to set a breakpoint at AAAA. Before a breakpoint is inserted, the bytes at this and the next two locations are saved along with the address of the break. A SoftWare Interrupt Pseudo-op (bytes 22 79 D1) is then inserted. When the SWI is executed by the user's program, D, DF, and all registers except R(O) and R(1) are saved and control passes to the monitor. The monitor will then print 'BREAK AT AAAA' and then restores the bytes that were saved earlier. Note that due to this process, only one breakpoint may be inserted at a time. However, immediately after a break has been serviced, another breakpoint may be inserted. One word of caution, for the break routine to work properly, either a Priority Interrupt I.C. must be connected to port 6, or the port must not be used. If this port is being used, change the bytes at locations L 4E and L 67 to a free port. If the routine still does not work, make-sure that when the interrupt port is read, an FF is returned. One disadvantage to this command is that a breakpoint can only be inserted in RAM. However, in later extensions of the monitor, I plan to add interrupt driven breakpoint and SST software to eliminate this problem. After a break has been serviced, execution of the user's program can continue by using the Execute command. Please refer to the section on this command for further information. 8. MOve AAAA BBBB CCCC) --The purpose of this command is to move the contents of the memory from AAAA to BBBB to the new location beginning at CCCC. 9. fill AAAA BBBB CC) This command will fill memory from AAAA to BBBB with the byte CC. • 10. SEarch AAAA BBBB 'cc CC •••• cc'J This command is used to search memory for a string of bytes. The general form for this command is SE AAAA BBBB ICC CC •••• CC', where AAAA is the search starting address, BBBB is the search ending address, 9 PAGE: 10 and ICC CC •••• CC I is the byte string to be searched for. Note that • the string can be any length up to 25 bytes long. After this c o n u n a n d . is entered, the monitor will begin searching the target area. If the string is found, the monitor will print 'FOUND AT XXXX' for every occurance of the string. After the monitor prints a location, it will then wait for any key on the keyboard to be pressed. The user should then press a key to start the search again. After all searching is finished, a prompt will be printed to indicate to the user that a new command may be entered. If the monitor does not find the string, it will print 'NOT FOUND' and return control back to the monitor. One very useful application of this command is in converting programs from one 1802 system to run on another system. I have already used this command to convert Netronic's monitor to run on my system and in relocating Quest's monitor to lower memory (by finding and changing all long branches). Besides these· 10 commands, it is possible to add more commands to the monitor. This feature is due to the way the monitor handles unrecognized commands. After searching the table contained in the monitor, the COMM-REC routine will then run across a 01 byte. This byte signals the routine that the next two bytes contain the address of the next table to be scanned. This address in the monitor ROM points to the location S 6D. This location in System RAM was initilized to 01 gOO. After the-search is transferred to S 6D, the COMM-REC routine hits another 01 byte. This time the new location is S 00 (the first location past the monitor). After transferring the search to S 00 (Where there should not be any memory), the monitor will start the search again. Since the byte at this location should be greater than 60 hex, the monitor will realize that the command table has been exhausted. Finally the monitor will print 'COMMAND?'. In order to temporarily add commands to the monitor, the user should change locations S 6E and S 6F to point to his table of new commands. This table shoUld consist of the new commands in the following format: Command Abbreviation Delimiter Byte Address of routine :<XXX. • • • 00 XXXX Following the table of new commands, a FF byte should be inserted. This will signal the COMM-REC routine that no more tables will follow. Note that if the user adds some temporary commands, he must change the end-of-table pointer (in System RAM) every time he enters the monitor. If he wishes to add permanent commands, all that is required is to locate the new command table at location gOO. There will be no need to change any other locations. As mentioned elsewhere in the article, this monitor was designed to be system independent. However, there are a few locations in the listing that should be cha~~d to reflect differences in the 1802 systems. These locations are shown below: Location I 00 L 35 L 4E L 67 P 82 P 88 B~~e 3D 6E 66 36 3E Purpose Turn off 1861 Video 1. C.-' Loop on no keyboard input flag Read interrupt vector port Write to interrupt acknowledge port cassette input flag Cassette input flag • • PAGE: 11 ." • This monitor has been extensively tested for any errors on several systems. So far, the monitor has been successfully used on the Quest Super Elf and Netronics Elf II. However, one quirk was discovered while running the monitor on a friend's system. This quirk concerns the way the output handles a carriage return. When I was designing this monitor, I was using an output device that simply used a CR (byte OD) to start a new line. Therefore, I designed the print routines based on this fact. However, the terminal on my friend's system needs a carriage return and a line feed. This is not a" major problem. All that is needed is to change the output vector to a free space 'in memory. In this space the user needs to insert a little routine that tests the output characters for a CR. When a CR is detected, a CR LF should then be output. Note that if the user has a memory mapped display, he may use the video driver already in the monitor without worrying about this problem. MONI'l'OH LISTING I 00 ... 02 06 62 C4 7A 38 'Ill Al F8 I B1 F8 OD A3 D3 OD E3 71 03 05 F8 S EO F8 5D AO 01 73 1C 93 B1 F8 00 AID 1 22 90 B9 B2 F8 ~ B5 B4 29 F8 16 1\4 2C F8 26 A5 2F F8 FF A2 32 D4 1. FD 35 .§ 6/1 10 16 81 V3 7E FA • 37 3D CO.£...:I1 CO J 0/+ co .e, 2f 40 01 Si 00 43 L I::C 1. EC L 4B 1. EC 53 Fl" '1 - EC 1 EC L EC EC ~1. 1 54 78 02 AD 57 F8 51': A7 5A F8 23 ')7 5D D4 d 11 60 OC 00 62 . 39 98 64 67 6C 71 74 77 7B D4.i! tr 112 ')? ,:c,. Id ':B zo If 1 51f 20 00 Fl> 5E AC) 8D 59 19 49 Btl It 9 AA 1A lA EA 7E 49 73 49 73 09 ~A 84 8D FA Of FE FC 3C A9 8B 9A 59 19 8A 59 90 D4.!S 95 93 D4 1 11 96 OD 00 98 1)It.J 11 9B 38 00 9D F8 110 A9 • AO A4 A7 AA AD Turn off 1861 Save Accumulator Sat RO) as PC Disable Interrupts Save D,DF in System RAM Call RSGSf\VE Initilize Registers Call RAM INIT RAM-Load Address System I/O Vectors SWI Program Vector End-of-'fable Pt r , Interrupt Vectorn 7 - 4 Interrupt Vectors 3 " 0 Subroutine Delimiter store T Register Save X,P Default Value Claar Screen Do BREAK Routine if Q Set Print 'BREAK AT ' Save T Register Restore Saved Bytes Save Location of Break Print Location Print CR Print Prompt Fill Buffer with Blanks 29 F8 20 59 89 3A AO D4 J 36 D4 J 65 30 98 Call INBUFF Call COMM-REC 1 AF D3 • 8F 73 8D 73 8B 73 89 73 87 73 85 73 F8 00 30 AF DO B8 00 C8 DO DB ID E8 9F 9D 9B 99 97 95 73 /* REGSAVE */ 73 73 73 73 73 73 73 . 8E 8e 8A 88 86 84 82 73 73 73 73 73 73 73 Return Save Registers 9E 73 9C 73 9A 73 98 73 96 73 94 73 92 73 • F8 EF 31 F3 7A F4 FF F8 27 FC D5 20 A7 F8 20 F3 7B 38 Initilize Duration, Pitch Alternate On/Off 01 3A F4 87 3A ED Do Pi tch Delay Do Duration Delay /* RAM-INIT */ ~ FD 01 06 09 OB 46 06 46 30 16 B7 46 A7 FB FF 32 OD 57 17 01 D5 Get Load Address Test for Delimiter . Store Data Byte Return /* PSTRING */ OD AA OE D4 S 67 11 46 3A OD 14 ~5 Save Character Print Character Test for Delimiter Return /* CALL */ D3 E2 93 46 30 15 16 lB 1F 23 Return Save R(6) Save PC in R(6) Load Sub Address into PC 96 73 86 73 B6 83 A6 B3 46 A3 15 /* RETURN */ 25 D3 26 96 B3 86 A3 2A E2 12 72 A6 FO B6 }O 30 25 C\I r- ta.J o cC Q.. 8A r'B OD D5 8A FB 08 8A FB 07 89 FF 3F D4 .!! 11 08 00 ~ D4 I Ell. 59 3036 5B 8A FF 20 60 8A 59 19 3C 41 42 47 4C 51 /* BELL */ EA 65 6A 6£ 73 78 7C 7E 83 86 8B 90 91 92 96 9B 9D AO A5 AA DO B7 BB CO C4 C9 Return Load Return Address into PC CD D1 Restore R(6) D6 DB DF E4 • /* INBUFF */ M. }2 89 32 56 35 29 }6 Dl. s 64 39 D4 :§ 67 Test for Start of Buffer 3A 42 32 32 32 56 3D 5B Get Character Print Character Is it a CR? Yes, so Return Is it a Backspace? Is it a Bell? Ignore Char. if Buffer Full Print Backspace Ring Bell 3B 36 30 36 Valid Character? Yes, so Store it in Buffer /* COMN-REC */ Initilize Command Table Ptr. B7 F8 B7 A7 Initilize Buffer Ptr. 00 A9 E9 Test for any other Tables FB 01 3A 7E Yes, so Load New Ptr. 47 B/\ 47 Ali. B7 8A A7 6A End of Table? FF 60 3B 92 Yes, so Print 'COMMAND?' Dlj. J 11 434F 4D 4D 41 4E 44 3F OD 00 Return D5 19 Test for Match 47 F3 32 9D Inc. Ptr. to next Command 473A 96 17 17 30 6A Test for end of Command 07·3A 91 Test for Delimiter 89 FF 40 33 83 49 FB.2O 3A AO Set PC to R(A) 93 BA F8 10 All. DA Load Command Address and Exec. 17 47 B3 1,7 A} E2 D3 (Execute) 45 00 K BD (Memory Examine) 1.D 45 00 !:1 75 (Register Examine) 52 00 N 00 (Save) 53 41 no !l B5 (Load) 4C 00 ~ 80 (Verify) 56 00 83 (Break) 42 52 0 1 cc (Move) 4D 4F 00 1: AU (Fill) 46 00 1. 89 (Search) 53 4500 L ED End of Table Ptr. 01 .§ 6D - 93 F8 07 17 9A 30 07 • • /* H - A */ J E1 8A F6 F6 - ED FF OA 9A F2 FF 09 F9 rr 30 FC F9 F9 30 BA FC 8A FA OF ! 00 FF OA 8A 05 FF 09 1"9 OA D5 OB F9 30 AA OE D5 F6 F6 BA 3B F9 40 BA Split Byte into two Hex Characters Convert High Hex Nibble to ASCII AA 3B OB 40 AA Convert Low Hex Nibble to ASCII Return Return 8A FF FF FF 8A 8A FF OA 01 06 Fe FA 00 FC 00 FF 30 3B 3B 33 09 OF D5 D5 89 8B 8F • 94 41 4D 45 3F OD 00 Return 8B 5D FE FE F1 5D Place Nibble in High Order Hal f 0 f Byte 5D Place Nibble in Low Order Hal f of Byte Return /: PWORD */ Convert First Two Bytes to ASCII Print First Nibble 8A 73 9A AA D4 ~ E7 9C 8A 13 9A AA AO- D4 5 67 A3 12 02 AA A6 D4.§ 67 A9 12 02 AA 99 Return Hex Nibble Set DF, Return Reset DF, Return Compare Addresses DF Set if ReF) ~'R(E) /* EXPR, INBYTE */ F8 04 C8 F8 02 B1 91 A1 89 FF 40 33 2B 49 AA D4! OF 3B 3D . 21 81 F6 3B 58 8A FE FE FE FE AD 8A 52 8D Fl AD 81 32 28 8D BD)O 3F 182 Call A - H Valid Character? No, 60 Print 'PARAMETER?' 95 2E 8E 52 BF F1 32 9E 52 9F 17 }6 D5 30 3~ 6c 12 18 19 1A , 1E D4! OF 33 19 D4 J 11 50 41 52 54 45 52 D5 ED 8B F6 33 OD FA OF 8A FE FE 1B D5 OD FA FO 8A Fl 5D 1B 1D D5 Test for Valid Character 3B 2B 24 2B 2B AA AA /* TEST */ 31 3A 3D 3F 44 46 49 4B 50 56 58 5D 60 64 61 69 192 /* A - H */ OF 14 18 1C 20 24 28 2B Expr Entry Inbyte Entry Test for No Parameters Call A - H Invalid Character? Shift Nibble to High Order Half of Byte Merge Nibbles to get Byte Set DF if Finished • /* CHAR-STORE */ Print Second Nibble Continue through PClIAR /: PCHAR */ AC D4 E7 AI<' 8A 73 9A AA B3 D4.§ 67 i B6 12 02 AA B9 D4 S 61 BC D5- Conver~ ~ J Next Two Bytes ~Cll Print First Nibble Print Second Nibble Return /* EXEC */ BD C2 C5 C1 CA D1 D6 D9 DE E1 09 FB 20 D4 K 31 3B b9 F8 5E A9 09 FA OF 9D 59 19 D4 ~ 11 53 53 54 D4.§ 64 D4.§ 67 E4 8A 1"B 59 E91A 38 1B Be 92 EO F8 12 93 B1 F8 32 1>6 FE FC 3C A9 8D 59 3F 00 Test for No Parameters oCall EXPR Valid Character? Get X,P Store Address in Correct Register Print 'SST?' 32 EB Get Answer Print Answer I f Yes, Set Q 40 AO ED F8 A1 D1 Jump to REG-LOAD ." > ~ .... w • • /* REGLOAl' * / rs 00 08 10 18 20 28 30 72 72 72 72 72 72 72 72 B2 B4 B6 B8 BA BC BIJ 1'6 72 72 72 72 72 A2 A4 A6 A8 AA n AC 72 AIJ 72 72 72 72 72 72 72 72 113 US B7 139 B8 IIU BF Restore Registers 72 72 72 72 72 A3 AS 1\7 A9 AB T2 All 72 AI' Continue through Interrupt t33 35 37 39 3A 43 4B 55 59 5E 60 66 68 39 3D 70 D3 iiI 93 1'8 46 91 30 93 52 42 bC 42 61' 30 INTliRRUPT * / 71 21 22 78 22 73 71J 73 73 83 73 96 73 86 73 S 116 bE FA 07 I'li foC 70 A6 if3 46 A3 B6 FS 60 A6 39 Bl 1'8 66 Al Ul 66 1\3 42 B3 1'6 42 37 CC CF 01 07 DU ES [;8 EC Set Up Return Pointer 93 I2 7C 42 80 42 83 12 86 CO Set PC to R(O) Restore R(6) Restore R(3) Restore DF and U Restore R(2) Jump to SItI Program Vector BO 1'8 77 AD UO 4 2 A6 42 B6 A3 42 B3 1'6 42 12 12 S 6A ::z ~ IN C) < Q. 04 K 37 CB K 69 9U ifE 80 Ali 04 I' 37 3B 8C 90 BF 8U AI' 04 K 3A 3B 8C 1>4 K 2E "otT- 3B EC A6 80 51J 11' 30 Al Get "From" Parameter Invalid Character? No, so Save in R(E) Get "To" Parameter Save in R(F) Get Pi llcr Byte .Finished? Yes, so Return No, so Store Byte Get "From" Parameter Invalid Character? No, so Save in R(E) Get "To" Parameter Save in R(F) Get New Location fojnished ~oving? Yes, so Return 04 38 92 4U 1'8 1'8 8U OS K 37 8C B7 fo8 73 41> III 51) 22 511 73 9U Get Locat ion Invalid Character? 63 A7 E7 73 Oll 73 2U rs 79 5U 2U Save Old Contents of Location Insert SI~J Pseudo-up 73 Save Location /* SI:MCII */ Rl'store R(3) Restore OF and 0 /* folLL */ 89 8C 81' 93 96 98 9C 91' AI U4 K 37 3B 8C 90 BE SO Ali 04 K 37 38 8C 9D BI' SU AI' D4 K 37 3B 8C D4 K 21J 3B ITc 4E 5U 1U 30 C2 Set PC to R(l) /* SIH */ 71 77 '·IOVIJ */ /* BREAK */ Skip SST if Q Reset Wait for Operator Return to Interrupted Program Go IJxecute Subroutine Save·T, U and Ill' Save R(3) and R(6) Get Interrupt Vector 37 3S 38 t- L AB AE BO B4 B7 89 110 CO C2 CS C7 • ~I En 0·1 K 37 1'0 38 BC 1'2 90 au SO 1'6 04 K 37 F9 38 8C FB 90 BF SU rr 88 FA FC 03 89 1'1' 40 08 49 AA FB OE U4 K 2E 11 38 5U 13 04 K 3A 16 CB K 69 19 EE 8U rs IE 29 09 FB 24 19 25 88 FA I'E 29 30 34 211 8B re 33 21' 18 30 8E AC 9li 34 11: 35 09 FB 27 Get "r r omll Par~mc-~c::r AE Save in R(E) Get ''To'' Parameter AI' AB 33 16 27 3A 03 Save in R(I') Reset Flags Search for Open Quote Test for End of Search Range Get Byte to be Searched For 32 2B 27 3A 1IJ AB Test for ~I:ltch No ~Iatch, so Back Up Pointer to Opell Quote Reset "Found" folag 34 BC 3A OE Set "Pound" Hag Save Loca t i on of String Increment Search Pointer Continue Search if No Close Quote 101 } ... - }E 41 46 4B 4F 52 55 57 5'" 5D 62 65 6... 6F 72 74 • BE F9 02 D4 J 11 46 4F 55 20 41 54 9C BA ec D4 K 95 D4 J 11 OD 00 D4 S 64 n}01E 8B FA 02 D4 J 11 4E 4F 54 4F 55 4E D4 J 11 OD 00 D5 4E 44 20 00 Fa AA Print Location Print CR nait until a key is pressed D4 K 37 18 3B 16 1.1. 9D BA 8DA!. 7E D4 K 95 81 D4 :f 11 84 20 2D 20 00 88 OD AA 8.1. D4 K AC 8D D4 J 11 90 20 00 92 OD AA FF 20 3B 9C 98 FF 60 3B 9F 9C }'8 20 A.A 9F D4 S 67 A2 D4 J 11 A5 20 00 17 5B FA F8 AB A.B D4 S 64 AE 8.1. FB OD 32 D9 B3 FB 05 32 DC B1 FB 02 32 EC :a:a FB 2.1. 32 F6 B,F FD 3B 32 6F 03 8.1. l'F 20 3B A.B 08 D4 S 67 OB D4 K 64 OE 8B F6 33 A.B D2 D4 J 11 D5 OD 00 D7 }01A D9 1D 30 D2 DC 8B F6 3B :::9 EO 2B E1 FB os AA Ell D4 S 61 KT }O iB 2D 30 8D FC 9D ?C 30 D2 BB F'b 1B FB 20 D2 oe 00 BD ~i 33 FA FD AA FE 3OE4 l!OO 05 OA OD 10 Return 1} */ 17 1C 1F 22 24 28 2D Get Location Print Location Print I _ I Get Byte at Curr~nt Test for First Nibble Yes, So Space Print Space DC) /: REXAM Print OR MEJCAM Decrement Pointer Increment Pointer by 8 AD Print 'NOT FOUND' 20 46 44 00 /* 75 ·if 1'9 EC 3.1. 6F • • Set "Found one" Flag Print 'FOUND AT' A.B Location Print Space IT Byte is a valid ASCII Character, Print It Print Space Reset Flags Get new data or operation Test for OR? Backspace? Line Feed? • Space? Escape? Check for valid character? Print it Store it Test for complete byte Print CR Increment Pointer Test for First Nibble No, so backspace Print Backspace "';'. .... ~: ~ ,"."': .1.f.-' ... }1 92 BDFB 8D F6 FF D4.!! E7 D4 ~ 6? D4 ~ 11 20 2D 20 4D DA OD D4 K 95 D4 ~ 11 20 00 8D FA FB D4 .§ 64 8A fB 1B 8A FB OJ) 8A FB OB BA FD 20 BA FF 20 BD FF 50 D4 .! EA 36 3D 40 45 4.1. 40 30 28 4F D4 .§ 67 52 D4 li 64 55 BD FA 03 5.1. D4.!!11 50 OD 00 5F BD FF 5C 64 30 2B 66 BD FF 5A 6B 1D 60 BD F6 3B 70 1D 30 5.1. 7} BD FF 42 78 BD FA 03 7D BB F6 3B 81 2D B2 FB OB AA 85 D4 .§ 67 8B 30 2B 8A BB FA 02 BF 2D 30 B1 92 2D 2D 30 40 AD 1E AA 00 AA 2D */ Set Up Register Pointer Calculate Number of Register Convert Number to ASCII Print I t Print' - , Print Register Contents Print Space AB C2 M 6F 32 'bG 32 73 32 96 3B 28 3B 4F Reset Fl..ags Get New Data or Operation Test for ESC? CR? Backspace? Space? Test for Valid Character Test for Last Register Yes. So Ring Dell 3.1. 28 Print Character Store It Test for First Nibble Print CR 3D 0.5 33 4A 5A 33 7D 32 4A BA Test for Last Register Yes, So get Operation Only Test for Last Register No, So Increment Pointer to Next Full Register Location Test for First Register Yes, So Ring Bell if First Nibble Print· Backspace 32 92 5.1. Decrement Pointer to Next Full Register Word "'0 > (;) ("11 ;~.". ~ V1 • l! 96 9B A2 A6 A7 AA AC AE B3 8D 8B 8B 1B F8 • .' ~ IT 5A 38 A2 FA 03 FF 03 32 4A F6 33 AC Test for Last Register Ring Bell if Last Nibble 20 AA Print Space 30 85 lB 1 D 8B FA 03 32 5A 30 A7 /* SAVE */ B5 B8 BB BD CO C2 c8 {:9 ce Dl D6 D8 DC,. E2 E8 EA ED F1 F2 F6 F7 FC ~ 01 05 OA OD OF 15 18 1C 20 22 23 26 29 ~ 2B w e,:, < c.. D4 K 3A CB K 69 8D BE D4 K 3A 3B B8 9E 52 8D F7 33 C9 D5 FC 01 BD 89 FF 3F 33 B8 49 FB 27 3A CC FF 00 F8 10 BA BC F8 ~ B7 F8 57 A7 93 BP F8 EA AF DF 30 F7 F8 06 BO F800 AD AE D7 20.90 3A ED D3 97 BF F8 2D AF 09 FB 53 32 05 9C F6 F6 BC 09 FB 27 3A on F8 20.38 49 DF 9A FF 01 BA 3A 05 F8 00 BB 9E DF 8E DF 9D DF 8D DF 4E DF 2D 9D 3A 20 8D 3A 20 9B DF D,5 Get "From" Block Get "To" Block Calculate Length Return if Negative Length Test for end of Buffer Search for Open Quote Init. Name length, Cycle Ctr. Init. ose Subroutine Set PC to R(F) Init. Header Delay Call OSC Decrement Header Delay Set PC to RO) . Init. TX UART Subroutine Test for File Name of IS ••• . Divide #Cycle by 4 End of File Name? Yes, so pad with blanks Transmit File Name Finished File Name? Zero Checksum Transmit Starting Address Transmi t Length Transmit Data Decrement Length Finished? Transmit Checksum Return 2C 2D 2F 34 36 3A 3B 3E 40 42 43 48 4A 4B 4F 51 52 /: TX UART */ D3 AA 73 F8 10 F6 AB Ae 30 3A 8A 76 AA 2C D7 8C 3A 8B F6 E2 E2 D7 12 9B FF 00 D7 C4 C4 FF 00 D7 12 02 • Return Save Character to be Transmitted. Init. DF, Parity, Bit Ctr. Get Bit to be Transmitted Call OSC Finished? Get Parity Nop Transmit Parity Add Byte to Checksum Set DF • Transmit Stop Bit Nop Set stop Bit Transmit Second stop Bit Restore Character . 36 F4 BB 22 E2 E2 30 2C /* OSC */ 56 DF 57 33 61 59 9C F6 A1 5C F8 OD 52 5F 30 68 61 9C All B 64 F8 01 52 E2 68 FF 01 3A 68 6c 21 6D 39 72 6F 7A 30 74 72 7B 7B 74 81 32 56 77 F8 06 79 FF 01 3A 79 7D 02 30 68 Return Is the Bit a "1" . Divide Cycl e Ctr by 2 Init. Period Delay Delay one Period Decrement Cycle Gtr Al ternate Q on/orr; Return if Finished all Cycles Delay to balance half cycles Restore Period Delay . /* LOAD, VERIFY */ F8 00 C8 F8 FF BC E2 7A 92 BD F8 8F AD F8 P BF B7 F8?F A7 F8 56 AF F8 10 AS F8 00 A9 89 FF 3F C3 K 69 49 FB 27 3A 9D 22 22 AA 09 FB 53 32 B2 AF F8 02 C8 80 83 86 87 88 8D 91 94 97 9A 9D A3 A8 Load Entry Point Verify Entry Point Reset Parity Error Indicator Init. File Name Storage Ptr. Init. PLL Subroutine Init. UART Subroutine Init. Name Length Ctr. Reset Buffer Test for End of Buffer Search for Open Quote Decrement Stack Test for File of'S •••• Set Baud Rate for 1200 Baud $1 B2 B5 B7 BA BD ~ BF C3 C7 cc DO D3 D5 D9 D" .1 E2 E5 EC EF F2 °F6 F9 FD FD P 00 - 04 08 OB Or~ 12 15 18 1F 22 27 2D 2E 34 36 39 3C 3E 41 46 4B 4F 52 • F8 013 52 12 12 F8 02 BA 22 79 D7 3B B7 2A 911. 3A DF 5D 2D 09 FB 27 49 F3 311. 8E 3A c3 30 1o'D DF 5D 2D 8E 311. D5 F88F AD D4 .T 11 46 4F 55 OD 2D AA D4 r;o 67 2E 8E jA D4 J 11 OD 00 30 87 1"8 00 BB DF BE DF DF BD DF C1 r; 69 9C 311. 22 Df 5~ 1£ 9D 311. OE 8D 311. OE DF 52 9B D4 •.1 11 43 48 45 53 55 4D D5 DF 520E 2D tE 9D 311. 2E 8D 311. 2E 30 18 D4 ~ 11 45 52 52 20 l.9 4E 9E BA 8E D4 K 95 co 6F H BA 2E 32 DO D5 2E F8 10 AE 4E 44 20 00 EC AE AD 2D F7 F7 32 2D 43 4B 3F OD 00 F3 3A 3E Set Baud Rate for 300 Baud Restore Stack Init. Header Length Delay Call PLL Test for Header • E 55 Get File Name 56 Test for Close Quote 511. Test for Match 5D 5F 61 No Match, So Save File Name 64 Init. File Ptr., File Name Lensth ~~ Print 'FOUND ' 6B 6E Print File Name 70 73 76 Print CR 78 7B Go get Next File Clear Checksum Get Starting Address Get Length 7E Abort Load if Parity Error 7F Check Co~mand Flag 82 Load Data 84 Finishod? 86 811. Compare Checksums 8B 8D print 'CHECKSUM?' 8E 91 92 Return 95 Verify Data • /* RX UART */ D3 F8 22 33 30 22 3B 2C 02 08 79 5A 68 79 67 79 3B 9B 8B 02 7B D7 73 1B F4 BB F6 3D 55 30 55 Return Init. Parity Ctr., Bit Ctr. Wait for Stop Bit AB AC D7 D7 1B Get Bit Increment Parity if Bit Decrement Bit Ctr. Shift Bit into Byte Finished Byte? Get Pari.ty 76 73 8c 311. 62 Add Byte to Checksum Return Byte Set Q if Parity Error /: PLL 71 E2 36 F8 FF FE 33 21 81 21 81 30 42 11.1 82 90 01 3E 86 0 91 = */ Return Init. Cycle Ctr. Wait for Low Cycle Init. Period Delay Constant Dec. Period while flag is low Get Resultant Bit 0 32 7E Decrement Cycle Ctr. Return if done all cycles 3A 82 7E Repeat ~: ~~ CYC~~s not Done I:'~:-l·~II.. elll. f.y-:le (;1.'.". Finished? 4F 52 20 00 AA Go Compare Checksums Print 'ERROR IN ' Print Address Return .." :I» C) rs:I ~ ~ PAGE: 18 /* INPUT */ P 97 99 Wait for entry Read keyboard port 3D 97 6D AA D5 /* OUTPUT */ 9C Al A4 A9 BO B3 B8 BC Cl C5 C9 CD D1 D5 DA DD EO E6 EA EF F2 F4 FA FE 8A FF 8A 58 98 FF F8 EO 47 58 97 FF F8 20 98 FF 28 F8 F8 2E FB ED FB 01 FB 04 98 FF 88 32 28 30 F8 E1 F8 20 98 FF E3 65 30 A3 88 FA 98 7C 30 A4 20 18 E2 B7 18 E2 58 E2 EO 58 32 32 3A E1 C8 C5 B8 58 EO 3B C9 3B C5 B8 F8 20 A7 3B BO 18 3B B8 A8 D5 F4 EO C8 33 DD F8 FF A8 28 33 E6 Test for ASCII character Print character Test for end-of-screen Yes, so scroll up one line Blank bottom line Print cursor and return Test for CR? (OD) Test for Form Feed? (OC) Test for Backspace? (08) Yes, so test for beginning-of-screen Ignore backspace if cursor is at home Backspace and print cursor Clear the screen Reset the Video Display I.C. (see note) EO FC 20 A8 00 B8 • Start a new line Note: This I/O package is dependent on both the type of memory-mapped video display and the computer system itself. This package was designed to drive a video display based on-the S68047 (or MC6847). If the display is not based on this I.C., change the three bytes at P EF to E2 E2 E2. These locations, if left unchanged, will output a byte to the S68047 to reset it to the alphanumeric mode. Since both the port and the byte itself is dependent on how the user has the I.C. wired, the control byte was left blank in the listing. This I/O package assumes the video display is mapped at location EOOO. If the video board is at another location, change locations P A6, P AA, P B5, P BE, P D7, PEl, and P EC to reflect this difference. The only three locations that are system dependent are P 97, P 99, and P FO. These locations are used to drive the input and output-ports-of a Quest Super Elf. Owners of different systems should change these locations to match their requirements. • • Mike Franklin PAGE: 19 • A Comparison of Netronics and Quest: NETRONICS ilUEST Program address Work space User space I/O 0000-17FF last RAM page 1800-RS232 - out Q in EF4 0000-29FF 2AOO-2BFF 2COO-RS232 - out Q in EF3 ARRAYS STRINGS MATHAMATI CS - format line I range 1inel ength Execution mode Serial Baud rate - unlimited - any combination of characters - none - 26 A(exp) - Z(exp) max DIM 255 - 26 A$ - Z$ - Reverse Polish Notation - Scientific notation + 8 digit - Floating point ~ 8 digit mantissa and 2 digit exponenti~l value - normal - 0 to 65535 - 72 cha ract ers - direct - program (with line I) to 300 - identical or eqa1valent commands in both languages REM ClS Cli NEW RUN PRINT or PR END lET GO TO IF u , . ,IUEN - ,26 - A-Z - unlimited- - any combi nati on of characters terminated with $ - 72 characters max BASIC COMMAND SET • l7J 2Pl "Full Basic" , GENERAL Variables • 24 DUby Road Acton, Ontario - clean screen - clear data - clear program area - 95 characters max - Floating part ~ 0.17 E38 5 digit mantissa - Interger ~ 2147483648 - 1 to 65534, 65535 is auto "END" - 95 characters - direct - program (with line I) to +3000 PAGE: 20 INPUT LIST GOSUB-RETURN FOR-STEP-NEXT PEEK POKE BYTE (MEM) SAVE LOAD DATA ] READ RESTORE TOG (F II MODE) RND TAB - input data form keyboard - calculate available program space cassette programme save cassette programme load load and read data string - resets data pOinter sets math funct ion random number generator cursor control • - + -/* math operators -)(= math comparitors SIN, COS, TAN, SQUARE, absolute value, LOG, INTERGER Unique Netronics Commands DEVICE 0-3 SET K, P, Q EXAM EXCL INPORT OUTPORT STOP CTL HELP - selects I/O device select serial baud rate list all variables in use delete variable from program input hex data via ports 1-7 output hex data via ports 1-7 programab1e break point control-cursor command list command set - run from selected line # ARRAY cassette save data only cassette load data only define user space start location prints address of end of program prints address of end of data programable delay print ASCII character returns value of ASCII characeters in string returns # of ASCII characters in string• • Unique Quest Commands RUN (expr) DIM (var) DSAVE DLOAD DFUS EOP EOD WAIT CHRS ASC (string) LEN II . •."continued on Page: 52 • Bill Eckel 7711 So 73 Avenue Omaha, Nebraska 68128 • • PAGE: 21 ROLL OVER HEX WHILE LOADING I am very limited in my programing experience. Never-the-less I am slowly learning. Your request for members to share their program~no matter how small they ar~because others will learn by them and eventually be able to submit their own or even improve upon themJis very true as seen by modifications to members programs already submitted by others. This is the case with me. In Ispo Facto #9 on page 9, Tom Jones submitted a little program on entering data with a rollover effect on the hex displays before pushing the input key. Although I have the Elf II with monitor system, I have found this program very useful. It will tell you if you depressed your keys completely or if the wrong information got entered before you load it into memory. I modified this program SO that is may be entered on page one and load on any page in memory. Address Code Mneumonics 00 F8 02 03 BF F8 LDI (set high address of page to loade (should be 00 if 1st page) PHI F LDI (set low starting address of area to load • If on page 1, must be 05 06 07 08 09 OA OC OD OE 10 12 AF EF 6C 64 2F 3F 07 6C 64 37 OE 30 06 STK i f set for page 1 .!1.) PLO SEX INP OOT DEC BN4 IMP OUT B4 BR F F 4 4 X 4 4 Address 01 will be the high address of the page to load. Example: 00 for page 1, Q! for page 2, etc. Address 04 will be 00 if loading on any page but 1. If loading on page 1 (first 256 bytes), address 04 must be 11. After loading display and appear to shift to left. Pushing input will load data into memory starting at the address sent into the program. If program is set to load on page one (address 01 is 00 and address 04 is 12), after loading, reset computer and load the first 12 bytes as normal. -Perhaps some one can take this program and incorporate it with some existing monitor systems . • SOFTWARE FOR THE ETI 2708 EPROM PROGRAMMER PAGE: 22 B. Murphy 102 McCraney St. Oa kv ill e, On t • Some of you may have considered building the EPROM programmer that was written up in the December 1978 issue of ETI but hesitated due to the lack of software. This article solves the 1802 software problem for you. The progr~ to run the EPROM programmer is shown in listing 1--all 60 hex b yt e S 0 fit. • HOW IT WORKS Since the ETI programmer was designed to be a "universal" 2708 prog r-amme r , it uses a 300 BPS serial interface. The majority of the program involves serializing the data via the Q line. HOW TO RU~ THE PROGRAM Set up the EPROM programmer UART for 8 data bits,no parity and 1 stop bit. Having connected the programmer via serial 29 mao loop interface, serial RS232 interface, or just a 4050 bUffer, key in the program on any memory page of the 1802. Next, load the 1K of data you want to program in any 4 consecutive memory pages. Call the program using R3 as the program counter. If you want, you can use RO as the program counter by changing location 1 to a 90 and location 3e to a DO. Once running,the program expects you to enter the page number where the data to be programmed resides. Key in the page number,hold down the reset button down until the EPROM programmer is powered up. Next, hit the" I" key and go for supper •.• i t takeS about 50 minutes to program the 2708 at 300 bps! POSSIBhE ENHANCEMENTS You could speed things up by increasing the interface speed to 1200 or 2490 BPS. This could be done by re-adjusting the 555 timer to run at 1200x16 Hz or 2400X16 Hz respectively. The speed constant at .location 52 would also have to be changed. If you are only programming 256 bytes of information you need not program all 1024 locations. To do this, simply change location 21 to a • 01. Well, thats the software story--the ETI article is very complete on the hardware side. Remember that if you decide to build the programmer do not skimp on the capacitors. You should only use high quality mylar capacitors in the timing circuits. Good luck! References: 1. EPROM Programmer, Electronics Today, December 1978, p. 29 2. An RS232 Interface, IPSO FACTO issue 5, p , 4 j • • LOCN OBJ CODE STMT 1 2 SOURCE STATEMENT 1802 VER 1.7A ............................................................ THIS PROGRAM IS DESIGNED TO PROGRAM A EPROM VIA THE Cil LINE. 3 't 5 6 REGISTER USAGE: RO-R1-FREE R2-STACK R3-MAINL·INE P. C. R7-TX suaa P. C. R8. 0-. OF TIMES TO PGM R8.1-WORK R9-ADDR OF DATA Rl0-FREE R11. O-WORK R12-DELAV WORK R13-TX sueR WORK Rl't-BIT COUNTER R15-DELAV P. C. EQU SEX GHI PHI PHI PHI LDI PLO LDI PHI LDI PLO LDI PLO SEQ BN" B't INP't OUT't PHI LDI PLO LDI PLO PLO LDI PHI GHI PHI LOX OUT." SEJ> DEC GLO BNZ GHI BNZ LDI aOOFF R2 R3 R7 R13 R15 A.OCSTACK) R2 A.l(STACK) R2 A.OCTXENT) R7 A. DC DELAV) R15 •• •• •• •• •• •• .• ** •• •. •• •• •• 7 8 9 • 0000 0000 0001 0002 0003 000't 0005 0007 0008 OOOA 0008 0000 OOOE 0010 0011 0012 o 01't 0016 0017 0018 0019 001B 001C DOlE 001F 0020 0022 0023 002't 0025 0026 0027 0028 0029 002A 002C 0020 002F E2 93 B7 SO OF F8FF A2 F800 B2 F83F A7 F857 AF 7B 3F12 371't 6C 6't B8 F87D A8 F800 A2 A9 F80" B9 98 B2 FO 6't 07 29 89 3A25 99 3A25 F8AO -DOFF .. oeN OB.I CODE 0031 0032 0033 003 .. 0036 0037 • BB 2B 8B 3A32 98 3A32 0039 28 003A 88 0039 3A1C 003D O(l 10 11 12 13 1't 15 16 17 18 19 20 21 STACK 22 23 2't 25 26 27 28 29 30 31 32 33 3't 35 36 37 38 39 'to 'tl .. 2 't3 NEWCVC: 't .. 't5 .. 6 't7 't8 't9 50 NXBVTE: 51 52 53 5 .. 55 56 57 58 STMT STACK ADDR STACK IS R2 GET CURRENT PAGE SET UP R7 SET UP R13 SET UP R15 SET UP THE STACK •• SET UP TX ROUTINE • • SET UP DELAV TO MARK MODE SET UP AND READ PAGE WHERE DATA IS. SAVE IT •• :It OF TIMES TO PGM 2708 •• SAVE AWAV • . CLEAR OUT •• STACK AND •• SIZE. •• SIZE OF PGM AREA • • IS 1K BVTES. • • ADDR OF RAM AREA. • • SET UP IN R2. • . GET DATA BVTE. • . DISPLAV 8: INC R2. •. CALL OUTPUT ROUT. • • DEC BVTE COUNT. •• GET IT. •• ARE WE DONE? •. NO·CHECK HI BVTE • • CHECK AGAIN • . SET UP LOOP • • Q R8 125 R8 o R2 R9 't R9 R8 R2 R7 R9 R9 NXBVTE R9 NXBVTE :aAO SOURCE STATEMENT 59 60 TIMOUT: 61 62 63 6 .. 65 66 67 68 69 PAGE: 23 1802 VER 1.7A PHI DEC GLO BNZ GHI eN'Z Rl1 Rll Rll TIMOUT Rll TIMOUT •. TO RUN 1 SEC ..• DEC GLO BNZ IDL R8 R8 NEWCVC .• OF TIMES TO PGM •• DONE? •• DONE ? •• ARE WE DONE •. JUST SIr THERE PAGE: 24 LOCN OBJ CODE 003E 03 003F AD 00't0 F808 00~2 AE 00~3 7A OO~~ OF 00~5 80 00~6 76 00~7 AD 00~8 CF 00~9 7A OO'tA 38 00't8 7B OO~C OF OO~D 2E OO~E 8E o O'~F 3A~5 0051 7B 0052 OF 0053 OF OOS~ 303E 0056 07 0057 F83E 0059 005A OOSB OOSC OOSE AC 2C 8C 3ASA 3056 0060 70 71 72 73 7't 75 76 77 78 79 80 81 82 83 PAGE 3 • OUTPUT ROUTINE REGISTER USAGE : R15-PC FOR DELAY SUBR COUNTER R13-CHAR INPUT R12-LOOP COUNTER R7-PC FOR TXENT Rl~-BIT .... """ 8~ TXRTN: 85 TXENT: 86 87 88 89 90 TXSHIFT 91 92 93 9~ 95 96 97 98 99 100 101 102 103 10~ 105 106 107 108 109 110 111 112 113 1802 VER 1.7A SOURCE STATEMENT STMT DLYRTN: DELAY: .• NOTE: DECR: 11~ 115 116 INPUTS: D-DATA TO BE SENT OUTPUTS: Q LINE •.• SERXAL . " "" . " " . " " " " "" SEP R3 OUT " ,," " " " ",,"" " " " " " " " " " " " " " """""""",,"" """"" RETURN TO CALLER SAVE CHAR XN 0 8 BITS PER CHARACTER NUMBER OF BXTS TO GO SET START BIT DELAY ONE BXT TXME GET BXTS TXLL NOW GET HXGH BXT XNTO OF SAVE SHXFTED VALUE TEST IF BXT WAS THERE NO... SO SET SPACE SKIP THE SEQ SET TO MARK DELAY ONE BIT TXME NUMBER OF BXTS TO GO XNTO 0 BRA IF NOT DONE YET SET STOP BXT (MARK) DELAY FOR 1 STOP BIT ANOTHER ONE..• RETURN TO CALLER PLO LDI PLO REQ SEP GLO SHRC PLO LSDF REQ SKP SEQ SEP DEC GLO BNZ SEQ SEP SEP BR R13 8 SEP LOX ABOVE USE PLO DEC GLO BNZ BR R7 BACK UP 1 LEVEL 62 1 BXT TIME AT lMGHZ VALUE WORKS ONLY FOR 1 MHZ CLOCK HEX 71 FOR A 1. 795 MHZ CLOCK R12 SAVE AWAY R12 COUNT DOWN R12 RESULT INTO 0 DECR DONE ? DLYRTN RETURN TO CALLER Rl~ R15 R13 R13 R15 Rl~ Rl~ TXSHXFT R15 R15 TXRTN • END o DXAGNOSTICS GENERATED 32 SYMBOLS SYMBOL TABLE: STACK OOFF TXRTN 003E DELAY 0057 NEWCYC TXENT DECR 001C 003F 005A Dear Bernie: NXBYTE TXSHIFT 0025 DOltS TXMOUT DLYRTN 0032 0056 LN. Shepard, 903 12th se •• Huntsville, Tx. USA 77340 . I surely do enjoy IPSO FACTO. I have an ELF II. Is anybody else havlng trouble ~ettin~ Netronics disassembler to load? Mine won't l~ad and Netronics refuses to answer my requests to re-record. Looks llke I have been had! Keep up the ~ood work. (Eu~ene: . thHope someone out there can help. Have you checked the ln case ere is a second file/copy? -Editor) tape PAGE: 25 • Some Thoughts on Device-independent I/O -----------------------~---------------- Volker Raab Ramtenvy 30 DK8581 Nimtofte Denmark In issue 12, Wayne Bowdish presented a fine article about deviceindependent i/o with just one mistake. It's the same mistake that most of us software people, including myself, make most of the time -- he is aiming far too high. Frankly, I must admit that I rather like his ideas, but we must not forget that our aim should be a powerful, but TINY i/o system. What Wayne does suggest is an essential part of an operating system. Of course, no one can suggest any meaningful future software systems without an operating system in mind. I feel that we should not invent an operating system in bits and pieces, and am not sure that the time has come to decide on THE 1802 operating system. On the other hand, Jim Howell has convinced me that an 1802 operating system should be a TINY UNIX system. I would like Wayne to discuss his ideas with Jim before he gets too far. There are, however, some principles I want to add to the discussion: 1. About operating systems. • Any system should be a tiny system, meaning that it should be based on a suitable collection of simple (but powerful) ideas . 2. Files and Directories. Files can be placed anywhere, in RAM or PROM (must be a read-only file obviously) on cassette tape or floppy disk. They may be entered sUbsequently from a keyboard or written to a printer or display (TV screen). A directory is just another file. A system directory contains all directly accessible files, i.e. the physical devices, or rather their descriptions. Another directory contains the working files, or rather their descriptions, including a reference to the physical device in case of multi-file devices. Other directories (on cassette or floppy) are updated to and from this working directory. This is one of the ideas of the UNIX system. One of its benefits is the fact that i/o handling is exactly the same thing as file handling as seen from a progam. 3. Programs. Internally, programs use references (numbers) for the files which they are using. It is the task of the operating system (or operator) to connect a logical file of a program to a meaningful file of the current directory and thereby to a meaningful physical device, before invoking the program. • 4. I/O as Seen from the Program. PAGE: 26 A file is a sequence of bytes, and is identified by a unique identification in the program. A file may be divided physically into blocks or lines, and may be addressable (byte addressable for RAM or ROM file, block addressable for a floppy disk file). • What can a program do to a file? a) read the next byte. b) write the next byte. c) increase, decrease, or set the byte counter, if the file byte addressable. d) increase, decrease, or set the block counter, if the file block addressable. e) read a block. -l- i.e. initialize a block transfer, if f) write a block. -: the file is divided into blocks. g) open a file. h) close a file. is is And that's most of it. Whether a file is buffered, queued, or nothing at all, is of no concern to the program. Example: if the program issues a read-byte, the program may immediately receive a byte from a buffer, and continue, or it will have to wait until someone types a character on the keyboard. Obviously, a program should be able to ask any file about its status, and the actual values of its byte or block counters in order to be able to manipulate them. Error recovery may require in some cases that the program provides a procedure that handles errors, but the normal situations should be: • Input: 1. Open the file (for input?) (read first block?) 2. Read all bytes one at a time. 3. Close the file. Output: 1. Open the file (for output?) 2. Write all bytes, one at a time. 3. Close the file (write last block?) Update: 1. Open the file. 2. Set the byte-counter. 3. Read a byte. 4. Decrease the byte-counter. 5. Wr i te a fi 1 e 6. Close the file. All the work should be done by a file-handler or i/o manager, i.e. blocking, waiting for transfers, and so forth. > • PAGE: 27 • THE 1/Nth DEGREE Bernie Murphy, 102 McCraney Oakville, Ont., Canada, L6H 3H6 A question by one of our readers prompted me to write this short article. His question was how to easily compute the cube root of a number using integer arithmetic a la TINY BASIC. Going back in the memory banks, I recalled that it can be shown that the Nth root of a number A can be computed by the iterative formula: X[n+1] = 1/N «n-1)Xn + A/Xn**(n-1» for a square root, we have the familiar: X[n+1] = 1/2 (Xn + A/Xn) The derivation of the above formula can be found in any good College Numerical Analysis text. • Taking Tom Crawford's article on A Tiny Basic Square Root Routine, IPSO FACTO #7, page 44 as a basis, I came up with the general solution as shown on ,the following page. Lines 1070 to 1075 evaluate Xn**(N-1) and line 1076 is the iterative formula. Some sample data values and the corresponding results as found following the program. High math strikes againl II Sample Program and Output: • 50 PR'ENTER NUMBER AND ROOT' 100 INPUT A,N 200 GOSUB 1000 300 PR'THE ';N;'TH ROOT OF ';A;' IS ';B 400 GOTO 50 1000 REM NTH ROOT ROUTINE RETURNS NTH ROOT OF A 1010 REM IN B, WORKSPACE IS C,D,T,Q 1020 IF A>1 GOTO 1050 1030 B=1 1040 RETURN 1050 B=A/182+2 1060 0=0 1070 REM COMPUTE B**N-1 1071 T=N 1072 Q=1 1073 Q=Q*B 1074 T=T-1 1075 IF T <> 1 GOTO 1073 1076 C=«N-1)*B+A/Q)/N 1077 IF (A-A/(2*B)*B*2) > B C=C+1 PAGE: 28 1078 1080 1085 1090 1100 1110 1120 1130 1140 1150 1160 REM ABOVE TO SEE IF C SHOULD BE ROUNDED UP IF B=C RETURN REM CHECK FOR OSCILLATION OF RESULT IF (B-C) =D GOTO 1130 D=C-B B=C GOTO 1070 REM PICK LARGEST OF B OR C IF B>C RETURN B=C RETURN :RUN ENTER NUMBER THE 2TH ROOT ENTER NUMBER THE 3TH ROOT ENTER NUMBER THE 2TH ROOT ENTER NUMBER THE 8TH ROOT ENTER NUMBER THE 2TH ROOT ENTER NUMBER THE 2TH ROOT ENTER NUMBER THE 3TH ROOT AND ROOT? 49,2 OF 49 IS 7 AND ROOT? 64,3 OF 64 IS 4 AND ROOT? 100,2 OF 100 IS 10 AND ROOT? 1024,8 OF 1024 IS 2 AND ROOT? 55,2 OF 55 IS 7 AND ROOT? 32767,2 OF 32T67 IS 181 AND ROOT? 27,3 OF 27 IS 3 > --_. 8K EPROM Memory Board Tom Crawford 50 Brentwood Drive Stoney Creek, Onto • • L 8G 2W 8 This printed circuit board w~s dEveloped to meet the requirement cf keeping system software (Monitor, Tiny BASIC, e t c , ) readily e v a i I (l b I € i n R0 r-! • I t i s des i g n€ d for the 4 4- pin bus u S € d wit h the Tektron TEK-1802 ml cr o-ic omp u t s r (S(:(' Figure 1), with several small modif l c a t ions. The board wi I I hold up to 8 2708 EPROM chips. Thes€ chips occupy contiguous 1K Breas in an 8K block of memory specc. The 8K block can be selected as 1 of 8 blocks in the CPUos 64K memory address space, using on-board DIP switches. The address end data lines are fully bufferEd (see the schematic, Figure 2). Power requiroments for the board are as follows: 1K l Voltage:: _. - - - - -- +5 volts - +12 volts - -1 2 volts - - - nst a l l c d -----------typical meximum typicel maximum typical maximum 7 10 44 65 34 45 8K installed ------------ mG. mao me. mi? • mao mao 350 520 270 360 mao rna. mao me. • • . • • -12V(2' . MWR • 1- T MRD I 7905 .r HlV) T I - ~ +5v~+5Y TPA tn\._I·_~ ..... ..... ..... ..... GNO~ v & J , O I X4 "::" I +~v ..... -~l> 1802 SYSTEM - 8K ROM BOARD ..... .... v ..... ..... AI V 4050 1858 07 06 05 04 I I 1/47400 rJ. 03 02 01 10 ~ 0 0 0 0 0 D [I 2708 2108 2108 DO 2708 2708 2708 2708 "'G > 18H oP'I N '" -, PAGE: 30 N N • II: o t; ILl I 8 ILl e o ILl (I) ILl ex ~ I') I') X ~ f'oo CD CD CD 0 0 0 ~~ COMPONENT LAYOUT FOR THE 8K ROM BOARD Some Thou~hts • on the Future of the 1802 Bob S I Icox 562 Forestwood Cres. Bur Iington, Onto L7L 4K3 Various speculations on the future of the 1802 (and of A.C.E) have appeared In these pages, so this Is not a new Issue. However, It seems to me that It Is a subject which cou I d st I I I stand some more thought. Below Is a letter which was sent to our treasurer. Ken Mantel 1254 E. 26th Street San Bernardino, Calif. 92404 Dear Mike Franklin, Thank you for explaining why I had not received IPSO FACTO since October. (EdltorOs note - Mike explained to him that, among other reasons, the decreasing volume of good quality articles has caused delays in the appearance of some Issues.) The problem of decreasing contributions by readers struck me, 'so I am returning a comment and suggestion. 4It PAGE: 31 • The same decline has hit the Los Angeles Elf of the Velley club!! We have not published a newsletter since last summer. At our meetings It Is clear that everyone Is moving apart as each person grows and bul Ids his own unique system. Many have pur~hased TRS-80os too, or Vlpos, or modems to connect their terminals to subscription telephone timeshare systems. Articles were getting so specialized that only one or two other members really got anything out of most of the construction articles. My interest moved to Assembly language and 2716 EPROM programming. I did a lot of work but dldnOt feel It worthwhile to write up accounts of most of It. Oral presentations of my work at meetings elicited little response. I think this phenomenon may be widespread. We watched IPSO FACTO and our Elf newsletter grow for two years. Then, when contributions fell off, we quit publishing and waited for enough material to accumulate to make a full-sized °respectableo Issue. This may be a mistake. • I think the publication should continue, with a reduced number of pages If necessary. ItOs Important to keep the lag between contribution and publication smal I. When submitted articles donOt show up quickly, authors will stop writing. So I suggest IPSO FACTO stay on a bl-monthly schedule even If It Is only 10 pages! It may experience a permanent size decrease. But If Its appearance becomes Irregular, I think It will die very quickly. I ac~nowledge my share of the gul It. I have some Ideas lOve been meaning to write up--but Just hevenOt done It. Shame on me. also want to thenk you and the rest of the IPSO FACTO steff, past and present, for your efforts. I have really enjoyed IPSO FACTO. It Is the main reason I went 1802 Instead of buying a Z-80 starter kit. Good luck, Ken Mantel In reviewing this letter, I must first acknowledge that the large gap between Issues 14 and 15 was partly the fault· of the editorial staff (It really Is hard to get around to things during December, with Christmas shopping, parties, and so forth). The points he raises, however, are as relevant to A.C.E. as to the Elf of the Valley club. Our articles have tended to become quite advanc~d and s pe c l a l ized both In the hardware and software areas, and while the response to the newsletter' has been generally good, IcanOt help wondering how much of most Issues Is really useful to most members . • PAGE: 32 A major root of these problems Is the fact that a large number of our members have never expanded their systems beyond the lK level, and so are unable to r;un the majority of the software which we have published. On the hardware side, people who do not have a technical background are often Intimidated by the amount of knowledge necessary to get the hardware projects working properly. • We have not experienced as steep a fal I-off In contributions as Mr. Mante lOs group has (knock on wood II I), but the appearance of fairly advanced articles in IPSO FACTO seems to have had the effect of Intimidating potential article writers whose projects are not on the same lofty level. This Is really a pity, because It Is precisely these more elementary-level submissions which are of use to the largest number, and which can help reduce Instead of enlarging the gap (or should I .say chasm) which seems to be appearing In the membership. On the hardware sld£, club-sponsored projects such as the standard backplane, memory boards, oo o various other items, wi II, it Is hoped, help a I argE number of our members to bui Id their systems up to the point where th~y wi I I have access to more of the material which we have publ l s he d , This Is c fairly ne cc.s s a r v development, since I do not think that the club or newsletter can be vleble for ver y long if wo c snn o t present me t c r I a I r c qu I ring at I east 8K memory without bypassing a majority of the membership. Applications for smaller s vs t om s h e vs certainly not been e xh e us r a d (one area that comes to mind is us~ of microos to control household systems and e pp t l e nc e s ) but It would bc very difficult to put together a wholE' newsletter, or even a significant portion of It dedicated solely to topics of use to systems in the lK size area. • It hasnOt boen my intention her~ to present a picture which Is ell gloom and doom. The possibi I ities for continuing success are there. We must, however, address the problems raised hare (and in Mr. MEnteiOs letter) if we wish our long-term prospects 10 continue to be favoureble. Future Meetings --------------The March 11 meeting will be held at Sheridan College at 7:30 P:M. as previously announced. However, the April 8 and May 13 meetings will be held back at our former location, the Stelco auditorium in Hamilton. These meetings will also begin at 7:30 P.M. > • PAGE: 33 • FOR SALE: A.L. V~n Caul art, 4102 Tree Top Crescent, Mississeuga, Ont., Canada. L5L 2L8 Tel: 416-828-7799 (Evenings) ASR-33 TELETYPE with Tape winder ASR-38 TELETYPE with Tape winder KSR-38 TELETYPE INTERDATA MOD 4 16 bit CPU with 32K bytes of memory together with NCR305 Cabinet, muffin fans and support rails. Ar c h l t e c r ur s of this machine is near IBM/360 f em l l v . • 1 1 30 IBM SYS/3 MOD 10 Computer System 1-5410 Processor 16K bytes 2-5440 Disk Drives (20 Meg/bytes, 10 fixed, 10 removeable) 1-5424 ~lultl-Function Card Unit t Cap eb t Iities of print/punch, interpret, merge sort, collate) 1-5413 200 LPM printer with 132 print positions 1-Set of IBM maintenance documentotlon with cart Card Cabinet for 96 col cards Wright Line Optiomedla Cabinet for disk packs Disk packs for 5440 Disk Drives Complete: Price only $20,000 Indlvidu~1 itoms can b~ neqoti3ted. Assembly Listing for COSMAC Graphics Program In response to a number of requests, we are printing here the assembly listing to the graphics program for which object code was presented in the last issue. It is hoped that this will make it easier to use, and will aid in overcoming any p~oblems which might be encountered • • . ••Continued next page PAGE: 34 THI: :.IA"I L, TI-[ t :l 3 ~ 4 4 • 5 * t, " F~LUl.dl[ HtTTCn:-.'~ , ••••• ,.(* •••• '*(.**~*******••••••••• *~* ••••••••••••••••••••••••••• ~ •••••• S~eHC'Jl INi'T INt: • 0',001O'.H rl I I':'.JC· " __J2 O,:,CI} C4CO C4;~ :}'1vlJ C-.C3 L.; Ott0;" (,,0 15[0 ~~ 05 ,;1 1-. 15 C'tCb C', C c I-a INTRPT Ai 1 : 7 Cite" C4vo C'teL r, ..'''' " ,6 1e I', ., ~v 21 .. _-----~-_.- ':'4 -. c, z; a~1- S~TUP lhHPT I ~Il HJ U~H 0111 OFH 0"" 1-" Ff/\,\ -: ,I, 041-. C'tllJ f ~ lj 1.,1·: :."I ::1 (,I, i. f- u') ,;2 "J TU'\NS t>l N= 1 ( u... ~:. rb ) 'j .36 jt ,]4,:tJ ~~ 4 i r: 0 .. :>9 ~(f C42:, c.,, ' j r;" f"b 04lJ 'J<t2r: n~ OFH MJ uC~ Ill) 05 iJCH 5 0-. <I i C4t"O "/'t l: /e M 5E FIKST OJT GF JC • ~ •••• q.c..;. ~ •.. CUK ---~--------_.'1';.< ,. ':/. ~ . U " r0 ';1 04JI. r; '1 :~ til ,? ,to :"j :"~5 'j~ C.,.j'i ~b :4 jA ( SCI. "11 '" L.I~ O,+jl, ro -J{1 04,;(,. hJ 0E J' 'J 04:Jt .. 0,.40 ---"',1 Sl T AUTI': ON 1=11 Otl- ~ L~X )Q L"'l I\CH llli OOtl . ~~l-'--IJI Ii:" r. '+ !IP 'l"t i-CJ ~~ ra:. LEX .j,,/.;; .~ '::'. 't ~ ~ 1 I'~l 05H K O-.,,~ F~ bl ::-7"'----l;:.~=~1=~;7,";~7;7--;:-;:--;;-;;-;:--;-:7':"------------ oeH SET JUMP AND ERASE UfF (-01 ~(; 6'1 :JCH ao NLT5 ,\0 b I '1 (H J5 7(, 5 Ct" tr- c '15 C t':) I:) 00 71 C':'~2 3A 5" 1flj C'154 7A 5~ F~ 0'1 ,\D 1j'."JA FJ (45ll 0:,5;) ~D O~h -'A NOHl 71> 17 7iJ I), ':·4?t- 1b FB f2 JC d" 'H62 C4c3 C'."5 7 C'ftb 05 G;'; fi '7 0;67 fO 04,,8 .:; 1 ""H FJ ·JC ,A 1C eD ? OCH Deli 1: dU C45e C i ')'J 04/;J 'j K .. 0 C4:>1 oj b5 RETURN TO HAII\ tt ts 74 )0 11.! 04 ? ,,-.4(. ~H 7I 9;J =5 Tu MAIN tr; J4 ~I AUru SET UH 1-0/ N[rUR~ ~;.4r_ n .:.---------------~--- V---------· IJ 18 • INPUT GCES INTC D .. [ 1 ~ f...~ I .. 11 "" • • $ • • JA .. 1 .:> ,j .. 0 :0 1 \~. 14 I~IU '•• .; 't .. '7 ';' 1~ I"'PUT K GUtS K .. D ? _dEaLJ.••::..... "t lj *••••••** 01H l)~ --ll ~ •••••••• $\\ • • qt: INE CURSUR 0011 NUll ~'t"'L . JUMP .. CfF RETU"N (=01 1=0/ \"0 I Lei t;','.J ,l .. Uff ~UT~ ERASE" uFF SEX IIlX ~ l' I Ul SLI JA "4 Ft it . .&1, iW SET . ~·H-I-··~--·O(t'----·_-_·· __· _ - SEF, R(lU~N TO MAiN )7 I~ *.. t* =~.~: $.4- SW~Ruur .J, r.', j bYTE -1 DCI- r "> 't CUR~CR 0=0 45 ',f.:. I. I 8 i>1 I.'J. CIII P .:It 3; ~ u ~ I-IGH (MU~~ ICCNE~S OF lhiTIA~ LURSl.~ POSITluN lS PUT IN KE~ISI~q E LO" CRDt:R AiJGillSS UF n.illAC c.i..E\SCI'. PCSi r i c., IS pur IN REGISTEK t 'j , C(EAR2, .. eY1EpAGE (()90C - ()<;Hl .Jc, Cit "C '.2 AJDR(~S I: .)/, L l.. ~ I~TEMM~PT HIGH OReCR AOgRESS CF D~MM\ LUCATION IS PJT IN RFGISTtH 7 LCo tMuER ADOKlSS LF OU~"Y LCCATll.N IS PUT 1N RL~ISTER 7 ,-I} .:, 'J CR~ER F·F 7 ,1 31 ~c~ OAI-. 001- jA II) t-lJ 15 ~:. 1 c Q,.lU ... ;~ • 73 :/.1J 2'1 n ftCCHESS ,,"Ekl SlACK ST ftqS PAGE kHEKE CL~"'.:INJS START I~ ~E ~(aD C~ "~ITleh 'At THiS'riGH CKOlh ADDhtSS LU~MAhu~ RECYCLe TJ C~N ~G~G dRANCH USED TJ AVLIC LFfPAGE ShJ~T ~~~\C~ .-:fi.IGH (jj<l)lH INHKKuPT AOO",lSl> 1 rJA fa 00 1A 07COl- ,,~lICC~' 0410 i)l, ( Or,'. fA ';41rJ 2...: ( O~ Yt',jL C40F- 0'.12 22 i ~~ S 1••(,.K Ci"t.D .~ ,o CI· 0111 01 ODti'-'-JOh ODH AC _ K .. e SET JUMP ? ON ("11 SO tR~SE OH ( .. o 1 5 RE.TURN.... Ju HAIN a(.1i K .. C ? NtTI: HIC • ,~ 04<,( ~o <;1 .. 2 ~, ~4 05 'H ,.~ 0:'10 ~s C/,71 94 .. 5 ,e uO 3A 15 i"47' ,; ,7 Cft/S lJ4 'ii. ilj "i'1 1:' .:i 1Jl lP 1:3 U4 I~ 5 L .. 6 tF c-cu: 041h 04/A (47., 0"lC. an 05 66 HI FF EE f2 5f; C.,/O E7 O',1f. 30 0', ,j) Co't 11 O'o",j ~,u 34 84 8', FO 01\ 10~ l1J III C4>o,'l Ill, III (4tA \.i4 03 05 III 113 Ill, 115 de. 1i 1 1I" 11'. oW -j/i' I' • In 124 ~4 US --1';, a...>\. C."O 04<lt C',;O C40;, 0" .. .:1 C~{;4 ._t,·,,, ",""Ji! ("0;., 1>2 ";/t A t1 I~; l:.:'t ...M 04':'l. C4,'tL; 134 1.>5 04A.l O.Al 1l'l IlC "l iii ..._,~.l .. ~. 1( la "9 fJ J5- 3M 3C H ro fQ 02 ;4 "I 1~2 3D EE f)~i.,.r:lo h" 04,jL c.., tj[; I" 'J FL. ?iA \)" C'tC~ 0" 0"1.1 l!t'; !:i) 1;;1 1:;,) c.,c: 0.,,;, C4D4 O".;~ 1,,1 "04LlI C'te!} --..1',2 c',el\ le.4 If.J':: _.l!.} 1 ~ ..:i II·; III 112 1 13 1/', 17; 11" 17'1 1'/., lI'J j Ii r; 1"~ O~ 2(, 14S 15 J 151 152 l' 3 .iG t J hl .:IA ~f: 1 ~ 't ':'1 JS 15u 1~ 1 O~ L,,) 1.1.1 1(; 7 30 EE C5 CF 1 J'1 h; 05- 10 139 140 i"l 1-92 143 1',4 145 146 14 '1 ;;A 04-':, 1.; 1 llel FO lj') --l2.i. 03 "':t,Cc-; L.'4 l~l 1',3 !.:lc D1 :lil 05 5j J" "... ')4 ,;,.)5 F2 FtJ J8 04fl U5 ;)4 C, 16 0, 4 ,\W[ A3 oalV liB .. 1. I 1 CI\LL SUBRl.oUTINE I\REAI .. ~._ K . _,._... .._... .•.•. ~ 2 1 t."" .~ CALL SUBROuTll\E AREA3 04H NeH SEF CALL SUtlRUUl INE Aql;A/t ~~ 4 /liltA4 llelv . leX SD I OcH II. ~/\l N(T6 l~ Lex 4 ARFAE CCIV SCI on 0 SI" 11J III 172 113 114 175 1IC 117 11 d 179 II. I'k II. '" 4 1 __..... ... . _.~_ _.. .. ___.- ,-_.._'''-,-_.- ..... .. .. 6 ? CALL SU ~RGUTlI\E AREA" I( . 1 ? •• CALL SUI:IR CUT 1M I\REA7 . ? "CALL 8 SU8RlJlJl I , t 1\1: AREA8 UCIV LC~ ~~-{_.,-- N'~fl, aSH K': - SLF SOl 4 CALL l.~ AR~At; b~ UOlV 5 [\l,; fG 5£P llClv ~EP e,," ~EP "OCT 5 ,- 'I 1 SU~kOUTIr.E I\REA9 RETUllf>j HJ MAL" C.ALL Sl.8RCUT 1M oaT Rf:TURI\ lC ·'11\1,.. •• ••••• c... u,............................................'•••'........'• ••••••••••••••••• •• , I K" 3 1 SC I 1£,-;-----·- 1\AU rcz T1'3E cnl\' 03H I~Gl3" ui;i--'--NCYa SEt' 4 A~CAll C. ~L18 REfUR'" Tu MI\IN If AOlu SU liFF 111<:''\1.11 r i ~iJl c~ lid .. ? F O/\Z srP Nu17 tl 10 u. lo~ 1('~ I)'.t[ 04H bW JI.MI' CAU SUBREiUUIIE AI\EA2 .. _........_"- .•._.- ._. LlCTV ;A EC O,',Eu leX HI '" "Ie III.T2 4 AR(A2 aelv AW~A7. 1'0 C'J 05 OA j0 lE HL___ .,_.(J1t- C.. f)4i :. U'. Lex ;'C.l.___2.!H r~ ~ Z Nl r i SEP 4 [;~ AREA I r~ Cl.1V lOX li~ Z :,(p [. Ncr" 7 IF JU"" SET Cr. t;Rl\ric.ti OCr otH c El ~ Y I:W l ex 04"1.1 0 /.. L:J C'tttj ell: GHI 1~~ ~o C"r:;! oeli·· l')J C4t; J5 j,J c, E l'''r·- 4 II> .. It 5 It (, 10 / O~ 02~ ",e17 Ll4 OC,t 1 LEI l~Z 0:..1,.,i.. 0't :c. C~.~r d NAUlll2 r• 1\(14 5 OHi III IIR .'lien x TO R"SET II. SEF GHI _,_._- ...... !.~.~1;J; RETURN TO 1'11\1/\ srp "'Jl2 ~---._._ CALL SUIJRUUTII\E 1M T HP 1" 1 ... 5 e~z l~J 30 t:E fu ~A NUL 13~ 34 FO :hCA 0', (e e.-.eL; 131 1;2 . IF ERASE SET CI\ BRANCH TU eRAse I tRM.CI- TO Gl IF It CALL SUllROUlll\e MASK C I1AS MASK TO MAKE NTH BIT ZE ... a 4 I ~ IT l. SFP lCX "'lila ]15 --~"""-"'." K a 1\ 1 1:1\Z I\~lJ'(;l 12. 1,0 Fli C4C5 o..e" l:HAY In 13C ut, 0.. 0"0 _.-..._.- 1n 1';5 C...,ob O'.J I Cft t:(, 1"~ 125 t2L. 05 4E 30 H l!t ") 1'06 1't1 - 114 LJ .. 04.\1 ll.t~ NOTl' 12 j 04ci 1., I\(l~ Ull Fb Ol PAG£: TO rolAIN P.~l ~[P NUF j7, 'iD ON 'aU ";-C-I--'-o At OfH 115 ~ETURN" Jli~P 50 I l.~& 1',1 E~ l lC~ E:I\l 131 1 J iJ 1 ,,'J C.. )L 0.. 1: .. tHSK OFfH StX OEH Hr SJ_R_._QJ;H SEX 7 fR Jli~P CHI on« 11" 111 rD o 1 ,A 41 t;" .. e4A) c~ 115 'Y"'ll 129 131 In SEP 31. 93 .l .\ It 1$ E~.\SE 91 4 FD Of C/.,:.,O c:. '.,!; c,,~~ Ol:H e~z 114 ',e, O',~, 5 FO .. F Sit ERASt ODH ~tt. JUMP lOd Cit Ii II In ~1 101 JA 80 OlH ~?I 11)6 ~:) ll, ~KA~E 10.1 101 li,,2 103 104 IC5 O"~" 112 Ltl He SH GLe c, '11 .. 8 99 04 !7 C'. NulC. . I l, 11'l l};.l • Fo ,)1 7A ,0 III • C4~l SlllKCUT I !IE ARH1 III PAGE: 36 -7-:C-----------,-;:-;--.------'-.-' --------luI ! >l • "1·;;2 /j'tf 2 c'.r j IU2 11ll lU4 NLTBVl lu> 1)(1- \lIb O'ir Ftl 'J I 1U1 In a It- .'II- 05' l~S 19) a[ l'd ff 08 1',2 I'J j 1'''' l'i 5 JF Id" 04~5 1>5 C"Fl aE Cit. c 1':1.. l'j I 0"f4 lOU C"fll 1''1 -.--------,C4FfJ I,') 04rE 04Ff I" 1 1,2 C15Jv C502 h3 1'14 C:iJ3 fl· l'J5 U:> c :.>()4 eI, AE AE \I' 1~" 111 1~1 HJ l';~ l<i'; 2'lC ZJJ UE 0>05 0)C6 ff lB csell .~ O~C4 AI: 05 2J2 l4 201 08 OH, 5 .xcrevr (lEH Oet' ·-a~H'7------------------------------- OFr RETUR~TC 5 CURSCR ,IRFA . 1 20~ 2C, 20~ 2.1 "1 201 ZOe ~.J9 209 O:..fJA Uf L 1-') 0'jO~ hJ :)1 2i 1 V~CL: 11 CfJIG jA UI: Ff 1< C=,lj fa '16 Zit: 0515 .~ <11 dU <1'1 22J dl 2'2 ·hl£' 0511 u~ 21 ] 1I1 2U 213 21-< 215 210 2d ~E ZI~ uS",'" ,13 21 '. ,J, 21S • OEh 204 2)5 212 1'\ 6 ? 202 ZJo E ~ .J r.. • (lur 1'),;) !ill 7;1 o• OfH "REA 7 ~o '06 JA fl- .~ f l~ ~F OHA A[ ..O~ n AI: J8 RETUR~ Te CU~SCR NcrlVl liS 224 22J Ul 2a 22J 224 • *••••• (•• •••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• 2, S 225 • O~lli 2f C, It. ,)5 22,; za 2H 22" 226 0510 0>11: 0520 'loa 0,23 C525 0,20 6r 227 III 'Jti 3A 2A RETURN TO CURseR ~ •AHA4 0:>20 M 2J5 0;'2<' 05 2.,;:> .!.jb oJ,ZA If 2~1 t:?2d J5 236 231 2H 239 » l40 : 2;1 2>2 ,j't ~Jj 01: fF J I A[ fb 01 2H 2.),J -nl 4 ? hi 2',1 "~2 C~2C Z.:. ~ 052~ 2,,4 (:~2F bf fl) 1)1 Jk 3'. t:;.J« (:>J4 t'f;' 1'0 2~C; C'jj5 r;5,31 4F 2,,~ i~'J C,J J<j lJ5 (';1 CS; .... 2:;2 C j JA "r ) 251 252 253 ,5J 274 2SS ,~.., 05.::c j,~ , '.;.j J',''v ' '. u[ 261 "-_.---_. 0~4! tot. 263 OS4.'! 0544 2>~ dr t·~ 2S1 \,J" '. E fC" Cl '\1: fb QI ~541. U~ ,IV 5 t:'~4l; dE C~lt~ 2~ j os... e H. CB AI: 26;;, 201 ,;t~ C541. If .\f P5 26d 2ll .. .no ·····R·Ey·Uti'N'·'·T'O ""C'L"RSO~f-' _.....-.-.-.. -....--.- . -- ...---. OFr > kCTUR~ TU CURSCR •••• »••••••••• ',.*•• ••••••••••••••••••••••••••••••••••• t ••••••••••••••• • sue:~GUrUH AREAL • 41 GlC OFH ~ ~ A~o ~ •••••, •• ouEn---r..-( j 11'13 SCI GlG 2t2 C,41 Que OfH 5 2(,3 204 20r.j ~(J 1 U~ 01H oel- 2~ll 2',5 rut;! .. t O~H -2,-<; 2,,0 261 ---L~4 . ~ NiH 1'12 OCI- 2'.1 24b 25, c::, :h~ ". Olh 01H 2~ 'J? csrc _ _~.). 1 III ce 2~'" 2:'c ,51 AE . SU'~curl"'e AFlEA6 ' ,Itt O~ ~ 2', 'J £ 11 el H- .............. 241. 243 2...... 24:; 2/t~ 1 ARI:,A4 228 22 2JC'. 2H "32 2J3 B4 2J. '. 2JO SLBROU1'lNE ,~Cl ,,'13 ACI OEn 01H 'FL( LO I JEH' C IH FL( So F GLL HI • -'O~F'-'I----_-~"";'77E..-"'~:7"o;==;__---.....,.-------------'i IlETUR~ 1C CU~SCR OEI- PL~ OdlOEh 1N ( 0 fh SEP 5 054E lie Q5 /,t H, 05~1 .IE 05,~ (,5 r.'J .1.71 272 273 274 775 i!16 l.1f 210 21'1 05~4 iJf FU 01 oQ Q5~') j-(,J'I 21> 7 O:':Ju 05,(, AL 1-0 08 i:.H Af c~~,., u~ Ll:S 2"'0 2'iI O,lJ dt ~92 C:"u5 u~ RETURN '0 ~£f SLuRa~TIN~ •4hA) CURS~R · ·••••·••-.· . 2~o Qd'~ FC . A~EA3 jA, ,'\E 21 PLL u .l.lj3 2114 I:r15 ._ ..., ACI ••••••••• t d[ O)~4 GLL • .:~~~ (j~L~ HIlIlQlJT!N~ A R f A l ' ~~l:A2 .. ~81 f):.i~f. ~5<,1 • loO Lal f):;, ~j PAG!: 37 • .................................................................................. Od Rl:TURN .'0 CURSOR NO11";3 2 .. 3 294 ..... • .1 'U CURseR RE'URN " '- ~, s~eROUT1NE • • ~ - ' - ' MASK .............• ' t 301 0)(:,0 ~F Jill 0:';c1 .\(, 303 CS"lj 1-8 Jl il5tA "c. 71. ac Che 3)1 3-:9 3)9 HO 311 312 313 314 315 C5uL _ R •• ._._ ,I, on 307 ~l OlERC OCH 32 O':.iur 057'0 Q5/1 c) 72 'iC Jed JO<l GI-l H 310 SH C514 'iC ll5 C'j7~ UL JIJ 5tj PMI OCH 412 bj: ~ASKI (;,~I OCI- SE!' S JIlj .l16 317 31 7 iHER( • .......Ut • REGISTER f !NTL RECllliA , I O~OER HI<.H REGISllR C • C OCH OC~ .. 11 31J 314 o_ OIl- PI<I CEC GLC 05tO Jib • Lei 3u4 31l 5 30b CO~' O'h OCH "LC PLC ~ u c• 0 ? HliOH. CRD~!!. ..I\EGISUR .L._._ ..... SHIFT CLEF' HIGH C~DEA REGISTER C • D l) • C-REG. C.I kETUAI\ hfH Blf • I, OTHERS. 0 ·••• ii••••••.. ... . . . .. . . ..... . ... . . ;;; •••••· SLKkUUTI~E.OGT • •DuT 3l~ .He ~J:-:l"")"---------------"~:---:'---~-------------------------------------~-Jl~ 32" 1;) 10 iJ,+ 32,) .)~l C511 0',7" C, If. e, h; C5 66 I.E ,Ll ~2 j lP j~4 HC 0,10 1'1 AC 1·5 3A ,)0 C57f 7B tic. 325 .IlL> 32 i .l2u O~tsl 5E ;12<; 02t? 0;34 C,t:5 05:j() e,iH 05<9 Ftl 02 U(. JJI 2C 332 ~,2 ~2 ; 3< <, OjlC c~a'C 'iC .ll~ d5 u~ SEP eft H. 31.2 4 CALL MASK S~dROU'lhE MASK OEIl OC~ OCH ~lEI<U OEf- 330 Q2f! OCH lJ~LAY TIME CELAY Jer 1 .13J OCH j:)~ OtLAYl 335 3:>t 5 RETUR~ fC CUkSCR Hi 3.H JJ~ HC 1l5eA t-b 10 3 /• I ('.)':C 01. ,42 c:.. t:.J ~c. 341 C~jL ~ ... ~ 3'11 H ~C 05 .\4 eo jA ~,"3 D.. 341 (,5 <'0 Iii fl- Hd 3~~ C~ .1't'; C':.I',tJ ~",4 CC ,2 C5"", j~2 0:"'11. ,~ 3,2 3"' c)';U ~ 353 354 2C (5';1- ... _ .. _. __ . 05~ I CALL Sc.dROUflNE MASK 51:: T ler erc 37 A4 64 Ghl JA9E lJ4 05A:> 05 66 8IT TI,; o OEH 'it. 05A2 05.\4 1\ TH ::'51 CHAO I!l\l KEY2 .. Ne j!iJ C~'-1~ O:;i'lf IN~uT OFLAY2 J4~ 3~u d 10 flC CI-l:CK feR 346 35L C5·;;) wl'~ J't°'t H5 1 'J TtME tLL'Y SfF c. OCIl OCH TIME CELAY ~ITH CHECK FOR IkPUf KEY2 OCH .HOELAY3 '+ MASK CALL SU~ROUTI~l: MASK '. ---"5TT-- -ou:-----S"lT"N1H e i r TO l~ SIR SEf O[~ 5 ~(TU~~ TL ~AIN IhTEMRU:l NeUTINE . Ih Tk~1 ," . " ,- 091- KESTuME D ~EGISTE~ FRu~ IhTEkKUPT REGISTER Z IS SIAC~ r(I~TER SA~E , REGISTER Oh STACK ~RllYRN 5A~~ c REGISTERL~ ST~CK SYNC SYNC SYIIC PUT ADDRESS OF PAGE S INTO REGISTER 0 () OCH J 'J GET 2 hCP o ll~E START ADDRESS 'J o fo<CP ) 2 o hCP J RE,RSH IIXTRTfo< LCCP TIL "DISPLAY STATUS" lLw OU~MYLlJCATlO~ JUM~Y USED bU~E(;ISHR 7 '............... * ' .....................•................ ................•.......... *' • • •• CALL AMJ ~ETURN E~ll A >LP 3 C ~LL I JeH SA~E C 50 021' ·C~I---O·f~H. .- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ROUTINES p~ 51 XC GLe SlXC 06H (,bl Pf<1 GLL He LeA pd LeA lIle • .... :::s:se ; i.'''' •EX! 1M HT SAVE 0 ObH OIlH • ~.**.4* .. •'*SETUP _ _~E'-"XJ.H RESTORE 0 •• J'4~.** •• 4.*¥ •••• *~** •••• *•••• *•••••••••• *•• ~ •••••••••• *•• $~.$ S I' I LP CALL J4~ CAL L 04H R£1 051' REl SET UP REGISTEPS 4 Ahe 5 FOR CALL AND RElURII RCUllhES • C~f 4,2 4';3 ... ~4 O!H" f& qSFb.. ;ll 4), ";to O~~l o. ff A2 \,0 0002 OHI. f" uSH 451 4,J ":,'J - . _ - - _ . _ - - - . - •••• __ ..•. _* • "t r)") ""I ",2 QuG2 1J,,0J ')4 "ttl] '0',4 04 OJ 07 45 , otu< ~I~ 4('.;.) 0("';6 Fo JO 4bu 4.',7 C6Cr. 40 , 4 t . :1 1')(,;,'1.1 19 >I l2 C;:..OD 'on O<..I~ 4'4 O(.,l~ "1":' 061li CI.11 <o1d 4U C"I .. ifblU Obl(. 40 ') 0"18 ""I }t. 'ti2 "<13 4oj4 4.:15 1)4 05 ~A 3(> 08 'IF FE Fo\ ·)f ~7 fl IL 1"2:.#".. H 4111 4"2 4tJ3 4>J4 41'j ~ Ctolf l)l"t:L. H 0,,21 lJ/f cun 04 ,4 5'7 3~ 4HI. (to 4;;7 43d CG>2~ hi JF 4b I >~1:.I27 32 411 J7 3C 04 ')5 IIh 4&el 25 ".,2 'o~" ce 2(j J,(,0 O,',,2t 411 (I.J~\.. 4',2 l<', 4'/3 414 C~ ..Iv «( ~I jQ 48» 4'iC UC fA Of G" 3'. ~, 50) C'i3h E'l ~O:) 5-Jl C,,~ll F4 ~J2 ((.;'1",. :;''l 501 502 5.J3 (Jt~ ~(';4 Su3 L O~Jlt~ I', :)4 .;4 07 FD J2 JO Fo ~11 C.)--.4 d~ 5':7 0042 ";J& C""4 0",,<.. ::>1'7 510 OF 4e OB 07 C(.l.\~ .~'J ~ Cu~E. ,)'! 51 :, ~1:J S,~41- rG> ~l~ '.>10 511 (lISG fd r6 0'51 01.52 ~l-"" Cl5j .~1 1j !)4 21 Gt.~5 0.. 31 522 CI. 57 C7 5<3 06:>d HJ ~'.?'t ~~JA 32 46 C9 1-/1 bf 524 ~2 ~ ~1. ~ 0,,5C ~27 ~"):JO 06,F ;~" OlJtU '>7 G4 ,11;, ,2., flExI ~F til "~lYl LH ·ff'.l t'. nF LC It C"/Iol) , ,9 li:" S"R ~ 5<1 4 C~ CURSCR ~Ll Of ... 1>1 LCf\ Mil dEGIN LCf\ j ;,,2., 52G> I ~IR )/~ SfP ~2.'J U~ 53C 5J I LCI\ SC I 5:>2 rocG> J2 'oM 5,1. ~1 1'1 ,jj I'" G"'l S~~ 53b 531 ~ :!:: 539 54,1 0... ,,(. C"ol 53 .. 5Cj :,2 4E JO H UI :iJIo ,H 541) PUT ADDRESS OF PAGt: lIlTH 5TCl;,(0 tCvv~,,::,~ ·,···.·._·~·_·.···· _ _ w_ 1>11 •'" '" CCHMANC PUT INTO REG. 1 CAl.L SUclRCUTINE'tUKSD~ 7 ClI4MAl\O a F 1 C; Off; 7 4 ----c~Ksdll SCI 5:" 5311 53S .INPU.raF ,.? .. ~ Of ~9 INPUT PAtlCol:D niTG '1IR 1<;/) I/IoCRE~ENT "CII ESS IN II E(j • 9 C.ALL Sli6Rl.uTl f\E Cl.kSCR SHIF T RIGHT 4 11"'FS TC l.of\PAC" (;("",,,A/IoJS SH Sf!' J"( ,() fD ~exT liIIPL1 SH;REO IN "IRl7)) 9 Hl 04 31 CLLe . ') ....T· C6b~ Cool, tALL. SuallDuTl Ne Ill!';'i\ ACC STR 9 9 I"C SFI' " Cn ----c'URSCI' 7 LC" OfH SOl Pl RtGIf\ OR NKEY lrln C"ND 'JIJt.-4 CtJtJ(1 I NPUTan OF'" AuTDI I'.AUT tI 7 4 GfH 7 SO r:>f,61 ~>3 '. 7 (~ ) 534 4 Cl.j. sell. f4 ~ !! • SI;Itr &0 1""IoIT PUT IN,TO .. laUII tAll SUIl~L.hJT 1M tuRSGR 9 OfH Ul:GIN I<EYI 4 IlllNlCo ~jl ~j • 'Vril !HPIJ pL Sl'l St-L SH S"~' sa " INPUT IiO£:S 1t,lC HIRI7) i Q LEFT It T1I'ES SKU I H~ 51" :'11 51.\ ::>1> 52J ,-tJ Fa 513 '-'·"0u G-~. JO nEG I!II * 1; sex ~O.; Cb4t lilAC INPUT fRCI' lColVPAC IF AuTe GN BVP ASS CHHlCo FOR UEPRE SSb.l "tyPAIl t 0\"1 SIR 50(; 501 5il8 ~12 '.OF'; HP ::>~~ .?10 ,11 51.! sfil II, P .HI S;' R ut, ~'l 5J4 .:II 0 S'? Cr, bf' Gf I et.l LC" SCI ~03 INIT eRA!';C" If KfYP'C CE?Rl~EC tALL SUdROUTIf\E 6LI~~ c. f\~l YI SUd~CU1INE KEY 4 Illi "I< /Io,(l'Y OF" hLIG NAUI", SF.P '.o.Jr.J 513 514 :. ~,) == NlloI"l AI.TUI ~ 4', , 4" .. A~hhE~E ADD"ESS OF PAGE ",ltEKI' COpy CF tOM"'A~lC:> ceES IVIA IlE~. 9/ ') 8<, $hL 4-(; 4W c, : .. f\IhUIU AlIL 4",u U t'jb41 KEY CALL 4 1f\11 CMNC 9 CMND L: '"' ftC .N;(t: Y ~EV! C<..3G> 0037 SJ L,1# p. I 4'': 494 o ,)j~ Be "';\ 11 T£t. LONG bRANtt- '''IN CMy ~ O. .f 34 35 n .:13 4:;~ ~~5 f\ 4'n 4'.1. 'oi/7 ,,?ij soe ~,\I "4t1,;" 0L j I 06 Ll -o I" '" 470 4Tl 472 413 4700 47" "'b 47' 471; 4H jA IT J7 15 LI L\. "" 'lCI: It' ,fltf $1 ACK •• ••••• c•• , ~C"**"""*"'.,~~,!.'.•,~~'''!'''.!.''''''''''.:*' ••~'.~.!.!!,' ............... I • 46, 41. e 40" SET LP REGISTU 2 "OR ,~Alt. -1..,11 • 4bJ 464 f8 C6:" Oole j<.>l2 PH L:n PI.O 45-. 4,5 4:p 4,1 45d 4,9 400 401 01,,)1 41" '011 '012 0'.>1' STAtK OZI' STA(.I\ 02M LClt ~!i2 C6C~ 4,'J'J He .) l' 4'.~ "11 •• ij , "'S • A'.> ... >1 7 OHI tlCGIN 9 9 l;NIJCCiR tlEGII\ NEXT l\EXT COMMANO PliT INTO REG. 7 CALL SUBROuTINE CU"SOR C(,;r~MAf\C a f 1 Cfi SIORACE SPACE C~ TO BE .. II\ FNO tF STUKACE ~PA(;E IS W~SIOUEO AS bEGINNING UF CISPLAV PAlik AT liND P j\ REG. PAGE: 40 PROTO BOARD • Eugene E. Jackson 3637 Snell Ave #385 San Jose. Calif 95136 ph: 408-224-0837 Last year I published a small article in Questdata mag. in an effort to form a local 1802 club in this so-called silicon valley. I received only 3 responses from people too far away to make a meeting practical. Even though I was dissappointed with the first attempt I will be willing to have my name, address, & phone number published in IPSO FACTO with hope that there are now enough 1802 fans nearby to form a club. I like the idea of the project boards using the 44 pin buss. Quest made a design error by not buffering data befor hitting their 44 pin but this can be remedied by immediately buffering data on the interface adaptor that I will have to use before rearranging the pin assignments to yours. If one wants to get fancy, bells and lights can be added at this point for debugging purposes. May I suggest someone draw a sketch of this proposal for the next issue. I have taken considerable time to provide as much detail as possible on this project in hope that someone may wish to try it. The sound generator chip was used to test the feasibility of the control board. This interface board was really the main goal of the project! As an avid experimenter hobbiest this board provides a means of evaluating hardware and theories. The SN76477 is a bargain and a compromise and if one wants to produce more exact effects there are better more expensive ways to do it. • A large gap seems to exist between the versitile micro and the real world due to lack of standards. Until the manufacturers can get their acts together the home micro will remain just an expensive toy. There is one thing to consider as we wire our circuits, play the games and program our micros. We are evolving a new form of life. I hope some improvements can be made. While I think of it, have any members had experience relating micros with handicapped or bedridden people. I ask because this is part of the reason I got involved in electronics as a child. There is a vast resource at talent in such people if a few were willing to take the time to teach programming and theory. 1 1 1 1 get back on the project now; sorry; sometimes wander and wonder. I tend to As to the Proto Board questions, yes, several other chips and designs could accomplish the same thing but I designed this for maximum flexability with the least hardware. I think you will find • PAGE: 41 • th~ extra work well worth the effort! I have made certain important changes in the program & design that make the board easier to live with. Namely the 63 instruction (N0 + Nl) is now used to strobe data to the board. This prevents . the usual 64 output instruction from falsly strobing a D & A. I am including specific details about the board in the event you may pUblish or modify the design. The 4515 decoder was chosen so that the extra 7 output lines could be used to select notes if a 50240 chromatic tone generator is added. I have an idea how to use the Hexkeypad for 8 octave note selection by direct entry, no conversion charts necessary, but more about that some other time. The 4042 Q outputs were selected so that during a program loop that decrements a register the successive data will result in an increasing frequency. Note that 50 toggles faster than 5F. This can be inverted by replacing the 4049 buffer with a non-inverting 4050 type but be wure to switch to Q outputs on DD # 1 & 2 for active High logic. • The active High outputs of N0, Nl & TPB are combined through a diode "and gate"~ iriverted and applied to the 4515 decoder to provide the data accept strobe pulse for the 4042 latches • 1 M ohm range trim pots may be added to the common leads of the D & A outputs which also presents a minimum value when all outputs are active High. Two D & A's may be combined to form a single 256 step unit if the resistor matrix is changed but each D & A must be addressed by separate program bytes (5F + 67 = step 247 or 15 X 16 + ') 7). Once the logic & parameters have been set for the SN76477 the only thing needed is the q output trigger pulse to activate the sound. This facilitates a wide variety of user programs since once the parameters have been latched all that is needed to produce sound is the Q trigger. As you see, one doesn't really need the 1802 at all~ it mearly adds speed and variety to the sounds one wishes to produce. A few switches and a push button could do as well but much slower. The little gadget wired to pin 11 of the SN7fi477 is a homemade optoisolator. Just take an LED & a photoresistor, put them together using a bit of heat shrink tubing to exclude outside lignt and that makes a voltage dependent resistor. I use it to modulate the output level by varing Q duty cycle but it could also be used to alter some other parameter as well. Fairly fast attack/decay periods can be implememted using the optoisolator under program control. • Radio Shack supplies an excellent data sheet on the SN76477 and I have tried to design around their parameters. PAGE: 42 The program I have included is a modified version of "Four Byte Del ight" wi th an 8 Byte D & A setup sequence tacked to the beginning. It references to page 0F for the sequence tables and i ncl ud es the 63 output st robe fea tur e. It yo u wan t to refe rence some other page change the byte at 0017 to the page desired. I use page 0F because of chip 8. • The short program at 0090 is independent of the first program and can be used by itself to check out the different byte effects. Run this test program, then enter the sequence: l2,28,3C 4E,SA,60,70,8E via hexheypad using "I" key entry between bytes of course. Presto! El f becomes R2D2. Now every "I" operation produces a new sound. To checkout a new value simply enter the new byte and operate "I" again. Example: to lengthen the decay period "8E", enter "8F" and operate" I". Be sure to write down what you have entered for parameters because this simple program only shows the new entry and the resulting sound depends upon all the previous entries as well. Enter 3010 Now tr y a test of the main program. following sequences on page 0F starting at 0F00: and load the R2D2 Versus The Te lephone 0F00 0F10 0F20 0F30 0F40 12 28 3C 4E SA 60 71i'1 8E 80 50 5F 2D 20 2A 28 50 04 04 00 03 01 01 02 04 11 00 00 11 00 00 11 11 11 01 00 11 04 04 11 11 4F 8F 40 5C 5C 20 4E 2D 01 01i'1 00 03 03 00 00 06 F0 00 00 F0 F0 00 00 11 08 00 0F 0F 0F 00 0F 11 • The sequence tells a little story in sound. If you have used the same component values and wired your board like mine the message will be quite plain and iS,good for a laugh. It's hard to believe that such unusually complex sounds can created using just one chip. be If no sound results from a particular sequence suspect either a "2F" inhibit has been latched or the one shot parameter is too fast for the attack period. A chart of the parameters designing a particular sound. is included to help in custom I think I will wire this circuit as a permanent part of my Elf to replace the click/buzz output of the speaker. Right now a small transistor radio with a phono jack wired to the volume pot provides my audio amp. ) • • PAGE: 43 BYTE CONTROL #84 Eugene Jackson 3637 Snell Ave., #385 San Jose, Calif., 95136 This is a control program suitable for use with the sound effects chip, the SN76477. Included in this article is the circuit and program for my 44 pin experimentor's board. The board incorporates a small Super Strip to accomodate any configuration of IC or parts. All inputs and outputs are tied to Molex type pins to facilitate patching via small jumpers to this strip. This way, the user can assign functions of hardware. The board could include 8 more D/A converters but space didn't permit. Rather than flowcharts, the listings have been presented with a number of symbols. Underlined bytes are relative jumps with an arrow indicating direction. The numbers indicate the LSD of the jump address. A bracket under a byte indicates a byte altered within the program 0072 • 85 B3 Save LR5 (pause) in HR3 (slow p.) that can be modified to produce other effects . I like to start programs at 0010 to leave room for expansion, so be sure to use '30 10' for access. An end-of-page halt at 0082 provides a gate to some other program. Program Narrative: The program starts at location 0010, occupies a half-page of memory, and takes data sequentially from tables on page OF. These tables preset 8 D/A converters and very 0 on and off duty cycles. The D & A and 0 outputs set parameters on an experimental 44-pin expansion board. Parameters can be defined as logic levels, D to R or D to C values on a Super Strip socket. 0 functions as an overall output level control and trigger. • The table location on page OF is selected via keypad entry and is displayed on the hex D output. Upon operation of the 'I'key, the program jumps to the selected location and displays the first 8 bytes from the table in sequence. This sets and latches each D/A converter on the '64' instruction. The program then looks at the following data in 4 byte sections. The first byte of this data is displayed on the hex display. If 00 is encountered here, the program returns for a new location to be specified. The second byte sets the number of repetitions, and the third sets 0->1 time and pause duration. The fourth sets 0->0 time and pause. If, for example, data continues for sixteen bytes, four separate sequences will occur with new data displayed with each four-byte set. Upon PAGE: 44 completion of the sequences (00 detected), the program returns to display the last location selected. This enables the same sequence to be repeated by just operating the 'I' key. If a new table is desired, merely enter the location and push 'I'. Any number of separate functions or devices can be software controlled using this method. • Program Listing: Comments Set RB.1, RC.O, RD.1 to 00 Define insert point in RD.O Define work page in RA.1 Access to RA.O for location insert Set index pointing to data in RD 1D AA Keypad entry (loc.), display, put RA.O 1E Prevent advance of RD '1 21 3 22 Return for new entry if I : 0 Hold loop on I : 1 e 24 37~~ I : 0, now store seq# in RB.O 26 F8~AB F8 40 BC set display timer to 40 in RC.1 29 point X to data in RA 2C EA 3~ 2D 64 2B Display data, advance RA, deer. RB 1!2F 2C 9C 3A 2F Deer. timer, return if not: 0 ...8B time up, so check sequence count 33 if not = zero, reset timer, get next 34 3A ~ byte Sbr. Selects starting point on Pg OF with keypad entry. Jumps to selected location and displays the first 8 bytes in succession for (40) duration. Address 0010 14 17 1A ~ £ * Code 90 BB F8 1B F8 OF F 8 ,00, ED 6C 64 2D 3F 1D AC BD AD BA AA • The sequence # may be any value and is always followed by the 4 Byte Sbr. The timer SBR was added just to give a slow visual display of the 8 byte sequence. ~ 37 FO 32 ~ 39 64 3A 72 3B 3C A6 16 00 3 6 If. ~:: 43 72 A 1 A5 FA FO A1 11 Load current Data via RA to D If current D:OO return & display last location entry in RD, wait for new keypad entry. If current Data .NOT.: 00 (1st byte) display and advance RA to (2nd byte) Load current Data via RA to D and advance RA to (3rd byte). Copy current Data to LR6 Increment R6 by 1 to assure 01 00 does not become FF on a Dec instruction (RA on 3rd byte) Save 3rd byte in LR and LR5 and imm. D with FO to cancel the Least significant Digit and Str. in LR1 Inc R1 to assure 01 • PAGE: 45 • 85 FA OF 47 4B FE FE FE FE A5 15 Sbr. Selects 4 Byte sequwnce if .NOT.=OO and disassembles the byte into nibbles. These are restored in the original registers after being processed. 01- 004D ~4F ~ t51 55 57 ~5A ~ ~5E @ 62 64 ~67 68 6C ~6E 71 • Copy LR5 to D and AND IMM with OF to cancel the Most Sig. Digit Shift D left 4x to recover as MSD Copy to LR5 and increment R5 to assure 44 90 81 23 39 7A 7B 14 22 39 7A 7B 21 A4 A3 83 3A 51 ~ ..... 30 5B ~ 84 A2 82 3A 5E ~ ...30 68 -,. 81 3A 50t ii7B 1c? -72. Set LR4 to 00 to initialize Copy LR1 to LR3 Dec. R3 and loop until = 00 (Q=O times) If Q=O and R3=0 jump to (Q to 1) otherwise Q->O goto R4 timer Q->1 Inc R4 and copy to LR2 Dec R2 and loop until=OO (Q=1 time) if Q=O goto (Q to 1) Q->O goto R1 timer Q->1 Dec R1 and loop until = 00 if Q=O goto (Q to 1) Q->O goto pause timer now Q->1 start pause timer Sbr. If Q enters this Sbr. as 0 it leaves as a 1 and v. versa . Sbr. transfers Data through R1,2,3,4 making Q=1 or 0 decisions to achieve and incrementing Q->1 or decrementing Q->O duty cycle. DATA -08 gives short D. cycle. DATA -F7 = long duty cycle. 0072 74 78 :tt 8 23 5 93'"-3A 74 31 ..- 7A eli) 7E 26 86 32 82 2A 2A 30 3D; L.82 8A 3A ~ 00 00 00 85 Save LR5 (pause) in HR3 (slow p.) Dec R3 and loop until=OO (p. timer) If Q=1 Q attack and pause is complete (3rd byte) return to get Decay and pause Dec R6 (Rep. value) if =00 goto. Pg check (Rep .NOT.=OO) then backspace RA 2 bytes and return to reinitiate Att. P. cycle. LRA .NOT.=O nto end pf pg return to start next 4 Byte sequence End of Page now Halt Sbr. determines pause time, repeat sequence and end of page. • * sequences may be speeded up by shortening the pause timer and loading and checking LR3 . To use: Sequence all memory to 00 (90 AE BE EE 73 30 03) ------ Enter the program in memory as shown from 0010 to 0087 PAGE: 46 Enter an 8/4 byte sequence on Pg OF as shown in the the example (location OF20 to OF2B) Reset and enter a jump to the program using a 3010 Reset and run; enter 20 on the Hexpad and press "I" key. Program will jump to Of20 and do the sequence. Operating "I" upon completion of the sequence will cause a repeat provided the same Location is selected. Address 0010 14 17 1D 24 26 29 2C 2F ~ 3A 3D 40 ..2i!l 4D 51 57 5B 5E 64 68 6E "72 7A 7E 82 85 Code 90 BB AC F 8 1B AD F8 OF BA ED 6C 64 37 24 F8 08 AB F8 40 BC EA 64 2B 2C 9C 3A 8B 3A £2.. FO 32 1D 72 A6 1b 72 A1 A5 FA FO A1 85 FA OF 90 A4 81 23 83 3A 7A 30 5B 14 84 A2 22 82 3A 7A 30 68 21 81 3A 7A 30 71. 85 B3 23 26 86 32 2A 2A 30 8A 3A 36 00 00 (jQ ~ Comments BD 1 --I 1 F8 00 AA AA 2D 3F 1D - 1 1 1 1 --I Insert Point on Keyboard entry Work Pg and Loc insert Display location. 1 --I 1 1 1 1 1 1 2F 1 1 Initial D/A Set (8 Seq) D/A Set timer. Display 1st 8 bytes. 1 --I 64 1 --I 1 1 11 FE FE FE FE A5 15 A3 21 39 ~ 7B 1 1 1 Byte disassembly and restore. 1 1 --I 1 --I 1 1 Q-) 1 Q-)O Vary duty cycle. 5E 39 67 7B • 50 39 71 7B - 93 3A 74 31 3D 82 - 3D - Pause timer 1 1 1 1 1 1 1 -- 1 Backup 2 bytes end of page Halt. Register assignments: HRA LRA LRB HRC LR1 LR2 LR3 LR4 LR1 LR5 LR6 WORK REG LOCATION INSERT POINT D/A SETUP SEQUENCES D/A HOLD AND DISPLAY TIME INITIAL VALUE SCRATCH FOR Q ON DURATION SCRATCH FOR Q OFF DURATION SCRATCH FOR A AND D VALUES ATTACK OR DECAY VALUE SAVE PAUSE VALUE SAVE REPEAT VALUE EXAMPLE OF A SEQUENCE: (Noise and one shot 1 3 pauses) • PAGE: 47 • --> Initial display sequence 12 22 38 40 50 61 7A 86 OF20 --> AA 02 86 42 OF28 (PRESETS 8 D/A'S) 0 TRIGGER OUTPUT I I I I I I I I : :---------0=0 (pause on 0=0) I 1----------0->0 dur (decay speed) :------------0=1 dur (pause on 0=1) -------------0->1 dur (attack speed) ----------------2 repeats (3 cycles total) Note: 00 here causes pgm to return -------------------Index Byte (can be used to alter the effect) (All FF on page OF will take about 28.6 hours to complete 256-8 = 248 bytes divided by 4 = 62 seq * 256 rep *6.5 sec =103,168 seconds!) 00/1 ENVELOPE SELECT: LOGIC INPUTS --------------------( Byte • (4 ) II) Data Pin 28 10 12 14 16 0 0 1 1 (2) (1) Pin Pin 3 0 1 0 1 VCO One shot Mixer VCO/Act External N input 0012 MIXER SELECT: ----------~------- (4 ) (2) Data Pin 27 Pin 25 PIN 26 20 21 22 23 24 25 26 27 0 0 0 0 1 1 1 1 0 0 1 0 ( Byte 11) 1 0 0 1 1 (8 ) (1) 1 0 1 0 1 0 1 Pin 22 VCO SLF N 1 = INT O=EX VCO/N SLF/N SLF/VCO/N SLF/VCO INHIBIT Parameter Test Program: • 0000 07 OF 7A E2 6C 64 22 3F 00 7B F8 FF B5 25 95 3A OB 37 08 30 00 Display keypad entry 0->1 Pause on 1=1 Return on 1=0 Example: If on the keyboard a 36 is output, D/A 113 is selected and latched to level 6. ~ /[\ Tb I ... ,to ... f~'PNI (.fl ""LIAES 'iZEIJ) 1'1 AANCi-!. OF- ,~To o:roOES ~Ss.1> 'TO tAs.vEf>J; tt~ DlI'IATS rtLo f-I\ c:.o""g~ '" ~f>J 7H! &.ADPEJl. Ou.Tf'u..T e: (REVEto!.£. !noPES t.F ~ ~S ENA8&£.P t U~ Cl. ~1A't~ 1JoJST~AJ») piA ~'KA. La l~ ,If- I} It. QIf- Dy. p~ ~l e~ \/ \'\.'Jo~lf,"" iii i i i ( Do Q Pitt I 1.0 " D) / r ,., Il. . , '\c ~ 'f S-" iii '1 ,) '''' ,) C\ iii /0 II 1>1> :: ~rm~ tL iii o/A e N1. C%C",rr SELECTs"'! pIA TO ~E. &.4TU1EI) oN 1>/A ". M PlA))IIt , . OJ I>~Crrr1tL. W,,"UtEP 1t) PJ"",-rs DI(#-:tT1U. To D£vu:.£ ~Ec.T£D· ( .) _ _ _..... ~I~~Sf. ~" "~"'3''- rll/~T: T"EM.S'.~ ItOS-O To -.0"'''~R6L.E (w~* I>/~ 7D ICE. c, ~"',. "tV~1.0c;. L"Tt.t+EI> '1N'U.T'S ("yo) o < To 9CApu> (OllIESltoT) /4 TO I OF If,) \.. ut'TC." t OlA't""''' L-£Jo' U-%NM ~f 1 tsJ Q L EN~e. c.~T(.H F~ lt~'$" 4515 .::T /)/,. 1 1>' ,1"1 I)' ,2. co +S'"v 4042 wit 1.A-TUf-9) \/ \/ \/ \I 1 (!No GlI $IT PI p", p~ "'.,. 1., '\.~py. a. "btl- o«.\"rl'u.T- 'I. f9 gl I!.I 6"1. '0 .. Cl~ 1\ ItO SO ""W~ ~ Pr> /1- PI> " , 81 \/ ,4. JS()~ ~N I~ sTEPS) 7't) .,.. ElL......~E: 3~ TNS"tIltU.c:.'tt.O IlJ &.ATt~ES #3 To A VAL"'E O~ +,.. DO ~,,""7~ cmc. •. PlI * • • • », Oc, »~ p&I- u.n... t.Eltp~ BYTE CONTROL * 84 • • • BYTE. CONTROL 1tS4 19~1' TO OTHER 4042 QUAD LATCHES 't4 TO 8 TO SN76477 ANALOG CONTROL Jf\ OIP TO AUDIO AMP. D/A#3 14 "N.C. .-t. ~B!T B .... 4 ~ ~ .... I -'0/0#2 1M YIh 0/liII:4 :iJ .r-I 20") SLF lut... - 21 ,..-------f22 lut+ DIGITAL TO DIGITAL LATCH OIPf/:2 TO 9176477 LOGIC J ~~~ .5ut r8 ...... DECAY • OOIlNT L7 Y:j:~}Q4042 ~25 DA~8 - 1ONE SHOT NOISEr t:L J FlLT.L 24 • 5 1---~--+-<DA4#6 - D* - 25 A _--II DIGITALTODIGITAL LATCH 01Pf¢1 TO SN76477 LOGIC ~I t:j:~}Q i I :lYl< NSa.. _ EXTIINT 4 ~ MIXER EXT - 0/0#1 .002 r-t IiI I -'- 6 23 :tr 16 141374 1 *.001 -:!:- I 4042:tr 16 !i!f - - -'- ? 24 .-128 eN. sa.2 si~Y I .... /\/\/\/\ BIT , 8· 4 .... 2 I, FROMD0/J:2 SN76477 810'2 4515 21 DECODER I ), /\ /\ FROM D8 4050 3 D5 BUFFER 12 D4 04 4049 INVERTER DI ~ ~ I .... D~ -- F\ BITI248 '., 23 D7 ' Q 10K & & ~ ~ '" /\ HI NO TPB- ,.. --- - /\/\/\/\ D7D6D5D4 D4D3D2*, if\1t\1f\ ""0 » " C') rq D3D11DI DO .z= 1.0 PAGE: 50 MI NlJ'l'.l!:~; 01" MEETING - NOV. I.'J) , 19'(9. Mike Franklin Eugene and Anthony Tekatch and John Myszkowski prsented new products from Tektron for the 1802. Eugene presented a positive reportof the acceptance by industry of the 1802. and highlighted some of the remote sensine; and multi-processor controlling application currently under development. Anthony demonstrated the prototype of the NS57109 Number Oriented Microprocessor (NOM Dec,78, Jan 79 Radio Electronics) and John presented his Mc6847 colour video board proto-type. El1gene also presented his company's versatile EPROM programmer. The Executive were directed during the business portion of the meeting, to investigate methods or incorporation of the club, and to review alternatives, such as liability insurance, and to report the results at the next meeting. The club members in attendance endorsed the ACE hardware proposal and buss pin assignment, with further discussion to be held at the D~cember meeting. MINUTES OF MEETING - DEC. 11, 1979. This meeting was devoted to club business, the subject of club incorporation and the hardware project. Mike Franklin presented a review of information supplied by Netronics on new products to be introduced soon. 'rhese products include a 10 slot 86 pin expansion board, an Epromer, Eprom board, A-D, D-A board and new software support. With active interest evident from various manufacturers in the production of more 1802 products, the club discussed the merit of producing competing products, trying to establish standards in clock frequency, monitor location, and I/O conventions. The club formally adopted the 44 pin buss and the ACE buss pin assignment as the club __ standard, see Ipso Facto #14, and the use of a CPU clock rate of 1.758Mhz, derived from a standard colour burst crystal, and the use of a regulated buss for board design. aSSign~ To facilitate other systems, each hardware board will have the provision for pin ment changes by the use of two pads,with a removable strip between, on each buss lead at the edge connector. By removing the strip, users will be able to easily jumper the leads to any pin assignment desired. The club was directed to produce a 10 slot backplane, with buffering between slots 1 and 2 for data, address, timing and MRD and MWR leads to facilitate system expansion. A system interconnect from Netronics to ACE buss will also be given proiority. Two boards are already proto typed and debuggedan 8K Eprom board and a wire wrap board. A 16k 2114 RAM board with the Mc6847 colour video circuit on board is currently being debugged. Boards in design include a Kansas City Digital Cassette interface, Real Time Clock, and dynamic RAM. Production and sale is expected to begin in the spring. All boards will be sold etched, drilled and plated through, with gold edge connectors. No parts will be sold with the boards. On the subject of incorporation, the club directed the Executive to investigate further the insurance option, and to report the cost of insurance verse incorporation at the next meeting. MINUTES OF MEETING - JAN. 8, 1980. The president reported that liability insurance was not available at a reasonable price compared to the cost of incorporation. The Executive had examined the two options, and concluded that incorporation offer the best protection to the Executive, Editors, article Authors, and to the membership at large, should a law suit arise from slander, economic or physical damage to an individual using hardware or software writes up in ~ Ipso Facto or from the use of one of the club's boards. The Executive will continue t~ develop the requirements for incorporation, and proceed with the process them selves to minimize costs. PAGE: 51 • A third Executive member is required for incorporation, and since both the President and Treasurer occupy two poistions, a third member was required. Bernie Murphy was nominated and elected unanimously to serve for the remainder of the club year. Mike Franklin advised the members present of his intention to seek ammendment of the constitution at he annual meeting in May, to the effect that the executive be re-organized into 4 committees, an executive committee, comprising the President, past President, Secretary/Treasurer, and three members who would each represent one of the other committees- newsletter/publication, hardware/software projects, and club activities committees. Each committee would report to the Executive through their representative, and maintain their own budgets and minutes. Mike stressed the advantages of more autonomy and smaller woking units as the advantages of his proposal. Fred Plethero advised the club of his intention to seek ammendment of the constitution to change the election of the executive for specific positions to election to the executive at large, with the executive choosing their own positions. Fred maintained that in this manner, people may be more willing to run for office with the prospect of being able to do what they liked, and possibly changing positions during the year to learn new jobs and make it more interesting. Should any of the membership wish to seek ammendment of the constitution, they must advise the club of the subject of their ammendment, and have it distributed to the menbership prior to the May meeting. • Fred Feaver moved that the next meeting at Sheridan College begin at 7:30 (Feb 12) to permit more time for club discussion. The motion was approved. The topic for the night was a demonstration by Vern Lowe of AMP of Canada, a manufacturer of electrical connectors. He presented a talk on the use of industrial connectors, and answered questions on particular applcations and on problems ctbuss expansion. > 64K Decoding for Tektron Memory ------------------------------This circuit has been designed boards which only decode for 16K. Dan Carrigan to decode and enable memory The decoder enables memory in 16K blocks. The two most significant bits of the address are latched by a latch (74LS74) and decoded by the AND gates (74LSOO). • One immediate application that comes to mind is for people who own Tektron 7K memory boards. These boards only decode 16K of memory so if anyone wants to expand beyond 14K and still use the Tektron 7K memory, it can be done easily with this little circuit. > ... Continued on Page: 54 PAGE: 52 ... Continued from Page: 20 Unique Netronics Math Chip Function DEG INV IX EX LWX MS MR PI POP ROLL RAD SF 1 or 2 SL or SR SQRT TENX XM, XY YX - radians to degrees - inverse tri 9 • - I IX - E to - X natural log memory store memory reca 11 PI constant pop stack roll stack degrees to Radians set flag 1 or 2 shift left or right - multiply or divide by 10 square root raise X to ten power, MAX 7 math register date exchange raise Y to X power > • Cuddly Software: A Product Review --------------------------------- John McLaren 41 Walker Street Coorparoo, Queensland, Australia, 4151 r recently purchased CSOS and CSTP software from Cuddly Software in the United States. I was pleasantly surprised with the programs they work; they work well; they do precisely as the advertisement says they will; and the documentation is excellent. A full user manual and hex program listing are provided, with the manual giving good details of all the commands plus examples of usage. The guy (Paul) is obviously not making much money from the deal because the standard of documentation is high, with crisp reproduction the manual looks like it probably was printed using an offset printer with paper plates. Oh! Yes, as a throw-away line. I happened to mention to him that I have two Elf II's: one without a vro board for the kids, the neighbourhood, and apparently the rest of Australia, and one with a vro board which is mine! mine! mine! So guess what happens. Cuddly Software send two versions of their programs. One for a non-VIO system and one for a VIO system, and all for the same price!! That is service. • PAGE: 53 • • The CSTP (Cuddly Software Trace Program) is good. Once you accept that 8-bit hardware has limitations, then you will find that CSTP is one of the best debug aids available for 1802's. As Paul says, it turns your machine into a "super 1802" - if the program being traced (manual or automatic single step by the way) wants input, then you have to give it input, if it wants an interrupt then you have to give it an interrupt. So, set it into automatic single step, set the time for each step, and sit back to watch your program go. Lovely! The one which excites me, though, is CSOS (Cuddly Software Operating System) which is a rudimentary operating system (hereinafter denoted OS) that has great possibilities. Let's see it allows you to: add, change, delete and erase bytes in any page, and block-move data forward or backward within the entire address space(64K). It displays full and successive pages on your TV. It has 64x32, 64x64, and 64x128 resolution (if you have the memory) and allows you to run programs you enter or load behind it. • Additionally, there is a good discussion on how to alter (and by implication, design) the characters displayed on your screen if you don't happen to like them. Plus there are a few freebies in the form of patches which Cuddly Software will give you if you ask nicely. However, the beauty of OS is that it is task-driven through a task select table which can be altered (e.g. ERASE PAGE fills the page with 0 (use judiciously, please) but you could alter the function name to ZERO PAGE and relocate it within the task table). Thus, by implication, you could add your own routines (e.g. read/write totape or disk, write to printer, display graphics, jump to language, etc.) which means that you could come up with a pretty good operating system. Finally, Paul is helpful. It you can't answer the questions on his configuration sheet, just tell him what you have got in the hardware line e.g. a standard Netronics Elf II with Giant Board, etc. He does the rest. All in all, a very good package and worth the money. Editor's note: We have had other favourable comments on Cuddly well. Their address is: Cuddly Software 98 Thorndale Terrace Rochester, N.Y., 14611 > • Software as PAGE: 54 • • ... Continued from Page: 51 A7 2 D o !5 3 C 'Q6 ENO 4 !5 ENI 4 13 A6 12 D TPA II C 0 9 II 8 EN2 ENS 10 74LS74 74 LSOO 16K BLOCK ENABLE DECODING • Errata: Day of the Week Program Michael Mirsky VE3 INC 10 De Quincy Blvd. Downsview, ant. M3H 1Y5 Following are some corrections for the day of the that appeared in issue 15. week program Line 170 was omitted. It should read: 170 IF A=999 GOTO 60 Line 80 should read: 80 K=(60+(10000/(100*M)))/100 Sorry about these errors, I don't know how I let them slip by. Also, it should be pointed out that the program works because of Tiny's integer arithmetic. If full Basic, with floating point arithmetic is used, the program will have to be modified using the INT function for every division in lines 80 to 120 so that all ;ractional parts are truncated as Tiny does in division. • PAGE: 55 • • PALO ALTO TINY BASIC INTERPRETER -----------------------~-------- Robert Edwards 104 Montreal Lane Oak Ridge TN, USA 37830 The Palo Alto Tiny Basic Interpreter for the 1802 is alive and well. Now that its checked out, the subsidy on its distribution is being withdrawn. Thus the current price for a copy of the source listing is $2.00 (US), which just covers expenses. I have distributed some 70 copies of the source code to date. I would like to hear from experimenters on their success (or lack of it) with the interpreter. Also, I would like to hear from US and Canadian owners of Netronics and Quest systems who could serve as distribution centers for cassette copies of the code. This means that experimenters can send the center a quality cassette and $1.00 (for postage and package) and would receive a copy of TBI1802 on the cassette in the return mail. • SUPER ISOLATOR--NEW PRODUCr' RELEASE ESP Electronic Specialists 171 South Main St. Natick, Mass. USA 01760 IPSO FACTO has received the following new product which may be of interest to readers: announcement "Severe AC power line spikes, surges, noises and hash are prevelent in many MicroProcessor installations. Operators are plagued with unexplained crashes, memory loss and program glitches. Disks, printer and processor often interact, aggravating the problem. ELECTRONIC SPECIALISTS' recently announced SUPER ISOLATOR is designed to curb these severe electrical problems. Incorporating heavy duty surge/spike suppressors, the SUPER ISOLATOR features 3 individually dual-PI filtered 3-prong AC sockets. Equipment interactions are eliminated and disruptive/damaging line spikes and hash are controlled. The SUPER ISOLATOR can accomodate an 1875 watt load, with each socket capable of handling 1000 watts. Severe power line spike/surge and hash control is combined interaction-free operation for $79.95 (Model ISO-3)." • > with PAGE: 56 • MEMBERSHIP RENEWAL/CHANGE OF ADDRESS The dues for the new club year, September 1979 to are as follows: Canada ••••••••••••••••• $15.00 Elsewhere ••••••••••••••• $18.00 August 1980 • (Canad ian) These new rates include provision for FIRST CLASS POSTAGE which should ensure that your copy of IPSO FACTO arrives as quickly as possible. Do you have any friends? If so, they might gift subscription to IPSO FACTO. well appreciate a New members are required to pay the full dues for the current year and will receive all the IPSO FACTO issues for the current year (September 1979 to August 1980lBack issues for IPSO FACTO 1-12 are completely so1d out. I Please make cheque or postal money order payable in Canadian funds and send to: ADDRESS CHANGE Cl NEW SUBSCRIPTION o RENEWAL o D "THE ASSOCIATION OF COMPUTER EXPERIMENTERS", c/o M.E. Franklin, Treasurer, A.C.L, 24 Duby Road, ACTON, Ontario, Canada. L7J 2Pl • , ATTACH OLD MAILING LABEL HERE FOR CHANGE OF ADDRESS •