Utility Manager v5

download Utility Manager v5

of 12

Transcript of Utility Manager v5

  • 8/20/2019 Utility Manager v5

    1/26

    1

    UTILITY I/O MANAGER V5for MC6800/MIKBUG Based Microcomputers

    by D. R. SentzFebruary 28, 2016

    1. Introduction

    Over the past 2 years I developed this program for my homebrewMC6800-MIKBUG based microcomputer, to facilitate binary and textfile transfers among the following equipment;

      Kleinschmidt AN/FGC-25 teletypewriter set

      Audio Cassette Tapes ("Kansas City Standard")

      MacIntosh 512K Computer running MacTerminal 2.0

      Windows 7 PC running Tera Term 4.86, with TRENDNet TU-S9USB-to-RS232C adapter

    The program has evolved to the following four "modules";

    UTMGR5 -Text I/O between Console terminal and audio tapeTTY5 Adds output to teletype set from text bufferREADTTY600 Adds input to text buffer from teletype setREADTTY300 Adds input to text buffer from teletype set

    You load and run all three modules at once, using the fileUTMGR5_TTY5_READTTY600.OBJ.txt for 600bps console interface, orUTMGR5_TTY5_READTTY300.OBJ.txt for 300bps console interface.

    For binary data to/from audio tape, UTMGR4.OBJ is recommended.

    UTMGR5 Memory assignments (in hexadecimal);Program Memory RangeTTY5 0000-0088 variables and ASCII->Baudot tableREADTTY... 0089-00DF variables and Baudot->ASCII tableNot assigned 00E0-00F5 Available....22 bytesTTY5 00F6-00FF TTY output preface sequenceUTMGR5 0100-1AFF ASCII text buffer (6½ kbytes)READTTY... 1B00-1B8F Program code if 300 or 600 bps consoleREADTTY600 1B90-1B93 Additional code if 600bps consoleNot assigned 1B94-1BFC Available...105 bytesUTMGR5 1BFD-1F71 Program codeTTY5 1F72-1FF6 Program codeNot assigned 1FF7-1FFF Available.....9 bytesInterface PIA 8007 Part of MIKBUG Console interfaceInterface PIA 8008-800B TTY output and input interfaceInterface ACIA 8010-8011 Audio Cassette Tape interface

  • 8/20/2019 Utility Manager v5

    2/26

    2

    2. Starting Utility Manager from Windows 7 PC

    A good MIKBUG console terminal emulator for my M6800 computer isa Windows 7 PC running Tera Term 4.86, and using a TrendNet TU-S9 USB-to-RS232 adapter at the 600bps data rate.

      Attach the TrendNet TU-S9 USB-to-RS232 adapter to PC.

      Attach the RS232 cable to the TU-S9.

      Start program Tera Term v4.86 (in Start menu).

      Select serial COM3 port and then "OK".

      In the "Setup" menu, "Restore setup" TERATERM6800_72.INI.

      Turn on the M6800 microcomputer.

      Make sure the 300/600 switch on back is UP.

      Press the Reset button on the microcomputer.

    The MIKBUG asterisk should print in the Tera Term window;*

      Make sure PC keyboard is in CAPS LOCK mode

      Type the letter L;

    *L

      From the Tera Term "File" menu, select "Send File"

      Select desktop/UTMGR5_TTY5_READTTY600.OBJ.txt

    The Tera Term progress window will reach 100% and then vanishabout 20 seconds before the file transmission has completed.Just wait patiently, until the microcomputer responds with an

    asterisk;

    *L*

    Type the letter GThe utility manager program should start;

    *L*GM6800 I/O UTILITIES MANAGER? 

    Another good console terminal is the old Windows 98 Toshiba

    Satellite laptop running HyperTerminal v1.2 at 300bps. It has anRS-232C port on the back so just plug in the RS232C cabledirectly. Be sure the 300/600 switch on back of M6800 is DOWN,and load desktop/UTMGR5_TTY5_READTTY.300.txt to the M6800 usingthe MIKBUG "L" and HyperTerminal's Transfer menu "Send TextFile...".

  • 8/20/2019 Utility Manager v5

    3/26

    3

    3. Using UTILITY MANAGER3.0 Command H, PRINT COMMAND MENU

      In response to the ? prompt, type H.?H

    COMMAND MENU

    LOAD TEXT FILE FROM TERMINAL..1SEND TEXT FILE TO TERMINAL....2TELETYPE SEND OR RECEIVE......3WRITE MEMORY TO TAPE..........4READ TAPE TO MEMORY...........5TURN OFF TAPE MOTOR...........6PRINT COMMAND MENU............HEXIT TO MIKBUG................E? 

    3.1 Command 1, LOAD TEXT FILE FROM MIKBUG CONSOLE TERMINAL

    After typing the number 1, enter text using

     

    the keyboard, or  the Tera Term "Send file" command, or

      the Tera Term "paste" command.

    Note that the microcomputer does not echo the text input datawhen processing command 1. If you are using the keyboard fortext input and want to see what you are typing, open the Setupmenu, select "Terminal...", and check "local echo" before youstart typing, and then uncheck local echo before typing CTRL-D.

    In any case, after the text has been sent you must type CTRL-D

    from the keyboard to terminate the text loading process. Whenusing the "Send File" or "paste" commands you must wait untilthe Tera Term progress window vanishes before typing CTRL-D.

    The size of the text buffer is 6½ kbytes when all three programsare resident. If the text input exceeds the capacity of the textbuffer, then the microcomputer ignores the remaining text untilit encounters the CTRL-D code.

    When CTRL-D is detected, the microcomputer stores $04 in thecurrent text buffer location, reports the address of that

    location, and returns to the ? command prompt.

    Example;?1EOT LOCATION= $010EOPERATION COMPLETE?

  • 8/20/2019 Utility Manager v5

    4/26

    4

    MS Notepad is convenient and simple to use for preparing textfiles to be sent to the teletype machine via copy and pasting orvia Tera Term "Send File" command. When using just the keyboardfor text input, you can arbitrarily insert the following ASCIIcodes (in addition to CTRL-D) that will be mapped to their

    corresponding BAUDOT codes by the microcomputer;

    ASCII $00 = Null ASCII $07 = Bell ASCII $0A = Line Feed ASCII $0D = Carriage Return ASCII $12 = force LTRS mode ASCII $14 = force FIGS mode

    In command 1 only, UTILITY MANAGER always writes a to thetext buffer after detecting and writing a to the textbuffer.

    3.2 Command 2, SEND TEXT FILE TO TERMINAL

    The microcomputer outputs the text buffer to the MIKBUG consoleterminal.

    Example?2THIS IS A TESTOPERATION COMPLETE?

    3.3 Command 3, TELETYPE SEND OR RECEIVE

    Example 3.3-1: Teletype SEND?3SEND(S) OR RCV(R)?SOPERATION COMPLETE?

    The microcomputer sends a header string consisting of to theteleprinter. The microcomputer then converts the content of thetext buffer to BAUDOT code for transmission to the teleprinter,until $04 (CTRL-D) is detected. The text buffer content is not

    altered during this operation.

    Example 3.3-2 Teletype RECEIVE?3SEND(S) OR RCV(R)?RTHIS IS A TESTEOT LOCATION= $0111OPERATION COMPLETE? 

  • 8/20/2019 Utility Manager v5

    5/26

    5

    The user typed carriage return , line feed , and thetext "THIS IS A TEST" using the keyboard on the teletype machine(the paper tape reader would have worked just as well). To stopthe input process, use the following procedure to avoid mistypeson the printer;

    1. 

    turn off the printer motor2. operate the line break switch momentarily3. turn on the printer motor

    This procedure should cause the printer's response to the linebreak to be equivalent to the LTRS code response. Note that aNULL ($00) is stored in the text buffer in response to the linebreak signal, followed by the CTRL-D code ($04), resulting inthe EOT location being $0111 in the example shown above.

    UTILITY MANAGER does not append to any received fromthe teletype set. For example, from the teletypeset keyboard will store exactly as typed.

    You can skip the teletype output header string sequence, ifdesired, by exiting UTMGR5 and using MIKBUG to poke $0100 tomemory locations 1F79 and 1F7A;?E*M 1F791F79 00 011F7A F6 001F7B DF*GM6800 I/O UTILITIES MANAGER

  • 8/20/2019 Utility Manager v5

    6/26

    6

    3.4 Command 4, WRITE MEMORY TO TAPE

    UTILITY MANAGER can write the contents of the text buffer toaudio cassette tape using the "Kansas City Standard". Themicrocomputer has a tape cassette interface built according to

    my merged implementation of two articles in the March 1976 issueof BYTE Magazine;

    1. "The COMPLEAT Tape Cassette Interface" by Jack Hemenway,2. "Build the Bit Boffer" by Don Lancaster

    Compare to Figure 1 of Jack Hemenway Article, March 1976 BYTE

    It is necessary to create and maintain a standalone tapedirectory using paper and pen, or Excel spreadsheet, in order tomanage the stored files. You must enter both the starting

    address and the ending address of the data to be written to tape.UTILITY MANAGER reports the ending address of text data after ithas been input using command 1. Therefore, for text data loadedby UTILITY MANAGER, use $0100 as the starting address and thereported "EOT LOCATION" as the ending address. The EOT code $04will be the last byte written to the tape, and then the tapemotor will be turned off. Record the tape counter value for boththe beginning and end positions of the tape.

  • 8/20/2019 Utility Manager v5

    7/26

    7

    Tape Directories as of January 5, 2016-

    Example:?4START ADDRESS=?_$0100END ADDRESS=?_$037A

    POSITION TAPE, PRESS PLAY FOR READ OR RECORD FOR WRITEWHEN READY, TYPE A TO ABORT, G TO PROCEED:_GOPERATION COMPLETE? 

    PANASONIC RQ-212DAS 1ST TAPE, SIDE 2, LABELED "SEE SHEET IN BOX"

    THIS DIRECTORY WAS HANDWRITTEN ON A YELLOW SHEET- SHOULD BE IN MANILA FOLDER LABELED "uP stuff CASSETTE SOFTWARE DRIVERS"

    TAPE

    COUNTERPROGRAM NAME TYPE

    START

    ADDRESS

    END

    ADDRESSDATE UTILITY NOTES

    000-003 SHOOTING STARS BINARY 0000 0243 2/22/77 PUNCHER (MINIMUM PUNCHER DATED 2/22/77)

    020-028 SPACE VOYAGE -A BINARY 00C1 07FF 2/23/77 PUNCHER TECH. SYSTEMS CONSULTANTS (TSC)

    028-037 SPACE VOYAGE -B BINARY 0800 0FFE 2/24/77 PUNCHER ALL TSC DOCS ARE IN 3-RING BINDER037-038 RANDOM NO. ROUTINE BINARY A04A A06F 2/24/77 PUNCHER TSC

    040-058 SPACE VOYAGE BINARY00C1

    A04A

    0FFE

    A06F2/25/77 PUNCHER COMPLETE (MAY NOT BE USEABLE)

    060-079 SPACE VOYAGE REV. A BINARY00C1

    A04A

    0FFF

    A06F2/26/77 PUNCHER

    COMPLETE-USE "CORRECTED SPACE

    VOYAGE LOADER" DATED 2/26/77

    080-083 FLOATING POINT PACKAGE BINARY 0100 02FC 2/27/77 PUNCHER TSC

    085-093SCIENTIFIC FUNCTIONS

    PACKAGEBINARY 0300 08F9 3/24/77 PUNCHER TSC

    093-095TEST PROG. FOR SC.

    FUNCTIONSBINARY 0900 099C 3/24/77 PUNCHER

    TSC, USE W/ FLOATING POINT

    PACKAGE- SEE TSC DOC.

    095-098 CALCULATOR EMULATOR BINARY 0300 04FF 3/24/77 PUNCHER TSC

    100-117 MICROBASIC INTERPRETER BINARY 0020 0CA3 3/25/77 PUNCHER

    118-130 RESIDENT EDITOR BINARY 0100 09A3 7/25/77 PUNCHER SWTPC #MP-E PAPER TAPE VERSION

    131-162 RESIDENT ASSEMBLER BINARY 0088 15B6 7/25/77 PUNCHER SWTPC #MP-E PAPER TAPE VERSION168-173 4UTILITIES.OBJ TEXT 0000 0258 6/5/14 PUNCHER2 ORIGINALLY LOGGED ON QUAD SHEET

    PANASONIC RQ-212DAS 2ND TAPE, SIDE A, LABELED "BIT BOFFER 2"

    TAPE

    COUNTERPROGRAM NAME TYPE

    START

    ADDRESS

    END

    ADDRESSDATE UTILITY NOTES

    007-010 SHOOTINGSTARS BINARY 0000 0243 JAN. 7, 2015 UTMGR3 BEFORE FIX TO LAST BYTE WRITE OP

    010-013 SHOOTINGSTARS BINARY 0000 0243 JAN. 12, 2015 UTMGR3 AFTER FIX TO LAST BYTE WRITE OP

    013-016 SHOOTINGSTARS BINARY 0000 0243 JAN. 14, 2015 PUNCHER2 AFTER FIX TO LAST BYTE WRITE OP

    016-018.5 SHOOTINGSTARS BINARY 0000 0243 JAN. 15, 2015 PUNCHER2RE-TEST AFTER I'FACE REMOVED FOR

    PHOTO AND REPLACED- PASSED

    020-023 QST_MESSAGE1 TEXT 0100 037A MAY. 03, 2015 UTMGR3

    TESTING BIT BOFFER AND TAPE

    RECORDER FOR WRITE AND READ

    PASSED AFTER I UNPLUGGED

    "MICROPHONE" FOR READBACK.

    VOLUME=4 (UPDATE 3OCT2015-

    VOLUME=6 WORKS TODAY)

    023-052 RIBBON_GO_ROUND1 TEXT 0100 1AC4 4-Oct-15 UTMGR4PART 1 OF RIBBON_GO_ROUND.txt

    VOLUME=7 WORKS BETTER

    052-070 RIBBON_GO_ROUND2 TEXT 0100 0FD6 4-Oct-15 UTMGR4PART 2 OF RIBBON_GO_ROUND.txt

    VOLUME=7 WORKS BETTER

    070-071.5 UTMGR4_TTY4_READTTY_1 BINARY 0000 00FF 7-Oct-15 PUNCHER2 PART 1 OF UTMGR4…

    071.5-078 UTMGR4_TTY4_READTTY_2 BINARY 1B00 1FF6 7-Oct-15 PUNCHER2

    PART 2 OF UTMGR4… THE PROGRAM

    STARTING ADDRESS IS $1C00. USE

    MIKBUG TO LOAD 1C00 TO LOCS $A048

    AND $A049, THEN "G" TO START

    UTILITY MANAGER

  • 8/20/2019 Utility Manager v5

    8/26

    8

    3.5 Command 5, READ TAPE TO MEMORY

    If using the Panasonic RQ-212DAS tape recorder, a volume controlsetting between 5 to 7 seems to work OK. This is very loud. Youmight have to try different settings get a complete load.

    UTILITY MANAGER does not report when read errors occur duringcommand 5. When the tape spools stop, check the tape counter. Itshould match the tape counter end-value recorded in the tapedirectory. If the spools stopped prematurely there is someproblem with the audio quality, such as poor connections or toolow or too high volume setting.

    The example below was generated 03October2015 using the textfile that was written 03May2015 to the cassette tape"BitBoffer2", side A, at counter locations 020 to 023 (seedirectory on previous page):

    ?5START ADDRESS=?_$0100END ADDRESS=?_$037A

    POSITION TAPE, PRESS PLAY FOR READ OR RECORD FOR WRITEWHEN READY, TYPE A TO ABORT, G TO PROCEED:_GOPERATION COMPLETE?2

    QST QST QST - FROM RANDOM73TO ALL RADIO AMATEURS AND RTTY ENTHUSIASTS

    8 APRIL 2015 12:35PM PDST

    INSTRUCTIONS FOR PRINTING ASCII TEXT FILES ON TELETYPE-1. PREPARE MESSAGE USING MACWRITE.2. SAVE MESSAGE IN TEXT-ONLY FORMAT (FILENAME.TXT)3. RUN MACTERMINAL 2.04. TURN ON HOMEBREW MC6800 COMPUTER RUNNING MIKBUG5. MIKBUG "L", THEN SEND FILE UTMGR3.OBJ6. MIKBUG "L", THEN SEND FILE TTY3.OBJ7. MIKBUG "G"8. UTMGR COMMAND "1", THEN SEND FILE FILENAME.TXT9. WHEN MACTERMINAL CURSOR REAPPEARS, TYPE CTRL-D10.TURN ON TELETYPE SET11.UTMGR COMMAND "3" SHOULD START THE MESSAGE TRANSMISSION

    -73END MESSAGE

    OPERATION COMPLETE?

    [Update: step 11 show now be read as command "3-SEND".]

    You can check for the EOT code $04 at end of the tape loadoperation by exiting UTMGR5 and use MIKBUG M command to checklast memory location that was to be loaded from the tape. Thenjust reenter UTMGR program using the MIKBUG G command.

  • 8/20/2019 Utility Manager v5

    9/26

    9

    3.6 Command 6, TURN OFF TAPE MOTOR

    Error condition 1: If, immediately after typing "G" duringcommand 4 or 5 above, you see that the tape spools are notturning, then you most likely 1)forgot to press the Play/Record

    button before typing "G", or 2)the remote plug is not connected.

    Error Condition 2: If, during command 5, the spools continueturning and the tape counter value goes higher than it shouldfor the file being read, then there may be an audio qualityproblem.

    To recover and start over, do this;

      Press the Stop button on the tape unit.

      Reset the microcomputer to get the MIKBUG prompt.

      Enter $0C00 to memory locations $A048 and $A049.

     

    Type "G" to restart UTILITY MANAGER.  Type command "6" to clear the remote motor start signal. If

    you don't do this then the tape motor will start as soon asyou press the Play button.

      Fix the problem and then try the command again.

    3.7 Command E, EXIT TO MIKBUG

    If you use the reset button to get to MIKBUG then you have toreload the starting address of UTILITY manager to locations$A048 and $A049. I implemented this command to provide a more

    graceful transfer of control between UTILITY MANAGER and MIKBUG.If "E" is used to get to MIKBUG to do stuff that does not upsetthe integrity of the UTILITY MANAGER executable or locations$A048 and $A049, then to go back to UTILITY MANAGER just type"G" after the MIKBUG asterisk prompt.

    OPERATION COMPLETE?E*M 037A*037A 04*GM6800 I/O UTILITIES MANAGER? 

    In the example above I used "E" to go to MIKBUG and check thatthe CTRL-D code was correctly read and loaded to location $037Afrom audio tape. Then I returned to UTILITY MANAGER by typingthe MIKBUG command "G".

  • 8/20/2019 Utility Manager v5

    10/26

    10

    4.0 Additional Notes

    Conversion Table ASCII_TO_BAUDOT4.xlsx is in;

    C:Dons_Stuff/2016/February2016/UTMGR_Feb2016

    This updated table adds conversion of the ASCII hashtag ( # )character to BAUDOT H, and vice versa. Note that theAN/FGC-25 printer unit responds to H by turning off itsmotor, unless the motor STOP function has been disabled. Idisabled the function in my set, but it can be easily enabled ifdesired. The reperforator unit will print the # character on thepaper tape. See more information in my report on my AN/FGC-25teletype set.

    An SWTPC6800 microcomputer using MIKBUG should be able to loadand run this program, except that you might have to change theaddresses for the ACIA and PIA interfaces. My audio cassetteinterface uses the MEK6800D1 board's MC6850 ACIA chip. Myteletype interface uses the MEK6800D1's MC6820 user's PIA chip.See also my other reports regarding

      my homebrew MC6800 microcomputer,

      audio cassette interface, and

      teletype current loop interface

    I do not have a null modem cable for a direct connection between

    the Mac and the Win7 PC. To move text between the Mac and the PCI upload the text buffer from one, unplug its console terminalcable at the M6800 back panel, attach the other terminal's cable,and then download the text buffer. If the terminals are atdifferent data rates (300 vs. 600) then flip the data rateswitch on back panel. This worked fine for what I wanted to do,for text files up to 6½ kbytes. For example, I can print theresident assembler list file on the Apple ImageWriter printereven though I ran the assembler while using the PC as the MIKBUGconsole.

    With an earlier version of UTILITY MANAGER (UTMGR4.OBJ, butwithout loading TTY4 or READTTY), I loaded from audio tape thebinary program image of a floating point arithmetic subroutinepackage. Then I exited UTMGR4 using command "E" and downloadedthe binary image to the Win7 PC console terminal, using theMIKBUG command "P". I did the same procedure for a scientificfunctions package and their demonstration drivers. So I can nowload these math utilities to the microcomputer from the Win7 PCusing MIKBUG command "L", as well as from the audio tape.

  • 8/20/2019 Utility Manager v5

    11/26

    11

    ---

    PAGE 001 M6800 UT

    00001 NAM M6800 UTILITY MANAGER00002 OPT O,S,NOG SEE ASSEMBLER DOC.

    00004 * JUNE 13, 2014 BY DONALD R. SENTZ00005 * 1ST TESTS JAN. 2015, CORRECTIONS 11 JAN 201500006 * 15 MAY 2015 CHANGED WTERM LINE TO LDX #$010000007 * 27 FEBRUARY 2016 INCORPORATES PATCHES FROM TTY500008 * AND READTTY600- THIS VERSION IS UTMGR500009 * THIS PROGRAM IS A USER INTERFACE FOR SWITCHING00010 * AMONG MY HOMEBREW I/O UTILITIES00011 *00012 * THIS PROGRAM WAS ORIGINALLY PREPARED USING00013 * MACWRITE AND THE RESIDENT ASSEMBLER MP-E.00014 *00015 E0C8 OUT4HS EQU $E0C8 MIKBUG DISPLAY HEX SUBR.

    00016 E1AC INEEE EQU $E1AC MIKBUG CHAR.INPUT TO A REG.00017 E1D1 OUTEEE EQU $E1D1 MIKBUG CHAR OUTPUT FROM A.00018 E0D0 START EQU $E0D0 INIT (TO RESTORE ECHO-BACK)00019 E0E3 CNTRL EQU $E0E3 MIKBUG RETURN POINT00020 E07E PDATA1 EQU $E07E MIKBUG CHAR STRING PRINTER00021 8007 PIASB EQU $800700022 8010 ACIACT EQU $8010 ACIA CONTROL REGISTER00023 8011 ACIADT EQU $8011 ACIA DATA REGISTER00024 1B00 SRTTY EQU $1B00 ADDR OF READTTY600

    00026 A002 ORG $A00200027 A002 0002 BEGAD RMB 2 START ADDRESS00028 A004 0002 ENDAD RMB 2 END ADDRESS00029 A00C ORG $A00C00030 A00C 0001 XHI RMB 1 X REG HIGH

    00031 A00D 0001 XLOW RMB 1 X REG LOW00032 A042 ORG $A042 STACK POINTER00033 A042 0001 STACK RMB 100034 A048 ORG $A048 RESTART VECTOR00035 A048 0002 RESTRT RMB 2

    00037 1BFD ORG $1BFD00038 1BFD 7E 1B00 TTY JMP SRTTY LEAPFROG TO READTTY00039 1C00 ORG $1C0000040 1C00 20 52 STRT BRA UTSTRT

    00042 *RTERM- LOAD TEXT FILE FROM CONSOLE TERMINAL.00043 *POINTER STOPS INCREMENTING AT END OF BUFFER.00044 *USER MUST TYPE CTRL-D WHEN "SEND FILE" PROCESS00045 *ENDS, I.E., AFTER BLINKING MACTERMINAL

    00046 *CURSOR REAPPEARS.00047 *00048 1C02 86 3C RTERM LDA A #$3C00049 1C04 B7 8007 STA A PIASB DISABLE ECHO-BACK00050 1C07 CE 0100 LDX #$0100 START BUFFER AT ADDR $010000051 1C0A FF A002 STX BEGAD00052 1C0D BD E1AC GET JSR INEEE GET CHAR FROM CONSOLE00053 1C10 A7 00 GET2 STA A 0,X PUT CHAR TO TEXT BUFFER00054 1C12 81 04 CMP A #$4 WAS IT EOT (CTRL-D)?

  • 8/20/2019 Utility Manager v5

    12/26

    12

    ---

    PAGE 002 M6800 UT

    00055 1C14 27 0E BEQ DONE00056 1C16 8C 1AFF CPX #$1AFF ARE WE AT END OF BUFFER?00057 1C19 27 F2 BEQ GET IF SO, STAY THERE UNTIL EOT00058 1C1B 08 INX ELSE INCREMENT POINTER00059 1C1C 81 0D CMP A #$D WAS LAST CHAR A ?00060 1C1E 26 ED BNE GET IF NOT GET NEXT CHAR00061 1C20 86 0A LDA A #$A ELSE INSERT AFTER 00062 1C22 20 EC BRA GET200063 1C24 86 34 DONE LDA A #$34 RESTORE ECHO-BACK00064 1C26 B7 8007 STA A PIASB00065 1C29 FF A004 STX ENDAD00066 1C2C CE 1DB2 LDX #MFOR REPORT EOT LOCATION IN MEMORY00067 1C2F BD E07E JSR PDATA100068 1C32 CE A004 LDX #ENDAD00069 1C35 BD E0C8 JSR OUT4HS

    00070 1C38 20 06 BRA GOBACK

    00072 1C3A CE 0100 WTERM LDX #$0100 TEXT BUFFER START ADDRESS00073 1C3D BD E07E JSR PDATA100074 1C40 CE 1D9D GOBACK LDX #MTHR OPERATION COMPLETE00075 1C43 20 12 BRA REENTR

    00077 1C45 BD 1D63 TAPOFF JSR RESET00078 1C48 20 F6 BRA GOBACK

    00080 1C4A CE 1E52 HELP LDX #MATE00081 1C4D 20 08 BRA REENTR

    00083 1C4F CE 1D8B NOCMD LDX #MTWO ELSE INVALID COMMAND00084 1C52 20 03 BRA REENTR

    00086 1C54 CE 1D6D UTSTRT LDX #MONE M6800 UTILITIES MANAGER00087 1C57 BD E07E REENTR JSR PDATA100088 1C5A 8E A042 NOHEX LDS #STACK CLEANUP STACK IF UTINHX BAILS00089 1C5D CE 1D69 LDX #MZRO ?00090 1C60 BD E07E JSR PDATA100091 1C63 BD E1AC JSR INEEE00092 1C66 81 31 CMP A #'100093 1C68 27 98 BEQ RTERM LOAD TEXT FILE FROM TERMINAL00094 1C6A 81 32 CMP A #'200095 1C6C 27 CC BEQ WTERM SEND TEXT FILE TO TERMINAL00096 1C6E 81 33 CMP A #'300097 1C70 27 8B BEQ TTY SEND OR RECEIVE TELETYPE SET00098 1C72 81 34 CMP A #'400099 1C74 27 25 BEQ WM2TAP WRITE MEMORY TO TAPE

    00100 1C76 81 35 CMP A #'500101 1C78 27 2B BEQ RTAP2M READ TAPE TO MEMORY00102 1C7A 81 36 CMP A #'600103 1C7C 27 C7 BEQ TAPOFF RESET ACIA (TAPE MOTOR OFF)00104 1C7E 81 37 CMP A #'700105 1C80 27 CD BEQ NOCMD RESERVED00106 1C82 81 38 CMP A #'800107 1C84 27 C9 BEQ NOCMD RESERVED00108 1C86 81 39 CMP A #'9

  • 8/20/2019 Utility Manager v5

    13/26

    13

    ---

    PAGE 003 M6800 UT

    00109 1C88 27 C5 BEQ NOCMD RESERVED00110 1C8A 81 48 CMP A #'H00111 1C8C 27 BC BEQ HELP PRINT COMMAND MENU00112 1C8E 81 45 CMP A #'E00113 1C90 26 BD BNE NOCMD00114 1C92 CE 1C00 LDX #STRT RESET PROG COUNTER IN STACK00115 1C95 FF A048 STX RESTRT00116 1C98 7E E0D0 JMP START EXIT TO MIKBUG

    00118 1C9B 8D 13 WM2TAP BSR RWCOMN00119 1C9D 81 41 CMP A #'A00120 1C9F 27 9F BEQ GOBACK00121 1CA1 8D 69 BSR WTAPE00122 1CA3 20 9B BRA GOBACK00123 1CA5 8D 09 RTAP2M BSR RWCOMN

    00124 1CA7 81 41 CMP A #'A00125 1CA9 27 95 BEQ GOBACK00126 1CAB BD 1D28 JSR RTAPE00127 1CAE 20 90 BRA GOBACK

    00129 1CB0 CE 1DC4 RWCOMN LDX #MFIV00130 1CB3 BD E07E JSR PDATA100131 1CB6 8D 22 BSR BADDR00132 1CB8 FF A002 STX BEGAD00133 1CBB CE 1DD8 RWCOM2 LDX #MSIX00134 1CBE BD E07E JSR PDATA100135 1CC1 8D 17 BSR BADDR00136 1CC3 FF A004 STX ENDAD00137 1CC6 CE 1DEC RETRY LDX #MSVN00138 1CC9 BD E07E JSR PDATA1

    00139 1CCC BD E1AC JSR INEEE00140 1CCF 81 41 CMP A #'A00141 1CD1 27 06 BEQ CONT00142 1CD3 81 47 CMP A #'G00143 1CD5 27 02 BEQ CONT00144 1CD7 20 ED BRA RETRY ASK AGAIN IF NO A OR G00145 1CD9 39 CONT RTS

    00147 1CDA 8D 0C BADDR BSR BYTE THIS CODE COPIED FROM MIKBUG00148 1CDC B7 A00C STA A XHI00149 1CDF 8D 07 BSR BYTE00150 1CE1 B7 A00D STA A XLOW00151 1CE4 FE A00C LDX XHI00152 1CE7 39 RTS00153 1CE8 8D 09 BYTE BSR UTINHX

    00154 1CEA 48 ASL A00155 1CEB 48 ASL A00156 1CEC 48 ASL A00157 1CED 48 ASL A00158 1CEE 16 TAB00159 1CEF 8D 02 BSR UTINHX00160 1CF1 1B ABA00161 1CF2 39 BYTERT RTS SKIP MIKBUG CHECKSUM PART00162 1CF3 BD E1AC UTINHX JSR INEEE

  • 8/20/2019 Utility Manager v5

    14/26

    14

    ---

    PAGE 004 M6800 UT

    00163 1CF6 80 30 SUB A #$3000164 1CF8 2B 0F BMI NOTHEX00165 1CFA 81 09 CMP A #$0900166 1CFC 2F 0A BLE IN1HG00167 1CFE 81 11 CMP A #$1100168 1D00 2B 07 BMI NOTHEX00169 1D02 81 16 CMP A #$1600170 1D04 2E 03 BGT NOTHEX00171 1D06 80 07 SUB A #700172 1D08 39 IN1HG RTS00173 1D09 7E 1C5A NOTHEX JMP NOHEX

    00175 1D0C CE 0802 WTAPE LDX #$0802 COND. MASKS FOR WRITE00176 1D0F 8D 34 BSR INIT00177 1D11 A6 00 CONTW LDA A 0,X GET BYTE FROM MEMORY

    00178 1D13 B7 8011 STA A ACIADT PUT IT TO I'FACE00179 1D16 8D 42 BSR LOOP2 WAIT UNTIL ACIA REG. "EMPTY"00180 1D18 BC A004 CPX ENDAD WAS IT LAST BYTE TO WRITE?00181 1D1B 27 03 BEQ ENDCH00182 1D1D 08 INX POINT TO NEXT MEM LOC.00183 1D1E 20 F1 BRA CONTW00184 * ENDCH SENDS LAST BYTE TO ACIA A SECOND TIME, SO00185 * THAT THE SERIAL OUTPUT OF ITS FIRST SENDING CAN00186 * COMPLETE.00187 1D20 B7 8011 ENDCH STA A ACIADT PUT IT TO I'FACE AGAIN00188 1D23 8D 35 BSR LOOP2 WAIT FOR SERIAL OUT DONE00189 1D25 8D 3C BSR RESET NOW WE CAN TURN MOTOR OFF00190 1D27 39 RTS

    00192 1D28 CE 0401 RTAPE LDX #$0401 CODE MASKS FOR READ

    00193 1D2B 8D 18 BSR INIT00194 1D2D C5 70 CONTR BIT B #$70 ANY ERROR FLAG SET?00195 1D2F 27 03 BEQ LOOP3 IF NOT, KEEP GOING00196 1D31 8D 30 ENDOP BSR RESET ELSE TURN OFF MOTOR00197 1D33 39 RTS00198 1D34 B6 8011 LOOP3 LDA A ACIADT GET BYTE JUST READ00199 1D37 A7 00 STA A 0,X STORE IT00200 1D39 BC A004 CPX ENDAD ARE WE DONE?00201 1D3C 27 F3 BEQ ENDOP IF SO, RETURN00202 1D3E 08 INX ELSE POINT TO NEXT LOC00203 1D3F 8D 19 BSR LOOP2 GET ANOTHER BYTE FROM TAPE00204 1D41 20 EA BRA CONTR00205 *SUBROUTINE ENTRY POINTS ARE INIT AND LOOP200206 1D43 0001 FLAG1 RMB 1 ACIA CONDITION CODE MASKS00207 1D44 0001 FLAG2 RMB 1

    00208 1D45 FF 1D43 INIT STX FLAG1 SAVE R/W CODE MASKS00209 1D48 FE A002 LDX BEGAD GET STARTING ADDRESS00210 1D4B 8D 16 BSR RESET GO INITIALIZE ACIA00211 1D4D C6 1D LDA B #$1D START MOTOR, DEFINE FORMAT00212 1D4F F7 8010 STA B ACIACT 8 BITS, ODD PARITY, 1 STOP00213 1D52 F6 8010 LOOP1 LDA B ACIACT00214 1D55 F5 1D43 BIT B FLAG1 TEST DCD (READ), CTS (WRITE)00215 1D58 26 F8 BNE LOOP1 WAIT FOR FLAG TO CLEAR00216 1D5A F6 8010 LOOP2 LDA B ACIACT

  • 8/20/2019 Utility Manager v5

    15/26

    15

    ---

    PAGE 005 M6800 UT

    00217 1D5D F5 1D44 BIT B FLAG2 TEST FULL(READ), EMPTY(WRITE)00218 1D60 27 F8 BEQ LOOP2 WAIT UNTIL FLAG SET00219 1D62 39 RTS00220 1D63 C6 5F RESET LDA B #$5F00221 1D65 F7 8010 STA B ACIACT00222 1D68 39 RTS

    00224 * MESSAGES00225 1D69 0D MZRO FCB $D,$A,'?,400226 1D6D 0D MONE FCB $D,$A00227 1D6F 4D FCC ^M6800 I/O UTILITIES MANAGER^00228 1D8A 04 FCB 400229 1D8B 0D MTWO FCB $D,$A00230 1D8D 55 FCC ^UNKNOWN COMMAND^00231 1D9C 04 FCB 4

    00232 1D9D 0D MTHR FCB $D,$A00233 1D9F 4F FCC ^OPERATION COMPLETE^00234 1DB1 04 FCB 400235 1DB2 0D MFOR FCB $D,$A00236 1DB4 45 FCC ^EOT LOCATION= $^00237 1DC3 04 FCB 400238 1DC4 0D MFIV FCB $D,$A00239 1DC6 53 FCC ^START ADDRESS=?_$^00240 1DD7 04 FCB 400241 1DD8 0D MSIX FCB $D,$A00242 1DDA 20 FCC ^ END ADDRESS=?_$^00243 1DEB 04 FCB 400244 1DEC 0D MSVN FCB $D,$A00245 1DEE 50 FCC ^POSITION TAPE, PRESS PLAY FOR READ^00246 1E10 20 FCC ^ OR RECORD FOR WRITE^

    00247 1E24 0D FCB $D,$A00248 1E26 57 FCC ^WHEN READY, TYPE A TO ABORT, ^00249 1E43 47 FCC ^G TO PROCEED:_^00250 1E51 04 FCB 400251 1E52 0D MATE FCB $D,$A00252 1E54 20 FCC ^ COMMAND MENU^00253 1E69 0D FCB $D,$A00254 1E6B 4C FCC ^LOAD TEXT FILE FROM TERMINAL..1^00255 1E8A 0D FCB $D,$A00256 1E8C 53 FCC ^SEND TEXT FILE TO TERMINAL....2^00257 1EAB 0D FCB $D,$A00258 1EAD 54 FCC ^TELETYPE SEND OR RECEIVE......3^00259 1ECC 0D FCB $D,$A00260 1ECE 57 FCC ^WRITE MEMORY TO TAPE..........4^00261 1EED 0D FCB $D,$A

    00262 1EEF 52 FCC ^READ TAPE TO MEMORY...........5^00263 1F0E 0D FCB $D,$A00264 1F10 54 FCC ^TURN OFF TAPE MOTOR...........6^00265 1F2F 0D FCB $D,$A00266 1F31 50 FCC ^PRINT COMMAND MENU............H^00267 1F50 0D FCB $D,$A00268 1F52 45 FCC ^EXIT TO MIKBUG................E^00269 1F71 04 FCB 400270 *

  • 8/20/2019 Utility Manager v5

    16/26

    16

    ---

    PAGE 006 M6800 UT

    00271 * LOAD MIKBUG STACK PC WITH START ADDR00272 A048 ORG $A04800273 A048 1C00 FDB STRT00274 END

    TOTAL ERRORS 00000

    M6800 RESIDENT ASSEMBLERENTER PASS : 1P,1S,2P,2L,2T

    2TS00B00004D3638303020555410S11E1BFD7E1B002052863CB78007CE0100FFA002BDE1ACA7008104270E8C1AFDS11E1C18FF27F208810D26ED860A20EC8634B78007FFA004CE1DB2BDE07ECE2FS11E1C33A004BDE0C82006CE0100BDE07ECE1D9D2012BD1D6320F6CE1E52200ES11E1C4E08CE1D8B2003CE1D6DBDE07E8EA042CE1D69BDE07EBDE1AC81312761

    S11E1C6998813227CC8133278B813427258135272B813627C7813727CD8138A5S11E1C8427C9813927C5814827BC814526BDCE1C00FFA0487EE0D08D138141F5S11E1C9F279F8D69209B8D0981412795BD1D282090CE1DC4BDE07E8D22FFA0D1S11E1CBA02CE1DD8BDE07E8D17FFA004CE1DECBDE07EBDE1AC814127068147F1S11E1CD5270220ED398D0CB7A00C8D07B7A00DFEA00C398D0948484848168D51S11E1CF0021B39BDE1AC80302B0F81092F0A81112B0781162E038007397E1CA2S11E1D0B5ACE08028D34A600B780118D42BCA00427030820F1B780118D358DCFS11E1D263C39CE04018D18C57027038D3039B68011A700BCA00427F3088D1946S1051D4120EA92S11E1D45FF1D43FEA0028D16C61DF78010F68010F51D4326F8F68010F51D449ES11E1D6027F839C65FF78010390D0A3F040D0A4D3638303020492F4F205554EBS11E1D7B494C4954494553204D414E41474552040D0A554E4B4E4F574E20436DS11E1D964F4D4D414E44040D0A4F5045524154494F4E20434F4D504C4554452DS11E1DB1040D0A454F54204C4F434154494F4E3D2024040D0A5354415254204DS11E1DCC414444524553533D3F5F24040D0A2020454E4420414444524553539B

    S11E1DE73D3F5F24040D0A504F534954494F4E20544150452C2050524553532BS11E1E0220504C415920464F522052454144204F52205245434F524420464FD3S11E1E1D522057524954450D0A5748454E2052454144592C20545950452041DCS11E1E3820544F2041424F52542C204720544F2050524F434545443A5F040D0ES11E1E530A202020202020202020434F4D4D414E44204D454E550D0A4C4F41FFS11E1E6E4420544558542046494C452046524F4D205445524D494E414C2E2E40S11E1E89310D0A53454E4420544558542046494C4520544F205445524D494E71S11E1EA4414C2E2E2E2E320D0A54454C45545950452053454E44204F522052A8S11E1EBF4543454956452E2E2E2E2E2E330D0A5752495445204D454D4F525971S11E1EDA20544F20544150452E2E2E2E2E2E2E2E2E2E340D0A52454144205435S11E1EF541504520544F204D454D4F52592E2E2E2E2E2E2E2E2E2E2E350D0AF6S11E1F105455524E204F46462054415045204D4F544F522E2E2E2E2E2E2E2E03S11E1F2B2E2E2E360D0A5052494E5420434F4D4D414E44204D454E552E2E2E35S11E1F462E2E2E2E2E2E2E2E2E480D0A4558495420544F204D494B4255472E75S1141F612E2E2E2E2E2E2E2E2E2E2E2E2E2E2E450470

    S105A0481C00F6S9030000FC

    TOTAL ERRORS 00000

  • 8/20/2019 Utility Manager v5

    17/26

    17

    ---

    PAGE 001 TTY5

    00001 NAM TTY500002 OPT O,S,NOG00003 *00004 * BY DONALD R. SENTZ FEBRUARY 201600005 * CONSOLIDATES PATCHES TO TTY400006 * ASCII TEXT BUFFER TO BAUDOT TTY OUTPUT00007 * BASED ON FLOW CHARTS I DREW AND SUCCESSFUL00008 * TEST THAT I PERFORMED IN 1978-79.00009 * LOAD UTMGR5.OBJ BEFORE LOADING TTY5.OBJ00010 *00011 8008 PREGA EQU $8008 ADDR. OF MEK6800D1 PIA CHIP00012 1C40 GOBACK EQU $1C40 RETURN TO UTMGR5.OBJ00013 0000 ORG $000000014 *00015 * HERE IS THE 7-BIT ASCII-TO-BAUDOT-CODE

    00016 * LOOKUP TABLE I DESIGNED USING MS EXCEL 2010.00017 * DETAILS IN MY EXCEL FILE ON TOSHIBA LAPTOP00018 *00019 0000 00 FCB 0,1,1,1,1,1,1,202,1,1,68,1,1,80,1,100020 0010 01 FCB 1,1,190,1,246,1,1,1,1,1,1,1,1,1,1,100021 0020 48 FCB 72,218,226,232,210,1,244,21400022 0028 DE FCB 222,228,1,1,216,198,248,25000023 0030 EC FCB 236,238,230,194,212,224,234,20600024 0038 CC FCB 204,240,220,252,1,1,1,24200025 0040 01 FCB 1,134,178,156,146,130,154,18000026 0048 A8 FCB 168,140,150,158,164,184,152,17600027 0050 AC FCB 172,174,148,138,160,142,188,16600028 0058 BA FCB 186,170,162,1,1,1,1,100029 0060 D6 FCB 214,134,178,156,146,130,154,18000030 0068 A8 FCB 168,140,150,158,164,184,152,176

    00031 0070 AC FCB 172,174,148,138,160,142,188,16600032 0078 BA FCB 186,170,162,1,1,1,1,100033 0080 FE LTRS FCB 25400034 0081 F6 FIGS FCB 24600035 *00036 * WORKING REGISTERS00037 0082 00 LKADR FCB 0 MS BYTE OF 16 BIT ADDRESS00038 0083 00 LKADR1 FCB 0 LS BYTE OF 16 BIT ADDRESS00039 0084 00 LFFLAG FCB 0 INIT LFFLAG=0=LTRS MODE00040 0085 8008 PIADR FDB PREGA SAVES A FEW BYTES LATER00041 0087 0002 BADDR RMB 2 TEMP REG. FOR X00042 * ADDING OUTPUT HEADER STRING. TO USE, CHANGE00043 * INIT. OF BADDR FROM $0100 TO $00F6. THIS00044 * HEADER FORCES PRINTER TO LTRS MODE00045 * REGARDLESS OF CURRENT VALUE OF LFFLAG,

    00046 * AND THEN SENDS AND 00047 00F6 ORG $00F600048 00F6 12 HEADER FCB $12,$12,$12,$12,0,0,0,0,$0D,$0A00049 *00050 *----------MAIN PROGRAM STARTS HERE--------00051 1F72 ORG $1F7200052 *00053 * THIS CODE PRINTS ASCII TEXT BUFFER TO TTY00054 * INTERFACE UNTIL ASCII E-O-T ENCOUNTERED OR

  • 8/20/2019 Utility Manager v5

    18/26

    18

    ---

    PAGE 002 TTY5

    00055 * POINTER IS AT END OF DEFINED BUFFER SPACE.00056 *00057 1F72 8D 22 START BSR INIT CONFIGURE PIA00058 1F74 C6 01 LDA B #1 SYNC TO START OF 1MS00059 1F76 8D 73 BSR TIM1 PIA ADDR. IN REG. X00060 1F78 CE 00F6 LDX #HEADER INIT POINTER TO HEADER00061 1F7B DF 87 STX BADDR00062 * HERE IS THE PRINTING LOOP00063 1F7D DE 87 NEXT LDX BADDR GET POINTER00064 1F7F 8C 1B00 CPX #$1B00 FAILSAFE: END OF BUFFER+1?00065 1F82 26 03 BNE BCONT IF NOT END, CONTINUE00066 1F84 7E 1C40 EXIT JMP GOBACK ELSE PRINTOUT IS DONE00067 1F87 A6 00 BCONT LDA A 0,X GET ASCII CHARACTER00068 1F89 81 04 CMP A #4 IS IT EOT?00069 1F8B 26 02 BNE BCONT2 IF NOT, CONTINUE

    00070 1F8D 20 F5 BRA EXIT00071 1F8F 08 BCONT2 INX INCREMENT BUFFER POINTER00072 1F90 DF 87 STX BADDR00073 1F92 8D 14 BSR PRCHR GO PUT OUT CHAR. TO TTY00074 1F94 20 E7 BRA NEXT00075 *00076 * EXTERNALLY CALLABLE SUBR. TO INITIALIZE PIA00077 * CONFIGURE PIA PORT SUCH THAT PIA0-B7 IS00078 * AN INPUT, B6-B0 ARE OUTPUTS. ONLY B7 AND B000079 * ARE USED BY THE TTY INTERFACE BOARD.00080 *00081 1F96 DE 85 INIT LDX PIADR GET PIA ADDRESS TO X00082 1F98 4F CLR A ALL 0 TO CONTROL REG.00083 1F99 A7 01 STA A 1,X POINT PIADR TO DATA DIR. REG.00084 1F9B 86 7F LDA A #$7F CONF. B6-BO AS OUTPUTS

    00085 1F9D A7 00 STA A 0,X AND B7 AS INPUT.00086 1F9F 86 04 LDA A #4 CONTROL REG. B2 = 100087 1FA1 A7 01 STA A 1,X POINT PIADR TO DATA REG.00088 1FA3 86 01 LDA A #1 NOW OUTPUT A MARK SIGNAL TO00089 1FA5 A7 00 STA A 0,X CLOSE THE TTY CURRENT LOOP00090 1FA7 39 RTS00091 *00092 * EXTERNALLY CALLABLE SUBROUTINE TO CONVERT00093 * 7-BIT ASCII CHAR. IN ACC. A TO BAUDOT CODE00094 * AND OUTPUT IT TO TTY INTERFACE. THIS ROUTINE00095 * CHECKS IF LTRS OR FIGS CODE NEEDS TO BE SENT00096 * BEFORE SENDING THE CONVERTED CHARACTER, AND00097 * DOES SO ONLY IF NECESSARY.00098 *00099 1FA8 84 7F PRCHR AND A #$7F ENSURE MSB=0 (FAILSAFE)

    00100 1FAA 97 83 STA A LKADR1 PREPARE LOOKUP ADDRESS00101 1FAC DE 82 LDX LKADR GET TABLE LOOKUP ADDRESS00102 1FAE A6 00 LDA A 0,X GET BAUDOT CODEWORD00103 1FB0 85 01 BIT A #1 TEST: IS IT PRINTABLE?00104 1FB2 26 20 BNE DONE IF LSB=1 THEN SKIP PRINT00105 1FB4 36 PSH A ELSE TEMPORARY SAVE CODEWORD00106 1FB5 85 80 BIT A #$80 IS IT CR, LF, OR SPACE?00107 1FB7 27 18 BEQ CONT2 IF SO, SKIP L/F CHECK00108 1FB9 85 40 BIT A #$40 ELSE IS IT LTR OR FIG?

  • 8/20/2019 Utility Manager v5

    19/26

    19

    ---

    PAGE 003 TTY5

    00109 1FBB 26 09 BNE FIG IF L/F=1 THEN FIGS00110 * ELSE SEND LTRS CODE IF NECESSARY00111 1FBD D6 84 LDA B LFFLAG CHECK LTRS/FIGS STATE00112 1FBF 27 10 BEQ CONT2 SKIP IF ALREADY LTRS MODE00113 1FC1 5F CLR B ELSE CLEAR L/F FLAG00114 1FC2 96 80 LDA A LTRS AND GET LTRS CODE00115 1FC4 20 07 BRA CONT3 AND SEND IT00116 * SEND FIGS CODE IF NECESSARY00117 1FC6 D6 84 FIG LDA B LFFLAG CHECK LTRS/FIGS STATE00118 1FC8 26 07 BNE CONT2 SKIP IF ALREADY FIGS MODE00119 1FCA 53 COM B ELSE SET L/F FLAG00120 1FCB 96 81 LDA A FIGS AND GET FIGS CODE00121 *00122 1FCD D7 84 CONT3 STA B LFFLAG UPDATE L/F STATE00123 1FCF 8D 04 BSR BAUDOT SEND LTRS OR FIGS

    00124 1FD1 32 CONT2 PUL A GET CHAR. TO SEND00125 1FD2 8D 01 BSR BAUDOT PRINT CHARACTER00126 1FD4 39 DONE RTS00127 *00128 * THIS SUBROUTINE OUTPUTS ACC.A B0-B600129 * TO TTY INTERFACE.00130 * B0 = TTY START BIT = 000131 * B1-B5 = BAUDOT CHARACTER00132 * B6 = TTY STOP BIT = 100133 *00134 1FD5 DE 85 BAUDOT LDX PIADR00135 1FD7 C6 1F LDA B #31 HOLD STOP FOR 31 MS00136 1FD9 8D 10 BSR TIM100137 1FDB 8A 40 ORA A #$40 PUT STOP BIT IN B600138 1FDD A7 00 STA A 0,X

    00139 * PUT START BIT OUT AT BEGINNING OF00140 * A 22 MS INTERVAL00141 1FDF 86 06 LDA A #6 INITIALIZE BIT SHIFT COUNTER00142 1FE1 C6 16 SHIFT LDA B #22 SET TIMEOUT = 22 MS00143 1FE3 8D 06 BSR TIM1 HOLD FOR 22 MS00144 1FE5 67 00 ASR 0,X PLACE NEXT BIT ONTO OUTPUT00145 1FE7 4A DEC A00146 1FE8 2E F7 BGT SHIFT KEEP SHIFTING UNTIL B600147 1FEA 39 RTS00148 *00149 * THIS ROUTINES COUNTS PERIODS OF THE00150 * 1 MS TIMER ON TTY INTERFACE BOARD.00151 *00152 1FEB 6D 00 TIM1 TST 0,X IS PIA0-B7 =1?00153 1FED 2B FC BMI TIM1 YES, WAIT UNTIL B7=0

    00154 1FEF 6D 00 TIM0 TST 0,X IS PIA0-B7 =0?00155 1FF1 2A FC BPL TIM0 YES, WAIT UNTIL B7=100156 1FF3 5A DEC B00157 1FF4 26 F5 BNE TIM1 COUNT PERIODS UNTIL B=000158 1FF6 39 RTS

    00160 * INITIALIZE PRINT BUFFER WITH EOT00161 0100 ORG $010000162 0100 04 FCB $04 PRELOAD ASCII E-O-T CODE

  • 8/20/2019 Utility Manager v5

    20/26

    20

    ---

    PAGE 004 TTY5

    00163 END

    TOTAL ERRORS 00000

    M6800 RESIDENT ASSEMBLERENTER PASS : 1P,1S,2P,2L,2T

    2TS00B000054545935202020203ES11E000000010101010101CA01014401015001010101BE01F6010101010101BAS11E001B010101010148DAE2E8D201F4D6DEE40101D8C6F8FAECEEE6C2D4E0AES11E0036EACECCF0DCFC010101F20186B29C92829AB4A88C969EA4B898B0AC7BS11E0051AE948AA08EBCA6BAAAA20101010101D686B29C92829AB4A88C969EB5S11E006CA4B898B0ACAE948AA08EBCA6BAAAA20101010101FEF6000000800842S10D00F612121212000000000D0A9DS11E1F728D22C6018D73CE00F6DF87DE878C1B0026037E1C40A600810426024E

    S11E1F8D20F508DF878D1420E7DE854FA701867FA7008604A7018601A700396BS11E1FA8847F9783DE82A60085012620368580271885402609D68427105F9637S11E1FC3802007D6842607539681D7848D04328D0139DE85C61F8D108A40A72CS11C1FDE008606C6168D0667004A2EF7396D002BFC6D002AFC5A26F53907S104010004F6S9030000FC

    TOTAL ERRORS 00000

  • 8/20/2019 Utility Manager v5

    21/26

    21

    ---

    PAGE 001 READTTY6

    00001 NAM READTTY60000002 OPT O,S,NOG00003 *00004 * FEBRUARY 27, 2016 BY D.R. SENTZ00005 *00006 * UTMGR5.OBJ AND TTY5.OBJ MUST BE LOADED TO RUN THIS00007 * PROGRAM. THIS PROGRAM READS SERIAL DATA ON THE00008 * L.S. BIT OF PIA REGISTER B OF THE MEK6800D1 CPU00009 * BOARD, PERFORMS THE BAUDOT-TO-ASCII CHARACTER00010 * CONVERSION, OUTPUTS THE ASCII CHARACTER TO THE00011 * CONSOLE TERMINAL AND STORES IN UTMGR5 TEXT BUFFER.00012 * THE CONSOLE INTERFACE DATA RATE MUST BE 600 BAUD.00013 * USE LINE-BREAK SWITCH ON THE TELEPRINTER TO EXIT00014 * THIS PROGRAM AND RETURN TO UTILITY MANAGER COMMAND00015 * LINE. 300BPS VERSION IS READTTY300.

    00016 * SEE ALSO UTMGR REPORT.00017 *00018 0085 PIAADR EQU $0085 TTY5 PUT PIA ADDR IN THIS LOC00019 0087 BADDR EQU $0087 LOC OF TEXT BUFFER POINTER00020 1AFF EOBADR EQU $1AFF NEW END OF UTMGR5 TEXT BUFFER00021 1C29 RTNUTM EQU $1C29 REENTRY ON LINE BREAK00022 1C4F NOCMD EQU $1C4F REENTRY ON COMMAND ERR00023 1F72 SEND EQU $1F72 TTY5 ENTRY POINT00024 1F96 INIT EQU $1F96 SUBROUTINE TO INIT PIA REG. A00025 1FEB TIM1 EQU $1FEB TIMER SUBROUTINE IN TTY5.SRC00026 E07E PDATA1 EQU $E07E STRING OUTPUT SUBROUTINE00027 E1AC INEEE EQU $E1AC CHARACTER INPUT SUBROUTINE00028 E1D1 OUTEEE EQU $E1D1 CHARACTER OUTPUT SUBROUTINE00029 *00030 0089 ORG $0089

    00031 0089 0001 BITCNT RMB 1 INPUT DATA BIT COUNTER00032 008A 0001 OFFSET RMB 1 LTRS/FIGS ADDRESS OFFSET00033 *00034 *BAUDOT TO ASCII CONVERSION TABLE00035 *00036 008B 00 B2ASCI FCB $00,$54,$0D,$4F,$20,$48,$4E,$4D00037 0093 0A FCB $0A,$4C,$52,$47,$49,$50,$43,$5600038 009B 45 FCB $45,$5A,$44,$42,$53,$59,$46,$5800039 00A3 41 FCB $41,$57,$4A,$00,$55,$51,$4B,$0000040 00AB 00 FIGS FCB $00,$35,$0D,$39,$20,$23,$2C,$2E00041 00B3 0A FCB $0A,$29,$34,$26,$38,$30,$3A,$3B00042 00BB 33 FCB $33,$22,$24,$3F,$07,$36,$21,$2F00043 00C3 2D FCB $2D,$32,$27,$00,$37,$31,$28,$0000044 00CB 0D MNINE FCB $0D,$0A00045 00CD 53 FCC ^SEND(S) OR RCV(R)?^

    00046 00DF 04 FCB $0400047 *00048 1B00 ORG $1B00 TEXT BUFFER TO END AT $1AFF00049 *00050 * SOLICIT SEND OR RCV, IF RCV, INIT BADDR00051 *00052 1B00 CE 00CB SRTTY LDX #MNINE00053 1B03 BD E07E JSR PDATA1 SOLICIT SEND OR RCV00054 1B06 BD E1AC JSR INEEE S=SEND, R=RECEIVE

  • 8/20/2019 Utility Manager v5

    22/26

    22

    ---

    PAGE 002 READTTY6

    00055 1B09 81 53 CMP A #'S00056 1B0B 26 03 BNE CONT600057 1B0D 7E 1F72 JMP SEND OUTPUT TEXT TO TELETYPE00058 1B10 81 52 CONT6 CMP A #'R00059 1B12 27 03 BEQ RCV00060 1B14 7E 1C4F JMP NOCMD RETURN TO UTMGR IF NOT S OR R00061 1B17 CE 0100 RCV LDX #$0100 INIT TEXT BUFFER POINTER00062 1B1A DF 87 STX BADDR00063 *00064 * CONFIGURE PIA A AND B, INIT. TABLE OFFSET.00065 *00066 1B1C BD 1F96 JSR INIT INIT PIA REG. A (TIMER INPUT)00067 1B1F 4F CLR A NOW INIT PIA REG. B00068 1B20 A7 03 STA A 3,X POINT 2,X TO DDRB00069 1B22 86 FE LDA A #$FE REG.B B7-B1=OUTPUTS, BO=INPUT

    00070 1B24 A7 02 STA A 2,X PUT I/O DEF. TO DATA DIR. REG00071 1B26 86 04 LDA A #4 POINT 2,X TO I/O REG.B00072 1B28 A7 03 STA A 3,X 3,X IS PIA CONTROL REG.B00073 1B2A 7F 008A CLR OFFSET INIT TO LETTERS MODE00074 *00075 * HERE IS THE TTY DATA RECEIVER00076 *00077 * AFTER COMPLETING TEXT ENTRY FROM TELETYPE SET,00078 * OPERATE THE LINE-BREAK KEY TO RETURN TO UTILITY00079 * MANAGER.00080 *00081 1B2D A6 02 CHKMRK LDA A 2,X GET A SAMPLE OF LINE STATE00082 1B2F 26 04 BNE WAIT IF MARK, THEN PROCEED00083 1B31 DE 87 LDX BADDR IF BREAK, GET TEXT POINTER00084 1B33 20 4D BRA EXIT GO WRITE EOT AND WE'RE DONE

    00085 *00086 1B35 A6 02 WAIT LDA A 2,X SAMPLE MARK/SPACE STATE00087 1B37 26 FC BNE WAIT UNTIL MARK-TO-SPACE DETECTED00088 1B39 C6 0B LDA B #11 WAIT 11MS (HALF BIT PERIOD)00089 1B3B BD 1FEB JSR TIM100090 1B3E A6 02 LDA A 2,X TEST FOR START BIT (SPACE)00091 1B40 26 F3 BNE WAIT IF FALSE START, KEEP WAITING00092 1B42 C6 05 LDA B #5 ELSE INITIALIZE BITCNT00093 1B44 D7 89 STA B BITCNT00094 *00095 * ACC. A CONTAINS ALL ZEROES AT THIS POINT. READ00096 * CHARACTER CODE FROM TELETYPE SET.00097 *00098 1B46 C6 16 LOAD5 LDA B #22 WAIT ONE BIT PERIOD00099 1B48 BD 1FEB JSR TIM1

    00100 1B4B AA 02 ORA A 2,X INSERT BIT TO LSB OF ACC. A00101 1B4D 7A 0089 DEC BITCNT HAVE 5 BITS BEEN READ?00102 1B50 27 03 BEQ CEEONE IF SO, PROCEED00103 1B52 48 ASL A ELSE LEFT SHIFT ACC.A00104 1B53 20 F1 BRA LOAD5 AND GET ANOTHER BIT00105 *00106 * CHECK LTRS OR FIGS, SET OFFSET ACCORDINGLY00107 *00108 1B55 81 1F CEEONE CMP A #$1F WAS IT THE LTRS CODE?

  • 8/20/2019 Utility Manager v5

    23/26

    23

    ---

    PAGE 003 READTTY6

    00109 1B57 26 03 BNE CONT2 IF NOT, CHECK FOR FIGS00110 1B59 5F CLR B ELSE SET ACC. B =000111 1B5A 20 06 BRA CONT3 AND GO UPDATE OFFSET

    00112 1B5C 81 1B CONT2 CMP A #$1B WAS IT THE FIGS CODE?00113 1B5E 26 0B BNE CONT4 IF NOT, PROCEED TO LOOKUP00114 1B60 C6 20 LDA B #32 ELSE SET ACC. B =3200115 1B62 D7 8A CONT3 STA B OFFSET 0=LTRS, 32=FIGS00116 1B64 C6 16 LDA B #22 DELAY TO 11/31THS OF STOP BIT00117 1B66 BD 1FEB JSR TIM100118 1B69 20 C2 BRA CHKMRK GO TEST FOR STOP BIT OR BREAK00119 *00120 * HERE IS THE ASCII LOOKUP, OUTPUT TO MACTERMINAL,00121 * AND WRITE TO TEXT BUFFER. I CHOSE TO USE SELF-00122 * MODIFYING CODE HERE. THIS REMOVED A CONSTRAINT00123 * ON THE START ADDRESS OF TABLE B2ASCI, AND SAVED00124 * A FEW BYTES OF CODE.00125 *00126 1B6B 9B 8A CONT4 ADD A OFFSET ADD OFFSET TO 5-BIT CODEWORD

    00127 1B6D B7 1B74 STA A EMBED+1 UDPATE INDEX IN LDAA BELOW00128 1B70 CE 008B LDX #B2ASCI START ADDRESS OF TABLE TO X00129 1B73 A6 00 EMBED LDA A 0,X LOOK UP ASCII CODEWORD00130 *00131 * OUTEEE TAKES ABOUT 16.7MS TO EXECUTE AT 60000132 * BAUD. THIS DELAYS NEXT INSTRUCTION UNTIL ABOUT00133 * 6MS INTO THE 31MS STOP BIT PERIOD. ADD 10 MS00134 * TO TARGET MID-STOP-BIT00135 *00136 1B75 DE 87 LDX BADDR GET TEXT BUFFER POINTER00137 1B77 A7 00 STA A 0,X SAVE CHARACTER TO TEXT BUFFER00138 1B79 BD E1D1 JSR OUTEEE OUTPUT CHARACTER TO CONSOLE00139 1B7C 08 INX UPDATE TEXT BUFFER POINTER00140 1B7D 8C 1AFF CPX #EOBADR HAS IT REACHED END OF BUFFER?00141 1B80 26 07 BNE CFIVE IF NOT, THEN CONTINUE INPUT

    00142 1B82 86 04 EXIT LDA A #$04 EOT ON BREAK OR END OF BUFFER00143 1B84 A7 00 STA A 0,X WRITE EOT TO TEXT BUFFER00144 1B86 7E 1C29 JMP RTNUTM AND RETURN TO UTILITY MANAGER00145 1B89 DF 87 CFIVE STX BADDR SAVE UPDATED POINTER00146 1B8B DE 85 LDX PIAADR RESTORE PIA ADDRESS TO X00147 1B8D C6 0A LDA B #10 DELAY TO MIDDLE OF STOP BIT00148 1B8F BD 1FEB JSR TIM100149 1B92 20 99 BRA CHKMRK GO TEST FOR STOP BIT OR BREAK00150 END

    2TS00B00005245414454545936A1S11E008B00540D4F20484E4D0A4C524749504356455A44425359465841574A31S11E00A60055514B0000350D3920232C2E0A29342638303A3B3322243F0736D3

    S11E00C1212F2D322700373128000D0A53454E44285329204F522052435628E1S10700DC52293F045ES11E1B00CE00CBBDE07EBDE1AC815326037E1F72815227037E1C4FCE0100DF28S11E1B1B87BD1F964FA70386FEA7028604A7037F008AA6022604DE87204DA605S11E1B360226FCC60BBD1FEBA60226F3C605D789C616BD1FEBAA027A0089276FS11E1B51034820F1811F26035F2006811B260BC620D78AC616BD1FEB20C29B97S11E1B6C8AB71B74CE008BA600DE87A700BDE1D1088C1AFF26078604A7007E87S1101B871C29DF87DE85C60ABD1FEB2099EFS9030000FC

    TOTAL ERRORS 00000

  • 8/20/2019 Utility Manager v5

    24/26

    24

    ---

    PAGE 001 READTTY3

    00001 NAM READTTY30000002 OPT O,S,NOG00003 *00004 * FEBRUARY 27, 2016 BY D.R. SENTZ00005 *00006 * UTMGR5.OBJ AND TTY5.OBJ MUST BE LOADED TO RUN THIS00007 * PROGRAM. THIS PROGRAM READS SERIAL DATA ON THE00008 * L.S. BIT OF PIA REGISTER B OF THE MEK6800D1 CPU00009 * BOARD, PERFORMS THE BAUDOT-TO-ASCII CHARACTER00010 * CONVERSION, OUTPUTS THE ASCII CHARACTER TO THE00011 * CONSOLE TERMINAL AND STORES IN UTMGR5 TEXT BUFFER.00012 * THE CONSOLE INTERFACE DATA RATE MUST BE 300 BAUD.00013 * USE LINE-BREAK SWITCH ON THE TELEPRINTER TO EXIT00014 * THIS PROGRAM AND RETURN TO UTILITY MANAGER COMMAND00015 * LINE. 600BPS VERSION IS READTTY600.

    00016 * SEE ALSO UTMGR REPORT.00017 *00018 0085 PIAADR EQU $0085 TTY5 PUT PIA ADDR IN THIS LOC00019 0087 BADDR EQU $0087 LOC OF TEXT BUFFER POINTER00020 1AFF EOBADR EQU $1AFF NEW END OF UTMGR5 TEXT BUFFER00021 1C29 RTNUTM EQU $1C29 UTMGR5 REENTRY ON LINE BREAK00022 1C4F NOCMD EQU $1C4F UTMGR5 REENTRY ON COMMAND ERR00023 1F72 SEND EQU $1F72 TTY5 ENTRY POINT00024 1F96 INIT EQU $1F96 SUBROUTINE TO INIT PIA REG. A00025 1FEB TIM1 EQU $1FEB TIMER SUBROUTINE IN TTY5.SRC00026 E07E PDATA1 EQU $E07E STRING OUTPUT SUBROUTINE00027 E1AC INEEE EQU $E1AC CHARACTER INPUT SUBROUTINE00028 E1D1 OUTEEE EQU $E1D1 CHARACTER OUTPUT SUBROUTINE00029 *00030 0089 ORG $0089

    00031 0089 0001 BITCNT RMB 1 INPUT DATA BIT COUNTER00032 008A 0001 OFFSET RMB 1 LTRS/FIGS ADDRESS OFFSET00033 *00034 *BAUDOT TO ASCII CONVERSION TABLE00035 *00036 008B 00 B2ASCI FCB $00,$54,$0D,$4F,$20,$48,$4E,$4D00037 0093 0A FCB $0A,$4C,$52,$47,$49,$50,$43,$5600038 009B 45 FCB $45,$5A,$44,$42,$53,$59,$46,$5800039 00A3 41 FCB $41,$57,$4A,$00,$55,$51,$4B,$0000040 00AB 00 FIGS FCB $00,$35,$0D,$39,$20,$23,$2C,$2E00041 00B3 0A FCB $0A,$29,$34,$26,$38,$30,$3A,$3B00042 00BB 33 FCB $33,$22,$24,$3F,$07,$36,$21,$2F00043 00C3 2D FCB $2D,$32,$27,$00,$37,$31,$28,$0000044 00CB 0D MNINE FCB $0D,$0A00045 00CD 53 FCC ^SEND(S) OR RCV(R)?^

    00046 00DF 04 FCB $0400047 *00048 1B00 ORG $1B00 TEXT BUFFER TO END AT $1AFF00049 *00050 * SOLICIT SEND OR RCV, IF RCV, INIT BADDR00051 *00052 1B00 CE 00CB SRTTY LDX #MNINE00053 1B03 BD E07E JSR PDATA1 SOLICIT SEND OR RCV00054 1B06 BD E1AC JSR INEEE S=SEND, R=RECEIVE

  • 8/20/2019 Utility Manager v5

    25/26

    25

    ---

    PAGE 002 READTTY3

    00055 1B09 81 53 CMP A #'S00056 1B0B 26 03 BNE CONT600057 1B0D 7E 1F72 JMP SEND OUTPUT TEXT TO TELETYPE00058 1B10 81 52 CONT6 CMP A #'R00059 1B12 27 03 BEQ RCV00060 1B14 7E 1C4F JMP NOCMD RETURN TO UTMGR IF NOT S OR R00061 1B17 CE 0100 RCV LDX #$0100 INIT TEXT BUFFER POINTER00062 1B1A DF 87 STX BADDR00063 *00064 * CONFIGURE PIA A AND B, INIT. TABLE OFFSET.00065 *00066 1B1C BD 1F96 JSR INIT INIT PIA REG. A (TIMER INPUT)00067 1B1F 4F CLR A NOW INIT PIA REG. B00068 1B20 A7 03 STA A 3,X POINT 2,X TO DDRB00069 1B22 86 FE LDA A #$FE REG.B B7-B1=OUTPUTS, BO=INPUT

    00070 1B24 A7 02 STA A 2,X PUT I/O DEF. TO DATA DIR. REG00071 1B26 86 04 LDA A #4 POINT 2,X TO I/O REG.B00072 1B28 A7 03 STA A 3,X 3,X IS PIA CONTROL REG.B00073 1B2A 7F 008A CLR OFFSET INIT TO LETTERS MODE00074 *00075 * HERE IS THE TTY DATA RECEIVER00076 *00077 * AFTER COMPLETING TEXT ENTRY FROM TELETYPE SET,00078 * OPERATE THE LINE-BREAK KEY TO RETURN TO UTILITY00079 * MANAGER.00080 *00081 1B2D A6 02 CHKMRK LDA A 2,X GET A SAMPLE OF LINE STATE00082 1B2F 26 04 BNE WAIT IF MARK, THEN PROCEED00083 1B31 DE 87 LDX BADDR IF BREAK, GET TEXT POINTER00084 1B33 20 4D BRA EXIT GO WRITE EOT AND WE'RE DONE

    00085 *00086 1B35 A6 02 WAIT LDA A 2,X SAMPLE MARK/SPACE STATE00087 1B37 26 FC BNE WAIT UNTIL MARK-TO-SPACE DETECTED00088 1B39 C6 0B LDA B #11 WAIT 11MS (HALF BIT PERIOD)00089 1B3B BD 1FEB JSR TIM100090 1B3E A6 02 LDA A 2,X TEST FOR START BIT (SPACE)00091 1B40 26 F3 BNE WAIT IF FALSE START, KEEP WAITING00092 1B42 C6 05 LDA B #5 ELSE INITIALIZE BITCNT00093 1B44 D7 89 STA B BITCNT00094 *00095 * ACC. A CONTAINS ALL ZEROES AT THIS POINT. READ00096 * CHARACTER CODE FROM TELETYPE SET.00097 *00098 1B46 C6 16 LOAD5 LDA B #22 WAIT ONE BIT PERIOD00099 1B48 BD 1FEB JSR TIM1

    00100 1B4B AA 02 ORA A 2,X INSERT BIT TO LSB OF ACC. A00101 1B4D 7A 0089 DEC BITCNT HAVE 5 BITS BEEN READ?00102 1B50 27 03 BEQ CEEONE IF SO, PROCEED00103 1B52 48 ASL A ELSE LEFT SHIFT ACC.A00104 1B53 20 F1 BRA LOAD5 AND GET ANOTHER BIT00105 *00106 * CHECK LTRS OR FIGS, SET OFFSET ACCORDINGLY00107 *00108 1B55 81 1F CEEONE CMP A #$1F WAS IT THE LTRS CODE?

  • 8/20/2019 Utility Manager v5

    26/26

    ---

    PAGE 003 READTTY3

    00109 1B57 26 03 BNE CONT2 IF NOT, CHECK FOR FIGS

    00110 1B59 5F CLR B ELSE SET ACC. B =000111 1B5A 20 06 BRA CONT3 AND GO UPDATE OFFSET00112 1B5C 81 1B CONT2 CMP A #$1B WAS IT THE FIGS CODE?00113 1B5E 26 0B BNE CONT4 IF NOT, PROCEED TO LOOKUP00114 1B60 C6 20 LDA B #32 ELSE SET ACC. B =3200115 1B62 D7 8A CONT3 STA B OFFSET 0=LTRS, 32=FIGS00116 1B64 C6 16 LDA B #22 DELAY TO 11/31THS OF STOP BIT00117 1B66 BD 1FEB JSR TIM100118 1B69 20 C2 BRA CHKMRK GO TEST FOR STOP BIT OR BREAK00119 *00120 * HERE IS THE ASCII LOOKUP, OUTPUT TO MACTERMINAL,00121 * AND WRITE TO TEXT BUFFER. I CHOSE TO USE SELF-00122 * MODIFYING CODE HERE. THIS REMOVED A CONSTRAINT00123 * ON THE START ADDRESS OF TABLE B2ASCI, AND SAVED00124 * A FEW BYTES OF CODE.

    00125 *00126 1B6B 9B 8A CONT4 ADD A OFFSET ADD OFFSET TO 5-BIT CODEWORD00127 1B6D B7 1B74 STA A EMBED+1 UDPATE INDEX IN LDAA BELOW00128 1B70 CE 008B LDX #B2ASCI START ADDRESS OF TABLE TO X00129 1B73 A6 00 EMBED LDA A 0,X LOOK UP ASCII CODEWORD00130 *00131 * OUTEEE TAKES ABOUT 33.3MS TO EXECUTE AT 30000132 * BAUD. THIS DELAYS NEXT INSTRUCTION UNTIL ABOUT00133 * 22MS INTO THE 31MS STOP BIT PERIOD.00134 *00135 1B75 DE 87 LDX BADDR GET TEXT BUFFER POINTER00136 1B77 A7 00 STA A 0,X SAVE CHARACTER TO TEXT BUFFER00137 1B79 BD E1D1 JSR OUTEEE OUTPUT CHARACTER TO CONSOLE00138 1B7C 08 INX UPDATE TEXT BUFFER POINTER00139 1B7D 8C 1AFF CPX #EOBADR HAS IT REACHED END OF BUFFER?

    00140 1B80 26 07 BNE CFIVE IF NOT, THEN CONTINUE INPUT00141 1B82 86 04 EXIT LDA A #$04 EOT ON BREAK OR END OF BUFFER00142 1B84 A7 00 STA A 0,X WRITE EOT TO TEXT BUFFER00143 1B86 7E 1C29 JMP RTNUTM AND RETURN TO UTILITY MANAGER00144 1B89 DF 87 CFIVE STX BADDR SAVE UPDATED POINTER00145 1B8B DE 85 LDX PIAADR RESTORE PIA ADDRESS TO X00146 1B8D 7E 1B2D JMP CHKMRK GO TEST FOR STOP BIT OR BREAK00147 END

    M6800 RESIDENT ASSEMBLERENTER PASS : 1P,1S,2P,2L,2T

    2TS00B00005245414454545933A4S11E008B00540D4F20484E4D0A4C524749504356455A44425359465841574A31S11E00A60055514B0000350D3920232C2E0A29342638303A3B3322243F0736D3

    S11E00C1212F2D322700373128000D0A53454E44285329204F522052435628E1S10700DC52293F045ES11E1B00CE00CBBDE07EBDE1AC815326037E1F72815227037E1C4FCE0100DF28S11E1B1B87BD1F964FA70386FEA7028604A7037F008AA6022604DE87204DA605S11E1B360226FCC60BBD1FEBA60226F3C605D789C616BD1FEBAA027A0089276FS11E1B51034820F1811F26035F2006811B260BC620D78AC616BD1FEB20C29B97S11E1B6C8AB71B74CE008BA600DE87A700BDE1D1088C1AFF26078604A7007E87S10C1B871C29DF87DE857E1B2D7DS9030000FC

    TOTAL ERRORS 00000