View Single Post
  #2  
Old 01-30-2008, 07:20 AM
Grant Stockly Grant Stockly is offline
Administrator
 
Join Date: Jan 2005
Posts: 447
Default

Assembled Listing
Code:
    0 : =$100               MIVEC         EQU   $100
    0 : =$104               NMIVEC  EQU   $104
    0 : =$F002              STRAPS  EQU   $F002
    0 : =$0                 NOTERM  EQU   0
    0 : =$F000              ACIACS  EQU   $F000
    0 : =$F001              ACIADA  EQU   $F001
    0 :                     ;**
    0 :                     ;**MONITOR STACK AND FLAGS
    0 :                     ;**
   F1 :                       ORG $F1
   F1 :                     STACK         RMB 1       ;BOTTOM OF MONITOR'S STACK
   F2 :                     BRKADR  RMB 1       ;BREAKPOINT ADDRESS FLAG
   F3 :                     ECHO          RMB 1       ;TTY ECHO FLAG
   F4 :                     EXTFLG  RMB 1       ;ENTENDED CHARACTER FLAG
   F5 :                     BUFULL  RMB 1       ;BUFFER FULL FLAG
   F6 :                     SAVSTK  RMB 2       ;TEMP FOR STACK POINTER
   F8 :                     TEMP          RMB 1       ;TEMPORARY STORAGE
   F9 :                     BYTECT  RMB 1       ;BYTE COUNT
   FA :                     XHI           RMB 1       ;XREG HIGH
   FB :                     XLOW          RMB 1       ;XREG LOW
   FC :                     SHIFT         RMB 1       ;BAUDOT SHIFT FLAG
   FD :                     SAVEX         RMB 2       ;TEMP FOR INDEX RG
   FF :                     BUFFER  RMB 1       ;BAUDOT CHARACTER FLAG
  100 :                     ;**
  100 :                     ;* START OF PROM
  100 :                     ;**
 FF00 :                       ORG $FF00
 FF00 :                     ;**
 FF00 :                     ;* INPUT ONE CHAR INTO A-REGISTER
 FF00 :                     ;* ECHO CHARACTER IF BIT 7 OF ECHO FLAG IS CLEAR
 FF00 :                     ;**
 FF00 : 8D 22               INCH    BSR   POLCAT      ;ACIA STATUC TO A REG
 FF02 : 24 FC                 BCC   INCH        ;RECEIVE NOT READY
 FF04 : C6 7F                 LDA   B, #$7F     ;MASK FOR PARITY REMOVAL
 FF06 : D1 F3                 CMP   B, ECHO     ;CHECK ECHO FLAG
 FF08 : F4 F0 01              AND   B, ACIADA   ;GET CARACTER
 FF0B : 24 74                 BCC   OUTCH       ;ECHO
 FF0D : 39                    RTS               ;NO ECHO
 FF0E :                     ;**
 FF0E :                     ;* THE FOLLOWING NOP LINES LINES UP THE ENTRY
 FF0E :                     ;* POINTS TO POLCAT IN THE TWO VERSIONS
 FF0E :                     ;* OF THE MONITOR
 FF0E :                     ;**
 FF0E : 01                    NOP
 FF0F :                     ;**
 FF0F :                     ;* INPUT ONE HEX DIGIT INTO B REG
 FF0F :                     ;* RETURN TO CALLING PROGRAM IF
 FF0F :                     ;* CHARACTER RECEIVED IS A HEX
 FF0F :                     ;* DIGIT. IF NOT HEX, GO TO CRLF
 FF0F :                     ;**
 FF0F : 8D EF               INHEX BSR     INCH        ;GET A CHARACTER
 FF11 : C0 30                 SUB   B, #'0'
 FF13 : 2B 3C                 BMI   C1          ;NOT HEX
 FF15 : C1 09                 CMP   B, #$09
 FF17 : 2F 0A                 BLE   IN1HG       ;NOT HEX
 FF19 : C1 11                 CMP   B, #$11
 FF1B : 2B 34                 BMI   C1          ;NOT HEX 
 FF1D : C1 16                 CMP   B, #$16
 FF1F : 2E 30                 BGT   C1          ;NOT HEX
 FF21 : C0 07                 SUB   B, #$07     ;IT'S A LETTER-GET BCD
 FF23 : 39                  IN1HG   RTS               ;RETURN
 FF24 :                     ;**
 FF24 :                     ;* POLE FOR CHARACTER
 FF24 :                     ;* SETS CARRY IF CHARACTER IS IN BUFFER
 FF24 :                     ;* CLOBBERS 8 REG
 FF24 :                     ;**
 FF24 : F6 F0 00            POLCAT LDA    B, ACIACS   ;ACIA STATUS T0 B
 FF27 : 57                    ASRB              ;ROTATE RDRF BIT INTO CARRY
 FF28 : 39                    RTS               ;RETURN
 FF29 :                     ;**
 FF29 :                     ;* LOAD PAPER TAPE
 FF29 :                     ;* LOAD ONLY S1 TYPE RECORDS 
 FF29 :                     ;* TERMINATE ON S9 OR CHECKSUM ERROR
 FF29 :                     ;**
 FF29 : 8D D5               LOAD    BSR   INCH        ;READ FRAME
 FF2B : C0 53                 SUB   B, #'S'
 FF2D : 26 FA                 BNE   LOAD        ;FIRST CHAR NOT (S)
 FF2F : 8D CF                 BSR   INCH        ;READ FRAME
 FF31 : C1 39                 CMP   B, #'9'
 FF33 : 27 1C                 BEQ   C1          ;S9 END OF FILE
 FF35 : C1 31                 CMP   B, #'1'
 FF37 : 26 F0                 BNE   LOAD        ;SECOND CHAR NOT (1)
 FF39 : 4F                    CLR   A           ;ZERO THE CHECKSUM
 FF3A : 8D 17                 BSR   BYTE        ;READ BYTE
 FF3C : C0 02                 SUB   B, #$02
 FF3E : D7 F9                 STA   B, BYTECT   ;BYTE COUNT
 FF40 : 8D 20                 BSR   BADDR       ;GET ADDRESS OF BLOCK
 FF42 : 8D 0F               LOAD11 BSR    BYTE        ;GET DATA BYTE
 FF44 : 7A 00 F9              DEC   BYTECT      ;DECREMENT BYTE COUNT
 FF47 : 27 05                 BEQ   LOAD15      ;DONE WITH THIS BLOCK
 FF49 : E7 00                 STA   B, 0, X     ;STORE DATA
 FF4B : 08                    INX               ;BUMP POINTER
 FF4C : 20 F4                 BRA   LOAD11      ;GO BACK FOR MORE
 FF4E : 4C                  LOAD15 INC    A           ;INCREMENT CHECKSUM
 FF4F : 27 D8               LLOAD   BEQ   LOAD        ;ALL OK - IT'S ZERO
 FF51 : 20 58               C1      BRA   CRLF        ;CHECKSUM ERROR - QUIT
 FF53 :                     ;**
 FF53 :                     ;* READ BYTE (2 HEX DIGITS)
 FF53 :                     ;* INTO B REG
 FF53 :                     ;* A IS USED FOR PAPER TAPE CHECKSUM
 FF53 :                     ;**
 FF53 : 8D BA               BYTE    BSR   INHEX       ;GET FIRST HEX DIG
 FF55 : 58                    ASL   B           ;GET SHIFT TO HIGH ORDER 4 BITS
 FF56 : 58                    ASL   B
 FF57 : 58                    ASL   B
 FF58 : 58                    ASL   B
 FF59 : 1B                    ABA               ;ADD TO CHEKSUM
 FF5A : D7 F8                 STA   B, TEMP     ;STORE DIGIT
 FF5C : 8D B1                 BSR   INHEX       ;GET 2ND HEX DIG
 FF5E : 1B                    ABA               ;ADD TO CHECKSUM
 FF5F : DB F8                 ADD   B, TEMP     ;COMBINE DIGITS TO GET BYTE
 FF61 : 39                    RTS               ;RETURN
 FF62 :                     ;**
 FF62 :                     ;* READ 16 BIT ADDRESS INTO X
 FF62 :                     ;* STORE SAME ADDRESS IN XHI & XLO
 FF62 :                     ;* CLOBBERS B REG
 FF62 :                     ;**
 FF62 : 8D EF               BADDR BSR     BYTE        ;GET HIGH ORDER ADDRESS
 FF64 : D7 FA                 STA   B, XHI      ;STORE IT
 FF66 : 8D EB                 BSR   BYTE        ;GET LOW ORDER ADDRESS
 FF68 : D7 FB                 STA   B, XLOW     ;STORE IT
 FF6A : DE FA                 LDX   XHI         ;LOAD X WITH ADDRESS BUILT
 FF6C : 39                    RTS               ;RETURN
 FF6D :                     ;**
 FF6D :                     ;* PRINT BYTE IN A REG
 FF6D :                     ;* CLOBBERS B REG
 FF6D :                     ;**
 FF6D : 16                  OUT2H   TAB               ;COPY BYTE TO B
 FF6E : 54                    LSR   B           ;SHIFT TO RIGHT
 FF6F : 54                    LSR   B
 FF70 : 54                    LSR   B
 FF71 : 54                    LSR   B
 FF72 : 8D 01                 BSR   OUTHR       ;OUTPUT FIRST DIGIT
 FF74 : 16                    TAB               ;BYTE INTO B AGAIN
 FF75 : C4 0F               OUTHR AND     B, #$0F     ;GET RID OF LEFT DIG
 FF77 : CB 30                 ADD   B, #$30     ;GET ASCII
 FF79 : C1 39                 CMP   B, #$39
 FF7B : 23 04                 BLS   OUTCH
 FF7D : CB 07                 ADD   B, #$07     ;IF IT'S A LETTER ADD 7
 FF7F : 01                    NOP               ;LINE UP OUTCH ENTRY POINTS
 FF80 : 01                    NOP
 FF81 : 8C                  OUTCH   FCB   $8C         ;USE CPX SKIP TRICK
 FF82 : C6 20               OUTS    LDA   B, #$20     ;OUTS PRINTS A SPACE
 FF84 :                     ;**
 FF84 :                     ;* OUTCH OUTPUTS CHARACTER IN B
 FF84 :                     ;**
 FF84 : 37                    PSH   B           ;SAVE CHAR
 FF85 : 8D 9D               OUTC1 BSR     POLCAT      ;ACIA STATUS TO B REG
 FF87 : 57                    ASR   B
 FF88 : 24 FB                 BCC   OUTC1       ;XMIT NOT READY
 FF8A : 33                    PUL   B           ;CHAR BACK TO B REG
 FF8B : F7 F0 01              STA   B, ACIADA   ;OUTPUT CHARACTER
 FF8E : 39                    RTS
 FF8F :                     ;**
 FF8F :                     ;* EXAMINE AND DEPOSIT NEXT
 FF8F :                     ;* USES CONTENTS OF XHI & XLO AS POINTER
 FF8F :                     ;**
 FF8F : DE FA               NCHANG LDX    XHI         ;INCREMENT POINTER
 FF91 : 08                    INX
 FF92 : DF FA                 STX   XHI
 FF94 : 96 FA                 LDA   A, XHI
 FF96 : 8D D5                 BSR   OUT2H       ;PRINT OUT ADDRESS
 FF98 : 96 FB                 LDA   A, XLOW
 FF9A : 8D D1                 BSR   OUT2H
 FF9C : 8C                    FCB   $8C         ;USE CPX SKIP TRICK
 FF9D :                     ;**
 FF9D :                     ;* EXAMINE & DEPOSIT
 FF9D :                     ;**
 FF9D : 8D C3               CHANGE BSR    BADDR       ;BUILD ADDRESS
 FF9F : 8D E1                 BSR   OUTS        ;PRINT SPACE
 FFA1 : A6 00                 LDA   A, 0, X     ;BYTE INTO A
 FFA3 : 8D C8                 BSR   OUT2H       ;PRINT BYTE
 FFA5 : 8D DB                 BSR   OUTS        ;PRINT SPACE
 FFA7 : 8D AA                 BSR   BYTE        ;GET NEW BYTE
 FFA9 : E7 00                 STA   B, 0, X     ;STORE NEW BYTE
 FFAB :                     ;**
 FFAB :                     ;* COMMAND DECODING SECTION
 FFAB :                     ;**
 FFAB : 9E F6               CRLF    LDS   SAVSTK
 FFAD : C6 0D                 LDA   B, #$0D     ;CARRIAGE RETURN
 FFAF : 8D D0                 BSR   OUTCH
 FFB1 : C6 0A                 LDA   B, #$0A     ;LINE FEED
 FFB3 : 8D CC                 BSR   OUTCH
 FFB5 : C6 2E                 LDA   B, #'.'     ;PROMPT CHARACTER
 FFB7 : 8D C8                 BSR   OUTCH
 FFB9 : BD FF 00              JSR   INCH        ;READ CHARACTER
 FFBC : 17                    TBA               ;MAKE A COPY
 FFBD : 8D C3                 BSR   OUTS        ;PRINT SPACE
 FFBF : 81 4C                 CMP   A, #'L'
 FFC1 : 27 8C                 BEQ   LLOAD       ;LOAD PAPER TAPE
 FFC3 : 81 4A                 CMP   A, #'J'
 FFC5 : 26 04                 BNE   NOTJ
 FFC7 : 8D 99                 BSR   BADDR       ;GET ADDRESS TO JUMP TO
 FFC9 : 6E 00                 JMP   0, X        ;JUMP TO IT
 FFCB : 81 4D               NOTJ    CMP   A, #'M'
 FFCD : 27 CE                 BEQ   CHANGE      ;EXAMINE & DEPOSIT
 FFCF : 81 4E                 CMP   A, #'N'
 FFD1 : 27 BC                 BEQ   NCHANG      ;E & D NEXT
 FFD3 : 81 50                 CMP   A, #'P'
 FFD5 : 26 D4                 BNE   CRLF
 FFD7 : 3B                    RTI               ;PROCEDE FROM BREAKPOINT
 FFD8 :                     ;**
 FFD8 :                     ;* RESET ENTRY POINT
 FFD8 :                     ;**
 FFD8 : 8E 00 F3            RESET LDS     #ECHO       ;INITIALIZE STACK POINTER
 FFDB : C6 03                 LDA   B, #$03     ;INIT ECHO AND BRKADR FLAGS
 FFDD : 37                    PSH   B
 FFDE : 37                    PSH   B
 FFDF : F7 F0 00              STA   B, ACIACS   ;MASTER RESET ACIA
 FFE2 : F6 F0 02              LDA   B, STRAPS   ;LOOK AT STRAPS
 FFE5 : 2B 19                 BMI   NOTERM      ;NO TERM - JUMP TO 0
 FFE7 : C4 04                 AND   B, #$04     ;GET # OF STOP BITS
 FFE9 : CA D1                 ORA   B, #$D1
 FFEB : F7 F0 00              STA   B, ACIACS   ;INIT ACIA PORT
 FFEE :                     ;**
 FFEE :                     ;* SOFTWARE INTERRUPT ENTRY POINT
 FFEE :                     ;**
 FFEE : 9F F6               INTRPT STS    SAVSTK      ;SAVE STACK POINTER
 FFF0 : 9F FA                 STS   XHI         ;SAVE SP FOR N COMMAND
 FFF2 : D6 F2                 LDA   B, BRKADR   ;IF BIT 7 OF BRKADR IS SET
 FFF4 : 2B 0A                 BMI   NOTERM      ;JUMP TO 0
 FFF6 : 20 B3                 BRA   CRLF        ;GOTO COMMAND DECODER
 FFF8 :                     ;**
 FFF8 :                     ;* NOW COME THE INTERRUPT VECTORS
 FFF8 :                     ;**
 FFF8 :                       ORG   $FFF8
 FFF8 : 01 00                 FDB   MIVEC       ;MI VECTOR
 FFFA : FF EE                 FDB   INTRPT      ;SWI VECTOR
 FFFC : 01 04                 FDB   NMIVEC      ;NMI VECTOR
 FFFE : FF D8                 FDB   RESET       ;RESET VECTOR
10000 :                     
10000 :                       END

  symbol table (* = unused):
  ------------------------

 ACIACS :                      F000 - |  ACIADA :                      F001 - |
*ARCHITECTURE :  i386-unknown-win32 - |  BADDR :                       FF62 C |
*BIGENDIAN :                      0 - | *BRANCHEXT :                      0 - |
 BRKADR :                        F2 C | *BUFFER :                        FF C |
*BUFULL :                        F5 C |  BYTE :                        FF53 C |
 BYTECT :                        F9 C |  C1 :                          FF51 C |
*CASESENSITIVE :                  0 - |  CHANGE :                      FF9D C |
*CONSTPI :        3.141592653589793 - |  CRLF :                        FFAB C |
*DATE :                   1/29/2008 - |  ECHO :                          F3 C |
*EXTFLG :                        F4 C | *FALSE :                          0 - |
*FULLPMMU :                       1 - | *HAS64 :                          1 - |
*HASDSP :                         0 - | *HASFPU :                         0 - |
*HASPMMU :                        0 - |  IN1HG :                       FF23 C |
 INCH :                        FF00 C | *INEXTMODE :                      0 - |
 INHEX :                       FF0F C | *INLWORDMODE :                    0 - |
*INMAXMODE :                      0 - | *INSRCMODE :                      0 - |
*INSUPMODE :                      0 - |  INTRPT :                      FFEE C |
*LISTON :                         1 - |  LLOAD :                       FF4F C |
 LOAD :                        FF29 C |  LOAD11 :                      FF42 C |
 LOAD15 :                      FF4E C | *MACEXP :                         1 - |
 MIVEC :                        100 - | *MOMCPU :                      6800 - |
*MOMCPUNAME :                  6800 - |  NCHANG :                      FF8F C |
*NESTMAX :                      100 - |  NMIVEC :                       104 - |
 NOTERM :                         0 - |  NOTJ :                        FFCB C |
 OUT2H :                       FF6D C |  OUTC1 :                       FF85 C |
 OUTCH :                       FF81 C |  OUTHR :                       FF75 C |
 OUTS :                        FF82 C | *PACKING :                        0 - |
*PADDING :                        0 - |  POLCAT :                      FF24 C |
*RELAXED :                        1 - |  RESET :                       FFD8 C |
*SAVEX :                         FD C |  SAVSTK :                        F6 C |
*SHIFT :                         FC C | *STACK :                         F1 C |
 STRAPS :                      F002 - |  TEMP :                          F8 C |
*TIME :                    23:17:26 - | *TRUE :                           1 - |
*VERSION :                     142F - |  XHI :                           FA C |
 XLOW :                          FB C |

     69 symbols
     34 unused symbols

 AS V1.42 Beta [Bld 55] - source file flash_mon.asm - page 7 - 1/29/2008 23:17:26


  codepages:
  ----------

STANDARD (0 changed characters)


0.03 seconds assembly time

    242 lines source file
      2 passes
      0 errors
      0 warnings
Reply With Quote