• Please review our updated Terms and Rules here

Midwest 6800

Whatever you're doing it's working really well! Haven't found any errors so far! Thanks again for doing this. Will save me an immense amount of time!!
 
Here is Page 15:

Code:
03410 E2C8 09             DEX
03420 E2C9 BC F01E        CPX    ENDA
03430 E2CC 26 97          BNE    PUN11
03440 E2CE 7F F01A        CLR    OUTSW
03450 E2D1 CE E2DA        LDX    #S9
03460 E2D4 BD E07E        JSR    PDATA1
03470 E2D7 7E E0E3        JMP    CONTRL
03480 E2DA 53      S9     FCB      'S,'9,4
      E2DB 39
      E2DC 04
03490 E2DD EB 00  PUNT2   ADD B  0,X
03500 E2DF B6 F01A        LDA A  OUTSW
03510 E2E2 36             PSH A
03520 E2E3 7F F01A        CLR    OUTSW
03530 E2E6 BD E09E        JSR    OUT2H
03540 E2E9 32             PUL A
03550 E2EA B7 F01A        STA A  OUTSW
03560 E2ED 7D F01B        TST    SAVE
03570 E2F0 27 1C          BEQ    P3
03580 E2F2 09             DEX
03590 E2F3 FF F012        STX    XTEMP
03600 E2F6 CE F500        LDX    #ACIAS
03610 E2F9 FF F018        STX    OUTADD
03620 E2FC FE F012        LDX    XTEMP
03630 E2FF BD E09E        JSR    OUT2H
03640 E302 FF F012        STX    XTEMP
03650 E305 CE F508        LDX    #ACIAT
03660 E308 FF F018        STX    OUTADD
03670 E30B FE F012        LDX    XTEMP
03680 E30E 39      P3     RTS
03690 E30F BD E047 INPUT  JSR    BADDR
03700 E312 FF F01C        STX    BEGA
03710 E315 BD E0CC        JSR    OUTS
03720 E318 BD E047 INPUT1 JSR    BADDR
03730 E31B FF F01E        STX    ENDA
03740 E31E 39             RTS
03750 E31F 8D EE   CKSUM  BSR    INPUT
03760 E321 BD E0B1        JSR    WAIT2
03770 E324 7F F00A        CLR    CKSM
03780 E327 5F             CLR B
03790 E328 4F             CLR A
03800 E329 FE F01C        LDX    BEGA
03810 E32C 09             DEX
03820 E32D 08      CKSUM1 INX
03830 E32E AB 00          ADD A  0,X
03840 E330 C9 00          ADC B  #0
03850 E332 24 03          BCC    *+5
03860 E334 7C F00A        INC    CKSM
03870 E337 BC F01E        CPX    ENDA
03880 E33A 26 F1          BNE    CKSUM1
03890 E33C F7 F00B CKSUM2 STA B  CKSUM+1
03900 E33F B7 F00C        STA A  CKSUM+2
03910 E342 CE F00A        LDX    #CKSUM
03920 E345 C6 03          LDA B  #3

It took a bit as the OCR missed some characters.

I have a previous appointment, then will finish next page. It shouldn't be too long.


Larry
 
Last edited:
a09 assembler had no issue with the SWI OCR!

a09 assembler had no issue with the SWI OCR!

ldkraemer,

Your OCR scans look great!

I used Notepad++ with TextFX plugin and stripped the columns with the output and got this listing by reassembling with a09 on the SWI routine that is to be manually loaded into RAM:

Code:
[PLAIN]
                             NAM    SWI
                      *       OPT    O,NOG
                             ORG    $0100
                      *
                      *MIDWEST SCIENTIFIC INSTRUMENTS INC.
                      *
                      SWIVEC EQU    $F014    SWI VECTOR IN RAM
                      SFE1   EQU    $E133    NORMAL SWI ROUTINE
                      OUTEEE EQU    $E1D1    OUTPUT CHARACTER ROUTINE
                      *
 0100 CE011A          START  LDX    #PRCH    LOAD ADDR OF PRINT ROUTINE
 0103 FFF014                 STX    SWIVEC   PUT IN SWI VECTOR
 0106 CE011E                 LDX    #MSG
 0109 A600            PRINT  LDA A  0,X      PRINT CHARACTERS UNTIL A $04
 010B 8104                   CMP A  #4
 010D 2704                   BEQ    PRINT1
 010F 3F                     SWI             DO A SWI TO CALL THE PRINT
 0110 08                     INX             ROUTINE
 0111 20F6                   BRA    PRINT
 0113 CEE133          PRINT1 LDX    #SFE1    PUT SWI ROUTINE ADDRESS
 0116 FFF014                 STX    SWIVEC   BACK IN SWI VECTOR
 0119 3F                     SWI             RETURN TO MONITOR
                      *
 011A BDE1D1          PRCH   JSR    OUTEEE   PRINT THE CHARACTER
 011D 3B                     RTI             GO BACK TO CALLING ROUTINE
                      *
 011E 0D0A            MSG    FCB    $0D,$0A
 0120 48454C4C4F             FCC    /HELLO/
 0125 0D0A04                 FCB    $0D,$0A,$04
                             END

SYMBOL TABLE
       MSG 02 011E    OUTEEE 00 E1D1      PRCH 02 011A     PRINT 02 0109
    PRINT1 02 0113      SFE1 00 E133     START 02 0100    SWIVEC 00 F014
8 SYMBOLS

0 error(s), 0 warning(s)
[/PLAIN]

I had to comment out the OPT statement in the second line.

I used the a09 assembler with the following parameters:
./a09.exe -oM00 -LSWI.LST -BSWI.BIN MSI\ SWI.txt

-oM00 sets the assembler to 6800 instruction set.
-LSWI.LST creates a listing file SWI.LST
-BSWI.BIN creates a SWI.BIN binary output file

I then ran the following to get the S-record file (it appears you can't get both a listing and S-record output at the same time):
$ ./a09.exe -oM00 -SSWI.MOT MSI\ SWI.txt

-SSWI.MOT created a S-record output file

Code:
[PLAIN]
S1130100CE011AFFF014CE011EA600810427043F7D
S11301100820F6CEE133FFF0143FBDE1D13B0D0AD8
S10B012048454C4C4F0D0A0444
S9030000FC
[/PLAIN]

I used Cygwin, but it would have also worked with PowerShell or CMD.

Monty
 
The last page (16) is here:
Code:
03930 E347 BD E0CA        JSR    OUT2HS
03940 E34A 5A             DEC B
03950 E34B 26 FA          BNE    *-4
03960 E34D 20 64          BRA    STOP
03970 E34F 8D BE   LISTER BSR    INPUT
03980 E351 BD E0B1        JSR    WAIT2
03990 E354 CE F01C LISTA  LDX    #BEGA
04000 E357 BD E0C8        JSR   OUT4HS
04010 E35A FE F01C        LDX    BEGA
04020 E35D A6 00          LDA A  0,X
04030 E35F 36             PSH A
04040 E360 BD E0CA        JSR    OUT2HS
04050 E363 FF F01C        STX    BEGA
04060 E366 5F             CLR B
04070 E367 32             PUL A
04080 E368 81 8C          CMP A  #$8C
04090 E36A 27 18          BEQ    THREE
04100 E36C 81 8E          CMP A  #$8E
04110 E36E 27 14          BEQ    THREE
04120 E370 81 CE          CMP A  #$CE
04130 E372 27 10          BEQ    THREE
04140 E374 84 F0          AND A  #$F0
04150 E376 81 20          CMP A  #$20
04160 F378 27 0B          BEQ    TWO
04170 E37A 81 60          CMP A  #$60
04180 E37C 25 08          BCS    ONE
04190 E37E 84 30          AND A  #$30
04200 E380 81 30          CMP A  #$30
04210 E382 26 01          BNE    TWO
04220 E384 5C      THREE  INC B
04230 E385 5C      TWO    INC B
04240 E386 F7 F00E ONE    STA B  TEMP
04250 E389 27 0D          BEQ    LISTB
04260 E38B 7A F00E        DEC    TEMP
04270 E38E 27 05          BEQ    ONLYON
04280 E390 BD E0C8        JSR    OUT4HS
04290 E393 20 03          BRA    LISTB
04300 E395 BD E0CA ONLYON JSR    OUT2HS
04310 E398 FF F01C LISTB  STX    BEGA
04320 E39B CE E17D        LDX    #CRLF
04330 E39E BD E07E        JSR    PDATA1
04340 E3A1 B6 F01C        LDA A  BEGA
04350 E3A4 B1 F01E        CMP A  ENDA
04360 E3A7 25 AB          BCS    LISTA
04370 E3A9 2F 08          BGT    STOP
04380 F3AB F6 F01D        LDA B  BEGA+1
04390 E3AE F1 F01F        CMP B  ENDA+1
04400 E3B1 25 A1          BCS    LISTA
04410 E3B3 7E E0E3 STOP   JMP    CONTRL
04420 E3B6 C0 4C   TAPEIO SUB B  #'L
04430 E3B8 F7 F00E        STA B  TEMP
04440 E3BB BD E1AC        JSR    INEEE
04450 E3BE 16             TAB
04460 E3BF BD E0CC        JSR    OUTS


Thanks.

Larry
 
OCR process

OCR process

Monty,
I know nothing about that CPU, or that Assembler, I just know a bit about OCR'ing Scans of pages or PDF documents.

Glad it is working for you so far. Yes, It's easy to strip out the columns of HEX Bytes to get those for inserting in an EPROM,
as long as you don't run into the Endian problem. (I typically use NEDIT.) If the Address bytes need to be switched that can
be a problem. I've seen that before. I was lucky enough to locate an assembler that had a switch for creating the correct output.

I hope the ASCII text doesn't have too many mistakes. The OCR program (KADMOS) did a pretty good job, but I had to global
search and replace the LOWERCASE L with a 1, and ~ with 0, and on and on. A lot of the E's were converted to F's by the
OCR software. Hopefully you won't see any of those when you assemble the SOURCE Code.

THANKS.

Larry
 
Last edited:
One other TIP that might come in handy. SRECORD (Windows & Linux) has:
1. srec_cat - manipulate EPROM load files
2. srec_cmp − compare two EPROM load files for equality
3. srec_info − information about EPROM load files

You can make a set of ODD & EVEN bytes to load into two EPROMS. Plus, you can change the Output format to what you want.

Man Pages at: http://srecord.sourceforge.net/man/index.html

Larry
 
ldkraemer,

Thanks for the OCR - and your tips how to do it.
I've been using my CANON MFP scanner and CANON OCR, but had lots of errors with these old code listings.

Your OCR has been of GREAT help - Thanks!



falter - here is my resulting MSIBUG source code after some edits - there were over a hundred errors, a few OCR typos, mostly had to remove spaces in some opcodes that a09 complained about.

Code:
[PLAIN]
       NAM    MSIBUG
*
*MIDWEST SCIENTIFIC INSTRUMENTS INC.
*
*MSIBUG MONITOR MT-1 FOR USE WITH THE
*MSI 6800 COMPUTER.
*VERSION 1.7
*ACIA INTERFACES ARE AT $F500 AND $F508
*MONITOR RAM IS AT $F000.
*
*MSIBUG MONITOR MT-2 FOR USE WITH THE
*SWTPC 6800 COMPUTER USES ACIA INTERFACES
*AT $8000 AND $8004, AND RAM AT $A000.
*THE MT-2 LISTING IS THIS LISTING WITH
*THE FOLLOWING CHANGES:
*  ACIAS EQU $8000
*  ACIAT EQU $8004
*  THE EQU FOR RAM IS  EQU $A000
*  STACK IS AT $A049
*
*WRITTEN BY ED WELLS AND HAL HOFFMAN
*LAST CHANGE 1-17-78 BY HAL HOFFMAN
*
*       OPT    O
ACIAS  EQU    $F500
ACIAT  EQU    $F508
PRMNXT EQU    $E400
       ORG    $E000
IO     LDX    IOV
       JMP    0,X
POWDWN LDX    NIO
       JMP    0,X
LOAD   JSR    LOADI
       JSR    OUT3
LOAD3  JSR    INCH
       CMP A  #'S
       BNE    LOAD3
       JSR    INCH
       CMP A  #'9
       BEQ    LOAD21
       CMP A  #'1
       BNE    LOAD3
       CLR   CKSM
       BSR    BYTE
       SUB A  #2
       STA A  BYTECT
       BSR    BADDR
LOAD11 BSR    BYTE
       DEC   BYTECT
       BEQ    LOAD15
       STA A  0,X
       INX
       BRA    LOAD11
LOAD15 INC   CKSUM
       BEQ    LOAD3
LOAD19 LDA A  #'?
       JSR    OUTEEE
LOAD21 JMP    CONTRL
BADDR  BSR    BYTE
       STA A  XHI
       BSR    BYTE
       STA A  XLOW
       LDX    XHI
       RTS
BYTE   BSR    INHEX
BYTE2  ASLA
       ASLA
       ASLA
       ASLA
       TAB
       BSR    INHEX
       ABA
       TAB
       ADD B  CKSM
       STA B  CKSM
       RTS
OUTHL  LSRA
       LSRA
       LSRA
       LSRA
OUTHR  AND A  #$0F
       ADD A  #$30
       CMP A  #$39
       BLS   OUTCH
       ADD A  #7
OUTCH  JMP    OUT2
INCH   JMP    IN2
PDATA2 BSR    OUTCH
       INX
PDATA1 LDA A  0,X
       CMP A  #4
       BNE    PDATA2
       RTS
PDATAC BSR    PORTAC
       BRA    PDATA1
INHEX  BSR    INCH
INHEX2 SUB A  #$30
       BMI    CONTRL
       CMP A  #9
       BLE    IN1HG
       CMP A  #$11
       BMI    CONTRL
       CMP A  #$16
       BGT    CONTRL
       SUB A  #7
IN1HG  RTS
OUT2H  LDA A  0,X
OUT2HA BSR    OUTHL
       LDA A  0,X
       INX
       BRA    OUTHR
WAIT   JSR    INEEE
       CMP A  #$0D
       BEQ    *+5
       JMP    CONTRL
WAIT2  LDX    #CRLF
WAIT1  JSR    PDATA1
       RTS
PORTAC STX    XTEMP
       LDX    #ACIAS
       STX    OUTADD
       STX    INADD
       LDX    XTEMP
       RTS
OUT4HS BSR    OUT2H
OUT2HS BSR    OUT2H
OUTS   LDA A  #$20
       BRA    OUTCH
START  LDS    #STACK
       STS    SP
       LDX    #SFE1
       STX    SWI
       LDA A  #$13
       STA A  ACIAS
       NOP
       NOP
CONTRL LDA A  #$11
       STA A  ACIAS
       CLR   OUTSW
       LDS    SP
       LDX    #MCLOFF
       BSR    PDATAC
       JSR    INEEE
       TAB
       BSR    OUTS
       CMP B  #'L
       BEQ    TAPE
       CMP B  #'M
       BEQ    MEMORY
       CMP B  #'P
       BEQ    TAPE
       CMP B  #'R
       BEQ    PRINT
       CMP B  #'C
       BEQ    CHECK
       CMP B  #'T
       BEQ    TYPE
       CMP B  #'G
       BEQ    GO
       LDA A  PRMNXT
       CMP A  #$7E
       BNE    CONTRL
       JMP    PRMNXT
GO     JSR    INPUT1
       TSX
       LDA A  ENDA
       STA A  5,X
       LDA A  ENDA+1
       STA A  6,X
       RTI
SFE    LDX    SWI
       JMP    0,X
SFE1   STS    SP
       TSX
       TST    6,X
       BNE    *+4
       DEC   5,X
       DEC   6,X
PRINT  JSR    PORTAC
       LDX    SP
       INX
       LDA B  #3
PRINT1 JSR    OUT2HS
       DECB
       BNE    PRINT1
       JSR    OUT4HS
       JSR    OUT4HS
       LDX    #SP
       JSR    OUT4HS
       BRA    CONTRL
LOADI  LDX    INADD
       LDA A  #$55
       STA A  0,X
       LDA A  #$11
       RTS
TAPE   JMP    TAPEIO
MEMORY JMP    CHANGE
CHECK  JMP    CKSUM
TYPE   JMP    LISTER
MCLOFF FCB    $13
MCL    FCB    $0D,$0A,$14,0,0,0,0,0,'*,4









CRLF    FCB       $0D,$0A,0,0,0,0,0,0,4








MTAPE1 FCB   $0D,$0A,0,0,0,0,0,0,'S,'1,4










ECHO  FCB   $20,$20,'E,'C,'H,'O,'?,$20,4








ACIN   LDX    INADD
       BRA   *+5
ACOUT  LDX    OUTADD
       LDA A  #$13
       STA A  0,X
       LDA A  #$11
       STA A  0,X
       RTS
       FCB    0
INEEE  STX    XTEMP
       LDX    #ACIAS
       BRA    *+8
IN2    STX    XTEMP
       LDX    INADD
IN3    BSR    INCHP
       AND A  #$7F
       CMP A  #$7F
       BEQ    IN3
       BRA    OUT2+3
INCHP  LDA A  0,X
       ASRA
       BCC    INCHP
       LDA A  1,X
       RTS
       FCB    0,0

QUIT   JMP    CONTRL
OUTEEE STX    XTEMP
       LDX    #ACIAS
       BRA    *+8
OUT2   STX    XTEMP
       LDX    OUTADD
OUT3   PSHB
       BSR    POLL
       BCC    INOUT
INBRK  CLC
       PSHA
       LDA A  1,X
       AND A  #$7F
       CMP A  #5
       BNE    *+5
       COM    OUTSW
       CMP A  #$13
       BNE    *+4
       BSR    INCHP
       CMP A  #4
       BEQ    QUIT
       PULA
INOUT  TST    OUTSW
       BNE    OUT4
OUTC1  LDA B  0,X
       ASRB
       ASRB
       BCC    OUTC1
       STA A  1,X
OUT4   PULB
       LDX    XTEMP
       RTS
POLL   LDA B  0,X
       ASRB
       RTS
CHANGE JSR    BADDR
       BRA    UP1
CHANG  LDX    XHI
       JSR    OUT2HS
       DEX
CHA1   BSR    INEEE
       CMP A  #'/
       BEQ    DWN
       CMP A  #'.
       BEQ    UP
       CMP A  #'N
       BNE    *+7
       JSR    OUTS
       BRA    CHANGE
       CMP A  #$0D
       BEQ    QUIT
       CMP A  #$20
       BNE    DWN
       JSR    BYTE
       STA A  0,X
       CMP A  0,X
       BEQ    DWN
       JMP    LOAD19
DWN    INX
       BRA    UP1
UP     DEX
UP1    STX    XHI
       LDX    #CRLF
       JSR    PDATA1
       LDX    #XHI
       JSR    OUT4HS
       BRA    CHANG
PUNCH  LDA A  #$12
       JSR    OUTCH
       LDX    BEGA
       STX    TW
PUN11  LDA A  ENDA+1
       SUB A  TW+1
       LDA B  ENDA
       SBC B  TW
       BNE    PUN22
       CMP A  #16
       BCS    PUN23
PUN22  LDA A  #15
PUN23  ADD A  #4
       STA A  MCONT
       SUB A  #3
       STA A  TEMP
       LDA B  OUTSW
       PSHB
       CLR   OUTSW
       LDX    #MTAPE1
       JSR    PDATA1
       PULB
       STA B  OUTSW
       TST    SAVE
       BEQ    PUN30
       LDX    #MTAPE1
       JSR    PDATAC
       LDX    #ACIAT
       STX    OUTADD
PUN30  CLRB
       LDX    #MCONT
       BSR    PUNT2
       LDX    #TW
       BSR   PUNT2
       BSR   PUNT2
       LDX    TW
PUN32  BSR    PUNT2
       DEC   TEMP
       BNE    PUN32
       STX    TW
       COMB
       PSHB
       TSX
       BSR    PUNT2
       PULB
       LDX    TW
       DEX
       CPX    ENDA
       BNE    PUN11
       CLR   OUTSW
       LDX    #S9
       JSR    PDATA1
       JMP    CONTRL
S9     FCB      'S,'9,4


PUNT2   ADD B  0,X
       LDA A  OUTSW
       PSHA
       CLR   OUTSW
       JSR    OUT2H
       PULA
       STA A  OUTSW
       TST    SAVE
       BEQ    P3
       DEX
       STX    XTEMP
       LDX    #ACIAS
       STX    OUTADD
       LDX    XTEMP
       JSR    OUT2H
       STX    XTEMP
       LDX    #ACIAT
       STX    OUTADD
       LDX    XTEMP
P3     RTS
INPUT  JSR    BADDR
       STX    BEGA
       JSR    OUTS
INPUT1 JSR    BADDR
       STX    ENDA
       RTS
CKSUM  BSR    INPUT
       JSR    WAIT2
       CLR   CKSM
       CLRB
       CLRA
       LDX    BEGA
       DEX
CKSUM1 INX
       ADD A  0,X
       ADC B  #0
       BCC    *+5
       INC   CKSM
       CPX    ENDA
       BNE    CKSUM1
CKSUM2 STA B  CKSUM+1
       STA A  CKSUM+2
       LDX    #CKSUM
       LDA B  #3
       JSR    OUT2HS
       DECB
       BNE    *-4
       BRA    STOP
LISTER BSR    INPUT
       JSR    WAIT2
LISTA  LDX    #BEGA
       JSR   OUT4HS
       LDX    BEGA
       LDA A  0,X
       PSHA
       JSR    OUT2HS
       STX    BEGA
       CLRB
       PULA
       CMP A  #$8C
       BEQ    THREE
       CMP A  #$8E
       BEQ    THREE
       CMP A  #$CE
       BEQ    THREE
       AND A  #$F0
       CMP A  #$20
       BEQ    TWO
       CMP A  #$60
       BCS    ONE
       AND A  #$30
       CMP A  #$30
       BNE    TWO
THREE  INCB
TWO    INCB
ONE    STA B  TEMP
       BEQ    LISTB
       DEC   TEMP
       BEQ    ONLYON
       JSR    OUT4HS
       BRA    LISTB
ONLYON JSR    OUT2HS
LISTB  STX    BEGA
       LDX    #CRLF
       JSR    PDATA1
       LDA A  BEGA
       CMP A  ENDA
       BCS    LISTA
       BGT    STOP
       LDA B  BEGA+1
       CMP B  ENDA+1
       BCS    LISTA
STOP   JMP    CONTRL
TAPEIO SUB B  #'L
       STA B  TEMP
       JSR    INEEE
       TAB
       JSR    OUTS
       TST    TEMP
       BEQ    *+10
       PSHB
       JSR    INPUT
       PULB
       CLR   OUTSW
       LDX    #ECHO
       JSR    PDATAC
       JSR    INEEE
       CMP A  #'Y
       BEQ    *+5
       COM    OUTSW
       LDX    #ACIAS
       SUB B  #$30
       BEQ    *+8
       LDX   #ACIAT
       JSR   ACOUT+3
       STA B  SAVE
       TST    TEMP
       BNE    *+8
       STX    INADD
       JMP   LOAD
       STX    OUTADD
       JMP    PUNCH
       ORG    $F000
IOV    RMB    2
       RMB    4
NIO    RMB    2
SP     RMB    2
CKSM   RMB    1
BYTECT RMB    1
XHI    RMB    1
XLOW   RMB    1
TEMP   RMB    1
TW     RMB    2
MCONT  RMB    1
XTEMP  RMB    2
SWI    RMB    2
INADD  RMB    2
OUTADD RMB    2
OUTSW  RMB    1
SAVE   RMB    1
BEGA   RMB    2
ENDA   RMB    2
       RMB    $52
STACK  RMB    2
       END

[/PLAIN]

And here is my a09 assembler listing output for the above source code:

The warning can be ignored - the assembler found in line 117 an unnecessary long branch. I left it alone as it keeps the code bytes at the same address as the original.

MSI-BUG.txt(117) : warning 1: Long branch within short branch range could be optimized in "WAIT1 JSR PDATA1"
1 warning(s) in pass 2


Code:
[PLAIN]
                             NAM    MSIBUG
                      *
                      *MIDWEST SCIENTIFIC INSTRUMENTS INC.
                      *
                      *MSIBUG MONITOR MT-1 FOR USE WITH THE
                      *MSI 6800 COMPUTER.
                      *VERSION 1.7
                      *ACIA INTERFACES ARE AT $F500 AND $F508
                      *MONITOR RAM IS AT $F000.
                      *
                      *MSIBUG MONITOR MT-2 FOR USE WITH THE
                      *SWTPC 6800 COMPUTER USES ACIA INTERFACES
                      *AT $8000 AND $8004, AND RAM AT $A000.
                      *THE MT-2 LISTING IS THIS LISTING WITH
                      *THE FOLLOWING CHANGES:
                      *  ACIAS EQU $8000
                      *  ACIAT EQU $8004
                      *  THE EQU FOR RAM IS  EQU $A000
                      *  STACK IS AT $A049
                      *
                      *WRITTEN BY ED WELLS AND HAL HOFFMAN
                      *LAST CHANGE 1-17-78 BY HAL HOFFMAN
                      *
                      *       OPT    O
                      ACIAS  EQU    $F500
                      ACIAT  EQU    $F508
                      PRMNXT EQU    $E400
                             ORG    $E000
 E000 FEF000          IO     LDX    IOV
 E003 6E00                   JMP    0,X
 E005 FEF006          POWDWN LDX    NIO
 E008 6E00                   JMP    0,X
 E00A BDE15C          LOAD   JSR    LOADI
 E00D BDE1DF                 JSR    OUT3
 E010 BDE078          LOAD3  JSR    INCH
 E013 8153                   CMP A  #'S
 E015 26F9                   BNE    LOAD3
 E017 BDE078                 JSR    INCH
 E01A 8139                   CMP A  #'9
 E01C 2726                   BEQ    LOAD21
 E01E 8131                   CMP A  #'1
 E020 26EE                   BNE    LOAD3
 E022 7FF00A                 CLR   CKSM
 E025 8D2E                   BSR    BYTE
 E027 8002                   SUB A  #2
 E029 B7F00B                 STA A  BYTECT
 E02C 8D19                   BSR    BADDR
 E02E 8D25            LOAD11 BSR    BYTE
 E030 7AF00B                 DEC   BYTECT
 E033 2705                   BEQ    LOAD15
 E035 A700                   STA A  0,X
 E037 08                     INX
 E038 20F4                   BRA    LOAD11
 E03A 7CE31F          LOAD15 INC   CKSUM
 E03D 27D1                   BEQ    LOAD3
 E03F 863F            LOAD19 LDA A  #'?
 E041 BDE1D1                 JSR    OUTEEE
 E044 7EE0E3          LOAD21 JMP    CONTRL
 E047 8D0C            BADDR  BSR    BYTE
 E049 B7F00C                 STA A  XHI
 E04C 8D07                   BSR    BYTE
 E04E B7F00D                 STA A  XLOW
 E051 FEF00C                 LDX    XHI
 E054 39                     RTS
 E055 8D32            BYTE   BSR    INHEX
 E057 48              BYTE2  ASLA
 E058 48                     ASLA
 E059 48                     ASLA
 E05A 48                     ASLA
 E05B 16                     TAB
 E05C 8D2B                   BSR    INHEX
 E05E 1B                     ABA
 E05F 16                     TAB
 E060 FBF00A                 ADD B  CKSM
 E063 F7F00A                 STA B  CKSM
 E066 39                     RTS
 E067 44              OUTHL  LSRA
 E068 44                     LSRA
 E069 44                     LSRA
 E06A 44                     LSRA
 E06B 840F            OUTHR  AND A  #$0F
 E06D 8B30                   ADD A  #$30
 E06F 8139                   CMP A  #$39
 E071 2302                   BLS   OUTCH
 E073 8B07                   ADD A  #7
 E075 7EE1D9          OUTCH  JMP    OUT2
 E078 7EE1B4          INCH   JMP    IN2
 E07B 8DF8            PDATA2 BSR    OUTCH
 E07D 08                     INX
 E07E A600            PDATA1 LDA A  0,X
 E080 8104                   CMP A  #4
 E082 26F7                   BNE    PDATA2
 E084 39                     RTS
 E085 8D31            PDATAC BSR    PORTAC
 E087 20F5                   BRA    PDATA1
 E089 8DED            INHEX  BSR    INCH
 E08B 8030            INHEX2 SUB A  #$30
 E08D 2B54                   BMI    CONTRL
 E08F 8109                   CMP A  #9
 E091 2F0A                   BLE    IN1HG
 E093 8111                   CMP A  #$11
 E095 2B4C                   BMI    CONTRL
 E097 8116                   CMP A  #$16
 E099 2E48                   BGT    CONTRL
 E09B 8007                   SUB A  #7
 E09D 39              IN1HG  RTS
 E09E A600            OUT2H  LDA A  0,X
 E0A0 8DC5            OUT2HA BSR    OUTHL
 E0A2 A600                   LDA A  0,X
 E0A4 08                     INX
 E0A5 20C4                   BRA    OUTHR
 E0A7 BDE1AC          WAIT   JSR    INEEE
 E0AA 810D                   CMP A  #$0D
 E0AC 2703                   BEQ    *+5
 E0AE 7EE0E3                 JMP    CONTRL
 E0B1 CEE17D          WAIT2  LDX    #CRLF
 E0B4 BDE07E          WAIT1  JSR    PDATA1
*** warning 1: Long branch within short branch range could be optimized
 E0B7 39                     RTS
 E0B8 FFF012          PORTAC STX    XTEMP
 E0BB CEF500                 LDX    #ACIAS
 E0BE FFF018                 STX    OUTADD
 E0C1 FFF016                 STX    INADD
 E0C4 FEF012                 LDX    XTEMP
 E0C7 39                     RTS
 E0C8 8DD4            OUT4HS BSR    OUT2H
 E0CA 8DD2            OUT2HS BSR    OUT2H
 E0CC 8620            OUTS   LDA A  #$20
 E0CE 20A5                   BRA    OUTCH
 E0D0 8EF072          START  LDS    #STACK
 E0D3 BFF008                 STS    SP
 E0D6 CEE133                 LDX    #SFE1
 E0D9 FFF014                 STX    SWI
 E0DC 8613                   LDA A  #$13
 E0DE B7F500                 STA A  ACIAS
 E0E1 01                     NOP
 E0E2 01                     NOP
 E0E3 8611            CONTRL LDA A  #$11
 E0E5 B7F500                 STA A  ACIAS
 E0E8 7FF01A                 CLR   OUTSW
 E0EB BEF008                 LDS    SP
 E0EE CEE172                 LDX    #MCLOFF
 E0F1 8D92                   BSR    PDATAC
 E0F3 BDE1AC                 JSR    INEEE
 E0F6 16                     TAB
 E0F7 8DD3                   BSR    OUTS
 E0F9 C14C                   CMP B  #'L
 E0FB 2769                   BEQ    TAPE
 E0FD C14D                   CMP B  #'M
 E0FF 2768                   BEQ    MEMORY
 E101 C150                   CMP B  #'P
 E103 2761                   BEQ    TAPE
 E105 C152                   CMP B  #'R
 E107 2736                   BEQ    PRINT
 E109 C143                   CMP B  #'C
 E10B 275F                   BEQ    CHECK
 E10D C154                   CMP B  #'T
 E10F 275E                   BEQ    TYPE
 E111 C147                   CMP B  #'G
 E113 270A                   BEQ    GO
 E115 B6E400                 LDA A  PRMNXT
 E118 817E                   CMP A  #$7E
 E11A 26C7                   BNE    CONTRL
 E11C 7EE400                 JMP    PRMNXT
 E11F BDE318          GO     JSR    INPUT1
 E122 30                     TSX
 E123 B6F01E                 LDA A  ENDA
 E126 A705                   STA A  5,X
 E128 B6F01F                 LDA A  ENDA+1
 E12B A706                   STA A  6,X
 E12D 3B                     RTI
 E12E FEF014          SFE    LDX    SWI
 E131 6E00                   JMP    0,X
 E133 BFF008          SFE1   STS    SP
 E136 30                     TSX
 E137 6D06                   TST    6,X
 E139 2602                   BNE    *+4
 E13B 6A05                   DEC   5,X
 E13D 6A06                   DEC   6,X
 E13F BDE0B8          PRINT  JSR    PORTAC
 E142 FEF008                 LDX    SP
 E145 08                     INX
 E146 C603                   LDA B  #3
 E148 BDE0CA          PRINT1 JSR    OUT2HS
 E14B 5A                     DECB
 E14C 26FA                   BNE    PRINT1
 E14E BDE0C8                 JSR    OUT4HS
 E151 BDE0C8                 JSR    OUT4HS
 E154 CEF008                 LDX    #SP
 E157 BDE0C8                 JSR    OUT4HS
 E15A 2087                   BRA    CONTRL
 E15C FEF016          LOADI  LDX    INADD
 E15F 8655                   LDA A  #$55
 E161 A700                   STA A  0,X
 E163 8611                   LDA A  #$11
 E165 39                     RTS
 E166 7EE3B6          TAPE   JMP    TAPEIO
 E169 7EE212          MEMORY JMP    CHANGE
 E16C 7EE31F          CHECK  JMP    CKSUM
 E16F 7EE34F          TYPE   JMP    LISTER
 E172 13              MCLOFF FCB    $13
 E173 0D0A1400000000  MCL    FCB    $0D,$0A,$14,0,0,0,0,0,'*,4
 E17A 002A04
 
 
 
 
 
 
 
 
 
 E17D 0D0A0000000000  CRLF    FCB       $0D,$0A,0,0,0,0,0,0,4
 E184 0004
 
 
 
 
 
 
 
 
 E186 0D0A0000000000  MTAPE1 FCB   $0D,$0A,0,0,0,0,0,0,'S,'1,4
 E18D 00533104
 
 
 
 
 
 
 
 
 
 
 E191 20204543484F3F  ECHO  FCB   $20,$20,'E,'C,'H,'O,'?,$20,4
 E198 2004
 
 
 
 
 
 
 
 
 E19A FEF016          ACIN   LDX    INADD
 E19D 2003                   BRA   *+5
 E19F FEF018          ACOUT  LDX    OUTADD
 E1A2 8613                   LDA A  #$13
 E1A4 A700                   STA A  0,X
 E1A6 8611                   LDA A  #$11
 E1A8 A700                   STA A  0,X
 E1AA 39                     RTS
 E1AB 00                     FCB    0
 E1AC FFF012          INEEE  STX    XTEMP
 E1AF CEF500                 LDX    #ACIAS
 E1B2 2006                   BRA    *+8
 E1B4 FFF012          IN2    STX    XTEMP
 E1B7 FEF016                 LDX    INADD
 E1BA 8D08            IN3    BSR    INCHP
 E1BC 847F                   AND A  #$7F
 E1BE 817F                   CMP A  #$7F
 E1C0 27F8                   BEQ    IN3
 E1C2 2018                   BRA    OUT2+3
 E1C4 A600            INCHP  LDA A  0,X
 E1C6 47                     ASRA
 E1C7 24FB                   BCC    INCHP
 E1C9 A601                   LDA A  1,X
 E1CB 39                     RTS
 E1CC 0000                   FCB    0,0
 
 E1CE 7EE0E3          QUIT   JMP    CONTRL
 E1D1 FFF012          OUTEEE STX    XTEMP
 E1D4 CEF500                 LDX    #ACIAS
 E1D7 2006                   BRA    *+8
 E1D9 FFF012          OUT2   STX    XTEMP
 E1DC FEF018                 LDX    OUTADD
 E1DF 37              OUT3   PSHB
 E1E0 8D2C                   BSR    POLL
 E1E2 2418                   BCC    INOUT
 E1E4 0C              INBRK  CLC
 E1E5 36                     PSHA
 E1E6 A601                   LDA A  1,X
 E1E8 847F                   AND A  #$7F
 E1EA 8105                   CMP A  #5
 E1EC 2603                   BNE    *+5
 E1EE 73F01A                 COM    OUTSW
 E1F1 8113                   CMP A  #$13
 E1F3 2602                   BNE    *+4
 E1F5 8DCD                   BSR    INCHP
 E1F7 8104                   CMP A  #4
 E1F9 27D3                   BEQ    QUIT
 E1FB 32                     PULA
 E1FC 7DF01A          INOUT  TST    OUTSW
 E1FF 2608                   BNE    OUT4
 E201 E600            OUTC1  LDA B  0,X
 E203 57                     ASRB
 E204 57                     ASRB
 E205 24FA                   BCC    OUTC1
 E207 A701                   STA A  1,X
 E209 33              OUT4   PULB
 E20A FEF012                 LDX    XTEMP
 E20D 39                     RTS
 E20E E600            POLL   LDA B  0,X
 E210 57                     ASRB
 E211 39                     RTS
 E212 BDE047          CHANGE JSR    BADDR
 E215 2032                   BRA    UP1
 E217 FEF00C          CHANG  LDX    XHI
 E21A BDE0CA                 JSR    OUT2HS
 E21D 09                     DEX
 E21E 8D8C            CHA1   BSR    INEEE
 E220 812F                   CMP A  #'/
 E222 2721                   BEQ    DWN
 E224 812E                   CMP A  #'.
 E226 2720                   BEQ    UP
 E228 814E                   CMP A  #'N
 E22A 2605                   BNE    *+7
 E22C BDE0CC                 JSR    OUTS
 E22F 20E1                   BRA    CHANGE
 E231 810D                   CMP A  #$0D
 E233 2799                   BEQ    QUIT
 E235 8120                   CMP A  #$20
 E237 260C                   BNE    DWN
 E239 BDE055                 JSR    BYTE
 E23C A700                   STA A  0,X
 E23E A100                   CMP A  0,X
 E240 2703                   BEQ    DWN
 E242 7EE03F                 JMP    LOAD19
 E245 08              DWN    INX
 E246 2001                   BRA    UP1
 E248 09              UP     DEX
 E249 FFF00C          UP1    STX    XHI
 E24C CEE17D                 LDX    #CRLF
 E24F BDE07E                 JSR    PDATA1
 E252 CEF00C                 LDX    #XHI
 E255 BDE0C8                 JSR    OUT4HS
 E258 20BD                   BRA    CHANG
 E25A 8612            PUNCH  LDA A  #$12
 E25C BDE075                 JSR    OUTCH
 E25F FEF01C                 LDX    BEGA
 E262 FFF00F                 STX    TW
 E265 B6F01F          PUN11  LDA A  ENDA+1
 E268 B0F010                 SUB A  TW+1
 E26B F6F01E                 LDA B  ENDA
 E26E F2F00F                 SBC B  TW
 E271 2604                   BNE    PUN22
 E273 8110                   CMP A  #16
 E275 2502                   BCS    PUN23
 E277 860F            PUN22  LDA A  #15
 E279 8B04            PUN23  ADD A  #4
 E27B B7F011                 STA A  MCONT
 E27E 8003                   SUB A  #3
 E280 B7F00E                 STA A  TEMP
 E283 F6F01A                 LDA B  OUTSW
 E286 37                     PSHB
 E287 7FF01A                 CLR   OUTSW
 E28A CEE186                 LDX    #MTAPE1
 E28D BDE07E                 JSR    PDATA1
 E290 33                     PULB
 E291 F7F01A                 STA B  OUTSW
 E294 7DF01B                 TST    SAVE
 E297 270C                   BEQ    PUN30
 E299 CEE186                 LDX    #MTAPE1
 E29C BDE085                 JSR    PDATAC
 E29F CEF508                 LDX    #ACIAT
 E2A2 FFF018                 STX    OUTADD
 E2A5 5F              PUN30  CLRB
 E2A6 CEF011                 LDX    #MCONT
 E2A9 8D32                   BSR    PUNT2
 E2AB CEF00F                 LDX    #TW
 E2AE 8D2D                   BSR   PUNT2
 E2B0 8D2B                   BSR   PUNT2
 E2B2 FEF00F                 LDX    TW
 E2B5 8D26            PUN32  BSR    PUNT2
 E2B7 7AF00E                 DEC   TEMP
 E2BA 26F9                   BNE    PUN32
 E2BC FFF00F                 STX    TW
 E2BF 53                     COMB
 E2C0 37                     PSHB
 E2C1 30                     TSX
 E2C2 8D19                   BSR    PUNT2
 E2C4 33                     PULB
 E2C5 FEF00F                 LDX    TW
 E2C8 09                     DEX
 E2C9 BCF01E                 CPX    ENDA
 E2CC 2697                   BNE    PUN11
 E2CE 7FF01A                 CLR   OUTSW
 E2D1 CEE2DA                 LDX    #S9
 E2D4 BDE07E                 JSR    PDATA1
 E2D7 7EE0E3                 JMP    CONTRL
 E2DA 533904          S9     FCB      'S,'9,4
 
 
 E2DD EB00            PUNT2   ADD B  0,X
 E2DF B6F01A                 LDA A  OUTSW
 E2E2 36                     PSHA
 E2E3 7FF01A                 CLR   OUTSW
 E2E6 BDE09E                 JSR    OUT2H
 E2E9 32                     PULA
 E2EA B7F01A                 STA A  OUTSW
 E2ED 7DF01B                 TST    SAVE
 E2F0 271C                   BEQ    P3
 E2F2 09                     DEX
 E2F3 FFF012                 STX    XTEMP
 E2F6 CEF500                 LDX    #ACIAS
 E2F9 FFF018                 STX    OUTADD
 E2FC FEF012                 LDX    XTEMP
 E2FF BDE09E                 JSR    OUT2H
 E302 FFF012                 STX    XTEMP
 E305 CEF508                 LDX    #ACIAT
 E308 FFF018                 STX    OUTADD
 E30B FEF012                 LDX    XTEMP
 E30E 39              P3     RTS
 E30F BDE047          INPUT  JSR    BADDR
 E312 FFF01C                 STX    BEGA
 E315 BDE0CC                 JSR    OUTS
 E318 BDE047          INPUT1 JSR    BADDR
 E31B FFF01E                 STX    ENDA
 E31E 39                     RTS
 E31F 8DEE            CKSUM  BSR    INPUT
 E321 BDE0B1                 JSR    WAIT2
 E324 7FF00A                 CLR   CKSM
 E327 5F                     CLRB
 E328 4F                     CLRA
 E329 FEF01C                 LDX    BEGA
 E32C 09                     DEX
 E32D 08              CKSUM1 INX
 E32E AB00                   ADD A  0,X
 E330 C900                   ADC B  #0
 E332 2403                   BCC    *+5
 E334 7CF00A                 INC   CKSM
 E337 BCF01E                 CPX    ENDA
 E33A 26F1                   BNE    CKSUM1
 E33C F7E320          CKSUM2 STA B  CKSUM+1
 E33F B7E321                 STA A  CKSUM+2
 E342 CEE31F                 LDX    #CKSUM
 E345 C603                   LDA B  #3
 E347 BDE0CA                 JSR    OUT2HS
 E34A 5A                     DECB
 E34B 26FA                   BNE    *-4
 E34D 2064                   BRA    STOP
 E34F 8DBE            LISTER BSR    INPUT
 E351 BDE0B1                 JSR    WAIT2
 E354 CEF01C          LISTA  LDX    #BEGA
 E357 BDE0C8                 JSR   OUT4HS
 E35A FEF01C                 LDX    BEGA
 E35D A600                   LDA A  0,X
 E35F 36                     PSHA
 E360 BDE0CA                 JSR    OUT2HS
 E363 FFF01C                 STX    BEGA
 E366 5F                     CLRB
 E367 32                     PULA
 E368 818C                   CMP A  #$8C
 E36A 2718                   BEQ    THREE
 E36C 818E                   CMP A  #$8E
 E36E 2714                   BEQ    THREE
 E370 81CE                   CMP A  #$CE
 E372 2710                   BEQ    THREE
 E374 84F0                   AND A  #$F0
 E376 8120                   CMP A  #$20
 E378 270B                   BEQ    TWO
 E37A 8160                   CMP A  #$60
 E37C 2508                   BCS    ONE
 E37E 8430                   AND A  #$30
 E380 8130                   CMP A  #$30
 E382 2601                   BNE    TWO
 E384 5C              THREE  INCB
 E385 5C              TWO    INCB
 E386 F7F00E          ONE    STA B  TEMP
 E389 270D                   BEQ    LISTB
 E38B 7AF00E                 DEC   TEMP
 E38E 2705                   BEQ    ONLYON
 E390 BDE0C8                 JSR    OUT4HS
 E393 2003                   BRA    LISTB
 E395 BDE0CA          ONLYON JSR    OUT2HS
 E398 FFF01C          LISTB  STX    BEGA
 E39B CEE17D                 LDX    #CRLF
 E39E BDE07E                 JSR    PDATA1
 E3A1 B6F01C                 LDA A  BEGA
 E3A4 B1F01E                 CMP A  ENDA
 E3A7 25AB                   BCS    LISTA
 E3A9 2E08                   BGT    STOP
 E3AB F6F01D                 LDA B  BEGA+1
 E3AE F1F01F                 CMP B  ENDA+1
 E3B1 25A1                   BCS    LISTA
 E3B3 7EE0E3          STOP   JMP    CONTRL
 E3B6 C04C            TAPEIO SUB B  #'L
 E3B8 F7F00E                 STA B  TEMP
 E3BB BDE1AC                 JSR    INEEE
 E3BE 16                     TAB
 E3BF BDE0CC                 JSR    OUTS
 E3C2 7DF00E                 TST    TEMP
 E3C5 2708                   BEQ    *+10
 E3C7 37                     PSHB
 E3C8 BDE30F                 JSR    INPUT
 E3CB 33                     PULB
 E3CC 7FF01A                 CLR   OUTSW
 E3CF CEE191                 LDX    #ECHO
 E3D2 BDE085                 JSR    PDATAC
 E3D5 BDE1AC                 JSR    INEEE
 E3D8 8159                   CMP A  #'Y
 E3DA 2703                   BEQ    *+5
 E3DC 73F01A                 COM    OUTSW
 E3DF CEF500                 LDX    #ACIAS
 E3E2 C030                   SUB B  #$30
 E3E4 2706                   BEQ    *+8
 E3E6 CEF508                 LDX   #ACIAT
 E3E9 BDE1A2                 JSR   ACOUT+3
 E3EC F7F01B                 STA B  SAVE
 E3EF 7DF00E                 TST    TEMP
 E3F2 2606                   BNE    *+8
 E3F4 FFF016                 STX    INADD
 E3F7 7EE00A                 JMP   LOAD
 E3FA FFF018                 STX    OUTADD
 E3FD 7EE25A                 JMP    PUNCH
                             ORG    $F000
                      IOV    RMB    2
                             RMB    4
                      NIO    RMB    2
                      SP     RMB    2
                      CKSM   RMB    1
                      BYTECT RMB    1
                      XHI    RMB    1
                      XLOW   RMB    1
                      TEMP   RMB    1
                      TW     RMB    2
                      MCONT  RMB    1
                      XTEMP  RMB    2
                      SWI    RMB    2
                      INADD  RMB    2
                      OUTADD RMB    2
                      OUTSW  RMB    1
                      SAVE   RMB    1
                      BEGA   RMB    2
                      ENDA   RMB    2
                             RMB    $52
                      STACK  RMB    2
                             END

1 warning(s) in pass 2.

SYMBOL TABLE
     ACIAS 00 F500     ACIAT 00 F508      ACIN 02 E19A     ACOUT 02 E19F
     BADDR 02 E047      BEGA 02 F01C      BYTE 02 E055     BYTE2 02 E057
    BYTECT 02 F00B      CHA1 02 E21E     CHANG 02 E217    CHANGE 02 E212
     CHECK 02 E16C      CKSM 02 F00A     CKSUM 02 E31F    CKSUM1 02 E32D
    CKSUM2 02 E33C    CONTRL 02 E0E3      CRLF 02 E17D       DWN 02 E245
      ECHO 02 E191      ENDA 02 F01E        GO 02 E11F     IN1HG 02 E09D
       IN2 02 E1B4       IN3 02 E1BA     INADD 02 F016     INBRK 02 E1E4
      INCH 02 E078     INCHP 02 E1C4     INEEE 02 E1AC     INHEX 02 E089
    INHEX2 02 E08B     INOUT 02 E1FC     INPUT 02 E30F    INPUT1 02 E318
        IO 02 E000       IOV 02 F000     LISTA 02 E354     LISTB 02 E398
    LISTER 02 E34F      LOAD 02 E00A    LOAD11 02 E02E    LOAD15 02 E03A
    LOAD19 02 E03F    LOAD21 02 E044     LOAD3 02 E010     LOADI 02 E15C
       MCL 02 E173    MCLOFF 02 E172     MCONT 02 F011    MEMORY 02 E169
    MTAPE1 02 E186       NIO 02 F006       ONE 02 E386    ONLYON 02 E395
      OUT2 02 E1D9     OUT2H 02 E09E    OUT2HA 02 E0A0    OUT2HS 02 E0CA
      OUT3 02 E1DF      OUT4 02 E209    OUT4HS 02 E0C8    OUTADD 02 F018
     OUTC1 02 E201     OUTCH 02 E075    OUTEEE 02 E1D1     OUTHL 02 E067
     OUTHR 02 E06B      OUTS 02 E0CC     OUTSW 02 F01A        P3 02 E30E
    PDATA1 02 E07E    PDATA2 02 E07B    PDATAC 02 E085      POLL 02 E20E
    PORTAC 02 E0B8    POWDWN 02 E005     PRINT 02 E13F    PRINT1 02 E148
    PRMNXT 00 E400     PUN11 02 E265     PUN22 02 E277     PUN23 02 E279
     PUN30 02 E2A5     PUN32 02 E2B5     PUNCH 02 E25A     PUNT2 02 E2DD
      QUIT 02 E1CE        S9 02 E2DA      SAVE 02 F01B       SFE 02 E12E
      SFE1 02 E133        SP 02 F008     STACK 02 F072     START 02 E0D0
      STOP 02 E3B3       SWI 02 F014      TAPE 02 E166    TAPEIO 02 E3B6
      TEMP 02 F00E     THREE 02 E384        TW 02 F00F       TWO 02 E385
      TYPE 02 E16F        UP 02 E248       UP1 02 E249      WAIT 02 E0A7
     WAIT1 02 E0B4     WAIT2 02 E0B1       XHI 02 F00C      XLOW 02 F00D
     XTEMP 02 F012
113 SYMBOLS

0 error(s), 1 warning(s)

[/PLAIN]

And here is your S-record output for the EEPROM:

Code:
[PLAIN]
S113E000FEF0006E00FEF0066E00BDE15CBDE1DFD7
S113E010BDE078815326F9BDE07881392726813126
S113E02026EE7FF00A8D2E8002B7F00B8D198D2518
S113E0307AF00B2705A7000820F47CE31F27D1867C
S113E0403FBDE1D17EE0E38D0CB7F00C8D07B7F056
S113E0500DFEF00C398D3248484848168D2B1B169E
S113E060FBF00AF7F00A3944444444840F8B3081AE
S113E0703923028B077EE1D97EE1B48DF808A6002E
S113E080810426F7398D3120F58DED80302B5481B4
S113E090092F0A81112B4C81162E48800739A600BE
S113E0A08DC5A6000820C4BDE1AC810D27037EE028
S113E0B0E3CEE17DBDE07E39FFF012CEF500FFF046
S113E0C018FFF016FEF012398DD48DD2862020A5CB
S113E0D08EF072BFF008CEE133FFF0148613B7F56B
S113E0E00001018611B7F5007FF01ABEF008CEE1F9
S113E0F0728D92BDE1AC168DD3C14C2769C14D27F9
S113E10068C1502761C1522736C143275FC15427D4
S113E1105EC147270AB6E400817E26C77EE400BDBF
S113E120E31830B6F01EA705B6F01FA7063BFEF0B5
S113E130146E00BFF008306D0626026A056A06BD3B
S113E140E0B8FEF00808C603BDE0CA5A26FABDE0EE
S113E150C8BDE0C8CEF008BDE0C82087FEF0168632
S113E16055A7008611397EE3B67EE2127EE31F7E58
S113E170E34F130D0A1400000000002A040D0A00E6
S113E1800000000000040D0A0000000000005331EC
S113E1900420204543484F3F2004FEF0162003FE90
S113E1A0F0188613A7008611A7003900FFF012CEDD
S113E1B0F5002006FFF012FEF0168D08847F817FA3
S113E1C027F82018A6004724FBA6013900007EE0AA
S113E1D0E3FFF012CEF5002006FFF012FEF0183730
S113E1E08D2C24180C36A601847F8105260373F038
S113E1F01A811326028DCD810427D3327DF01A268D
S113E20008E600575724FAA70133FEF01239E60056
S113E2105739BDE0472032FEF00CBDE0CA098D8CB1
S113E220812F2721812E2720814E2605BDE0CC2079
S113E230E1810D27998120260CBDE055A700A1009E
S113E24027037EE03F08200109FFF00CCEE17DBDED
S113E250E07ECEF00CBDE0C820BD8612BDE075FEA8
S113E260F01CFFF00FB6F01FB0F010F6F01EF2F045
S113E2700F260481102502860F8B04B7F01180034A
S113E280B7F00EF6F01A377FF01ACEE186BDE07EC5
S113E29033F7F01A7DF01B270CCEE186BDE085CE66
S113E2A0F508FFF0185FCEF0118D32CEF00F8D2DF2
S113E2B08D2BFEF00F8D267AF00E26F9FFF00F530A
S113E2C037308D1933FEF00F09BCF01E26977FF00E
S113E2D01ACEE2DABDE07E7EE0E3533904EB00B609
S113E2E0F01A367FF01ABDE09E32B7F01A7DF01BAB
S113E2F0271C09FFF012CEF500FFF018FEF012BD46
S113E300E09EFFF012CEF508FFF018FEF01239BDC2
S113E310E047FFF01CBDE0CCBDE047FFF01E398DA7
S113E320EEBDE0B17FF00A5F4FFEF01C0908AB00C0
S113E330C90024037CF00ABCF01E26F1F7E320B7E1
S113E340E321CEE31FC603BDE0CA5A26FA20648D3A
S113E350BEBDE0B1CEF01CBDE0C8FEF01CA6003688
S113E360BDE0CAFFF01C5F32818C2718818E271410
S113E37081CE271084F08120270B8160250884300A
S113E380813026015C5CF7F00E270D7AF00E27052C
S113E390BDE0C82003BDE0CAFFF01CCEE17DBDE0B6
S113E3A07EB6F01CB1F01E25AB2E08F6F01DF1F080
S113E3B01F25A17EE0E3C04CF7F00EBDE1AC16BD15
S113E3C0E0CC7DF00E270837BDE30F337FF01ACE83
S113E3D0E191BDE085BDE1AC8159270373F01ACE0C
S113E3E0F500C0302706CEF508BDE1A2F7F01B7D8D
S113E3F0F00E2606FFF0167EE00AFFF0187EE25AC1
S9030000FC

[/PLAIN]

You will also need to write the SWI routine - assembled in a previous post, to RAM

Monty
 
ldkraemer,

Thanks for the OCR - and your tips how to do it.
I've been using my CANON MFP scanner and CANON OCR, but had lots of errors with these old code listings.

And here is your S-record output for the EEPROM:

Code:
[PLAIN]
S113E000FEF0006E00FEF0066E00BDE15CBDE1DFD7
S113E010BDE078815326F9BDE07881392726813126
S113E02026EE7FF00A8D2E8002B7F00B8D198D2518
S113E0307AF00B2705A7000820F47CE31F27D1867C
S113E0403FBDE1D17EE0E38D0CB7F00C8D07B7F056
S113E0500DFEF00C398D3248484848168D2B1B169E
S113E060FBF00AF7F00A3944444444840F8B3081AE
S113E0703923028B077EE1D97EE1B48DF808A6002E
S113E080810426F7398D3120F58DED80302B5481B4
S113E090092F0A81112B4C81162E48800739A600BE
S113E0A08DC5A6000820C4BDE1AC810D27037EE028
S113E0B0E3CEE17DBDE07E39FFF012CEF500FFF046
S113E0C018FFF016FEF012398DD48DD2862020A5CB
S113E0D08EF072BFF008CEE133FFF0148613B7F56B
S113E0E00001018611B7F5007FF01ABEF008CEE1F9
S113E0F0728D92BDE1AC168DD3C14C2769C14D27F9
S113E10068C1502761C1522736C143275FC15427D4
S113E1105EC147270AB6E400817E26C77EE400BDBF
S113E120E31830B6F01EA705B6F01FA7063BFEF0B5
S113E130146E00BFF008306D0626026A056A06BD3B
S113E140E0B8FEF00808C603BDE0CA5A26FABDE0EE
S113E150C8BDE0C8CEF008BDE0C82087FEF0168632
S113E16055A7008611397EE3B67EE2127EE31F7E58
S113E170E34F130D0A1400000000002A040D0A00E6
S113E1800000000000040D0A0000000000005331EC
S113E1900420204543484F3F2004FEF0162003FE90
S113E1A0F0188613A7008611A7003900FFF012CEDD
S113E1B0F5002006FFF012FEF0168D08847F817FA3
S113E1C027F82018A6004724FBA6013900007EE0AA
S113E1D0E3FFF012CEF5002006FFF012FEF0183730
S113E1E08D2C24180C36A601847F8105260373F038
S113E1F01A811326028DCD810427D3327DF01A268D
S113E20008E600575724FAA70133FEF01239E60056
S113E2105739BDE0472032FEF00CBDE0CA098D8CB1
S113E220812F2721812E2720814E2605BDE0CC2079
S113E230E1810D27998120260CBDE055A700A1009E
S113E24027037EE03F08200109FFF00CCEE17DBDED
S113E250E07ECEF00CBDE0C820BD8612BDE075FEA8
S113E260F01CFFF00FB6F01FB0F010F6F01EF2F045
S113E2700F260481102502860F8B04B7F01180034A
S113E280B7F00EF6F01A377FF01ACEE186BDE07EC5
S113E29033F7F01A7DF01B270CCEE186BDE085CE66
S113E2A0F508FFF0185FCEF0118D32CEF00F8D2DF2
S113E2B08D2BFEF00F8D267AF00E26F9FFF00F530A
S113E2C037308D1933FEF00F09BCF01E26977FF00E
S113E2D01ACEE2DABDE07E7EE0E3533904EB00B609
S113E2E0F01A367FF01ABDE09E32B7F01A7DF01BAB
S113E2F0271C09FFF012CEF500FFF018FEF012BD46
S113E300E09EFFF012CEF508FFF018FEF01239BDC2
S113E310E047FFF01CBDE0CCBDE047FFF01E398DA7
S113E320EEBDE0B17FF00A5F4FFEF01C0908AB00C0
S113E330C90024037CF00ABCF01E26F1F7E320B7E1
S113E340E321CEE31FC603BDE0CA5A26FA20648D3A
S113E350BEBDE0B1CEF01CBDE0C8FEF01CA6003688
S113E360BDE0CAFFF01C5F32818C2718818E271410
S113E37081CE271084F08120270B8160250884300A
S113E380813026015C5CF7F00E270D7AF00E27052C
S113E390BDE0C82003BDE0CAFFF01CCEE17DBDE0B6
S113E3A07EB6F01CB1F01E25AB2E08F6F01DF1F080
S113E3B01F25A17EE0E3C04CF7F00EBDE1AC16BD15
S113E3C0E0CC7DF00E270837BDE30F337FF01ACE83
S113E3D0E191BDE085BDE1AC8159270373F01ACE0C
S113E3E0F500C0302706CEF508BDE1A2F7F01B7D8D
S113E3F0F00E2606FFF0167EE00AFFF0187EE25AC1
S9030000FC

[/PLAIN]

You will also need to write the SWI routine - assembled in a previous post, to RAM

Monty

Thanks so much Monty! I will give this a try immediately! I seem to recall having trouble with these S rec files the last time I attempted this, but I can't remember what the issue was. Let's see how this pans out!
 
Thanks so much Monty! I will give this a try immediately! I seem to recall having trouble with these S rec files the last time I attempted this, but I can't remember what the issue was. Let's see how this pans out!

falter,

I'm not sure what type of S records was exported by a09.

I have an HxD hex editor that can export the binary file to S19, S28 or S37 Records if the a09 output doesn't work for you.

Monty
 
No it didn't work unfortunately. I remember running into this with the DREAM 6800 ROM code.

I'm thinking maybe it'd accept S19?
 
falter,

Here is the exported S19 file from HxD - I see one difference, this file has addresses starting with 0000 and the a09 file addresses started with E000.

Code:
[PLAIN]
S00600004844521B
S1130000FEF0006E00FEF0066E00BDE15CBDE1DFB7
S1130010BDE078815326F9BDE07881392726813106
S113002026EE7FF00A8D2E8002B7F00B8D198D25F8
S11300307AF00B2705A7000820F47CE31F27D1865C
S11300403FBDE1D17EE0E38D0CB7F00C8D07B7F036
S11300500DFEF00C398D3248484848168D2B1B167E
S1130060FBF00AF7F00A3944444444840F8B30818E
S11300703923028B077EE1D97EE1B48DF808A6000E
S1130080810426F7398D3120F58DED80302B548194
S1130090092F0A81112B4C81162E48800739A6009E
S11300A08DC5A6000820C4BDE1AC810D27037EE008
S11300B0E3CEE17DBDE07E39FFF012CEF500FFF026
S11300C018FFF016FEF012398DD48DD2862020A5AB
S11300D08EF072BFF008CEE133FFF0148613B7F54B
S11300E00001018611B7F5007FF01ABEF008CEE1D9
S11300F0728D92BDE1AC168DD3C14C2769C14D27D9
S113010068C1502761C1522736C143275FC15427B4
S11301105EC147270AB6E400817E26C77EE400BD9F
S1130120E31830B6F01EA705B6F01FA7063BFEF095
S1130130146E00BFF008306D0626026A056A06BD1B
S1130140E0B8FEF00808C603BDE0CA5A26FABDE0CE
S1130150C8BDE0C8CEF008BDE0C82087FEF0168612
S113016055A7008611397EE3B67EE2127EE31F7E38
S1130170E34F130D0A1400000000002A040D0A00C6
S11301800000000000040D0A0000000000005331CC
S11301900420204543484F3F2004FEF0162003FE70
S11301A0F0188613A7008611A7003900FFF012CEBD
S11301B0F5002006FFF012FEF0168D08847F817F83
S11301C027F82018A6004724FBA6013900007EE08A
S11301D0E3FFF012CEF5002006FFF012FEF0183710
S11301E08D2C24180C36A601847F8105260373F018
S11301F01A811326028DCD810427D3327DF01A266D
S113020008E600575724FAA70133FEF01239E60036
S11302105739BDE0472032FEF00CBDE0CA098D8C91
S1130220812F2721812E2720814E2605BDE0CC2059
S1130230E1810D27998120260CBDE055A700A1007E
S113024027037EE03F08200109FFF00CCEE17DBDCD
S1130250E07ECEF00CBDE0C820BD8612BDE075FE88
S1130260F01CFFF00FB6F01FB0F010F6F01EF2F025
S11302700F260481102502860F8B04B7F01180032A
S1130280B7F00EF6F01A377FF01ACEE186BDE07EA5
S113029033F7F01A7DF01B270CCEE186BDE085CE46
S11302A0F508FFF0185FCEF0118D32CEF00F8D2DD2
S11302B08D2BFEF00F8D267AF00E26F9FFF00F53EA
S11302C037308D1933FEF00F09BCF01E26977FF0EE
S11302D01ACEE2DABDE07E7EE0E3533904EB00B6E9
S11302E0F01A367FF01ABDE09E32B7F01A7DF01B8B
S11302F0271C09FFF012CEF500FFF018FEF012BD26
S1130300E09EFFF012CEF508FFF018FEF01239BDA2
S1130310E047FFF01CBDE0CCBDE047FFF01E398D87
S1130320EEBDE0B17FF00A5F4FFEF01C0908AB00A0
S1130330C90024037CF00ABCF01E26F1F7E320B7C1
S1130340E321CEE31FC603BDE0CA5A26FA20648D1A
S1130350BEBDE0B1CEF01CBDE0C8FEF01CA6003668
S1130360BDE0CAFFF01C5F32818C2718818E2714F0
S113037081CE271084F08120270B816025088430EA
S1130380813026015C5CF7F00E270D7AF00E27050C
S1130390BDE0C82003BDE0CAFFF01CCEE17DBDE096
S11303A07EB6F01CB1F01E25AB2E08F6F01DF1F060
S11303B01F25A17EE0E3C04CF7F00EBDE1AC16BDF5
S11303C0E0CC7DF00E270837BDE30F337FF01ACE63
S11303D0E191BDE085BDE1AC8159270373F01ACEEC
S11303E0F500C0302706CEF508BDE1A2F7F01B7D6D
S11303F0F00E2606FFF0167EE00AFFF0187EE25AA1
S9030000FC
[/PLAIN]

Monty
 
falter,

Here is the S19 file for the SWI routine that needs to be loaded into RAM at 0100

Code:
[PLAIN]
S00600004844521B
S1130000CE011AFFF014CE011EA600810427043F7E
S11300100820F6CEE133FFF0143FBDE1D13B0D0AD9
S10B002048454C4C4F0D0A0445
S9030000FC

[/PLAIN]

Monty
 
falter,

I read the MSIBUG document again - the SWI routine is an EXAMPLE of a user software interrupt routine.

You don't need it to run the MSIBUG EEPROM.

Monty
 
Thanks Monty!

That file worked! And I checked some of the bytes on the 6800 after it was loaded in and they seem to line up! Saved me a ton of work! Thanks muchly! Now just to see what happens when the MSI machine is presented with this 'new' EPROM...
 
Weird.

So I burned the EPROM. Then it printed off a list of what looked like every memory location and byte burned to the chip, followed by an H. According to the manual, this means 'hard errors'. But when I shut the machine down, and reloaded the EPROM contents into memory, they look fine. At least, from what I've observed.
 
Ok so the good news is.. when I fire up with this EPROM, I get a * prompt. The bad news is, none of the commands work. I hit M for example and it just linefeeds and produces another * prompt. So now I'm wondering about errors.
 
Correction... L (Load) seems to produce a response.. asks if I want to echo and then where to read from.

But nothing else so far.
 
Dang. My 6800 is failing somewhere. It's refusing to post properly about half the time I start it, and now the S records that worked perfectly earlier are popping up junk everywhere when I try to load. I think something is going bad in the machine.

I guess this project will have to be sidelined while I try to figure out what's going on.
 
Ok so the good news is.. when I fire up with this EPROM, I get a * prompt. The bad news is, none of the commands work. I hit M for example and it just linefeeds and produces another * prompt. So now I'm wondering about errors.

I didn't check my assembler listing against the MSI-BUG listing - there could be errors.

Monty
 
I managed to get the 6800 going again with a different RAM board. I've got 4 erased 2708s (NOS), and I've attempted burns on 2 of them. In each case, I get a problem with 00FF - it should be 27, but it comes out on the EPROM as 00. I've verified that 27 is in $00FF in the system RAM after I load the s19 file.. so I'm not sure what's going on with that. I'm trying a third EPROM to see what happens. The fourth doesn't seem to want to erase fully.
 
Back
Top