⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a915.asm

📁 高质量的汇编程序
💻 ASM
📖 第 1 页 / 共 5 页
字号:
; START 初始化
; MAST 主控
DISTAB: DB      0,12,25,37,50,62,75,87,100,112
KEYTAB: DB      85H,45H,25H,15H,0DH,09H,07H,06H         ;+5
        DB      8AH,4AH,2AH,1AH,12H,0EH,0CH,0BH         ;+A
        DB      80H,40H,20H,10H,08H,04H,02H,01H         ;CPL
        DB      7AH,0BAH,0DAH,0EAH,0F2H,0F6H,0F8H,0F9H  ;-5
        DB      7FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH,0FEH

START:  DI      
        IM      1
        LD      SP,5FF0H
        LD      B,0FFH
STAA0:  NOP
        LD      A,0FFH
STA1:   NOP
        OUT     (OK1),A
        DEC     A
        JP      NZ,STA1         ; -1 不等0,转
        DEC     B
        JP      NZ,STAA0        ; -1 不等0,转
        LD      C,PL16
        SET     7,C
        CALL    DISIO           ;1993,4,22
        LD      A,0C3H
        LD      (0038H),A
        LD      BC,INTR
        LD      A,C
        LD      (0039H),A
        LD      A,B
        LD      (003AH),A
        LD      A,0FFH
ATTP:   NOP
        NOP
        NOP
        NOP
        NOP
        DEC     A
        JP      NZ,ATTP         ; -1 不等0,转
        LD      A,90H   ;8255
        OUT     (PD2),A
        OUT     (PD1),A
        CALL    PROG2
        CALL    DSLAP           ;1993.6.26
        JP      STARD           ;1993.6.26
DSLAP:  LD      A,0             ;DISPLAY
        OUT     (PC2),A
        NOP
        CALL    STOP1
        NOP
        NOP
        LD      A,3FH
        OUT     (PB2),A
        NOP
        NOP
        CALL    STOP1
        CALL    STOP1
        CALL    STOP1
        NOP
        LD      A,10H
        OUT     (PC2),A
        NOP
        NOP
        NOP
        CALL    STOP1
        CALL    STOP1
        CALL    STOP1
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        LD      A,0
        OUT     (PC2),A
        CALL    STOP2
        CALL    PROG2
        LD      A,0FH
        OUT     (PB2),A
        NOP
        CALL    STOP1
        CALL    STOP1
        NOP
        LD      A,10H
        OUT     (PC2),A
        NOP
        NOP
        CALL    STOP1
        CALL    STOP1
        CALL    STOP1
        NOP
        NOP
        NOP
        NOP
        NOP
        LD      A,0
        OUT     (PC2),A
        NOP
        NOP
        CALL    STOP2
        CALL    PROG2
        LD      A,80H
        OUT     (PB2),A
        NOP
        NOP
        LD      A,10H
        OUT     (PC2),A
        CALL    STOP1
        CALL    STOP1
        CALL    STOP1
        LD      A,0
        OUT     (PC2),A
        RET             ;1993.6.26
STARD:  LD      E,0
STARTD: LD      A,E
        OUT     (PB2),A
        LD      A,04
        OUT     (PC2),A
        CALL    PROG2
        NOP
        LD      A,0
        OUT     (PC2),A
        INC     E
        LD      A,E
        CP      7FH
        JP      NZ,STARTD       ;  不等,转
        CALL    DRF532
        LD      BC,8191
        LD      HL,INTRN
        LD      DE,INTRN+1
        LD      (HL),0
        LDIR
        LD      A,80H
        LD      (WADD),A
        CALL    CLA
        LD      A,1
        LD      (PBR),A
        LD      A,64
        LD      (SION),A
        CALL    PROG2
        CALL    ASIO
        CALL    A8253
        LD      HL,WDIS1
        LD      (WDIS2),HL
        LD      A,2FH
        LD      (KAB2+2),A
        LD      (KAB3+4),A
        LD      (KAB3+7),A
        LD      (KAB3+10),A
        LD      A,1
        LD      (KAB3),A
        LD      A,9
        LD      (KAB3+1),A
        LD      IY,W25
        LD      B,80
STW25:  LD      (IY),20H
        INC     IY
        DEC     B
        JP      NZ,STW25        ; -1 不等0,转
        LD      IY,W25
        LD      (IY+13),47
        LD      (IY+16),47
        LD      (IY+56),58
        LD      (IY+78),0DH
        LD      (IY+79),0AH
        LD      A,0FFH
        LD      (WL25),A
        LD      A,07
        OUT     (PD1),A
        NOP
        NOP
        NOP
        NOP
        LD      A,06
        OUT     (PD1),A
        LD      A,1
        LD      (PB),A
        LD      (KWF),A
        LD      (SWF),A
        LD      A,45
        LD      (W1050),A
        CALL    READ
        LD      IY,KW25
        LD      B,80
SWQ:    LD      (IY),20H
        INC     IY
        DEC     B
        JP      NZ,SWQ  ; -1 不等0,转
        LD      A,0DH
        LD      (KW25+71),A
        LD      A,0AH
        LD      (KW25+72),A
        LD      BC,QUE25
        LD      (ADSQ),BC
        LD      BC,EUE25
        LD      (ADSE),BC
        LD      (ADSE2),BC
        LD      A,0
        LD      (I18),A
        LD      A,(EF1)
        LD      (EF2),A
        LD      A,(ER1)
        LD      (ER2),A         ;1992,9,5
        NOP             ;LD A,(A2864) CP 12H  JP Z,BEG28
        LD      A,01            ;1992,8,26
        LD      (EF),A
        LD      (EF1),A
        CALL    STOP8
        LD      A,0
        LD      (ER),A
        LD      (ER1),A
        CALL    STOP8
        LD      A,12H
        LD      (A2864),A
        CALL    STOP8
        JP      BEG281
BEG28:  LD      A,(ER1)         ;1992,8,26
        LD      (ER),A
        LD      A,(EF1)
        LD      (EF),A
BEG281: LD      IY,SW25         ;1992,7,1++++
        LD      B,80
SWQE:   LD      (IY),20H
        INC     IY
        DEC     B
        JP      NZ,SWQE         ; -1 不等0,转
        LD      IY,SW25
        LD      (IY+62),0DH
        LD      (IY+63),0AH
        LD      A,0
        LD      (SW251),A
        LD      (SWR),A
        LD      (PT),A          ;1992,8,21
        LD      E,4FH           ;1993,1,18
        CALL    DIS2
        LD      E,4BH
        CALL    DIS2            ;1993,1,18^^^
        CALL    LMG             ;1992,7,7
        LD      A,0
        LD      (K500),A
        LD      C,PL16          ;1993.4.23
        SET     7,C
        CALL    DISIO           ;1993.4.23
        JP      MAST
QE25:   LD      A,(Q12)         ;1992,8,26
        CP      0
        JP      Z,QE251         ; 等于,转
        CP      1
        JP      Z,QE252         ; 等于,转
        LD      A,0
        LD      (Q12),A
        CALL    SENH
        RET
QE251:  INC     A
        LD      (Q12),A
        LD      A,(ER)
        LD      (ER1),A
        RET
QE252:  INC     A
        LD      (Q12),A
        LD      A,(EF)
        LD      (EF1),A
        RET                     ;1992,9,2^^^^^
OKK:    OUT     (OK1),A
        OUT     (OK2),A
        OUT     (OK3),A
        OUT     (OK4),A 
        RET
STOP8:  LD      B,5
        LD      A,0FFH
STOP81: DEC     A
        NOP
        NOP
        NOP
        JP      NZ,STOP81       ; -1 不等0,转
        DEC     B
        JP      NZ,STOP81       ; -1 不等0,转
        RET
A8253:  LD      A,36H
        OUT     (TT4),A
        LD      A,52
        OUT     (TT1),A
        NOP
        NOP
        LD      A,0
        OUT     (TT1),A
        NOP
        LD      A,76H
        OUT     (TT4),A
        LD      A,52
        OUT     (TT2),A
        NOP
        NOP
        LD      A,00
        OUT     (TT2),A
        NOP
        LD      A,0B6H
        OUT     (TT4),A
        LD      A,52
        OUT     (TT3),A
        NOP
        NOP
        LD      A,0
        OUT     (TT3),A
        RET
ASIO:   LD      A,18H               ;00无效,011通道中断,000寄存器0    
        OUT     (SIOAC),A
        LD      A,14H               ;00无效,010复位外部/状态中断,100寄存器4
        OUT     (SIOAC),A
        LD      A,47H               ;01*16工作方式,00同步字符,01每字符1停止位,11偶效验
        OUT     (SIOAC),A
        LD      A,03H               ;指向寄存器3
        OUT     (SIOAC),A
        LD      A,0C1H              ;11 8位/字,0关闭外部控制,0000**,1接收器工作
        OUT     (SIOAC),A
        LD      A,05                ;指向寄存器5
        OUT     (SIOAC),A
        LD      A,0EAH              ;1DTR输出低电平,11发送8位/字,
        OUT     (SIOAC),A
        LD      A,11H               ;指向寄存器1
        OUT     (SIOAC),A
        LD      A,00                ;关闭所有中断,不使用WAIT/RDY信号
        OUT     (SIOAC),A
        RET
STOP1:  LD      A,2
STOP11: DEC     A
        JP      NZ,STOP11       ; -1 不等0,转
        RET
STOP2:  LD      B,1
STOP21: LD      A,0FFH
STOP22: NOP
        DEC     A
        JP      NZ,STOP22       ; -1 不等0,转
        DEC     B
        JP      NZ,STOP21       ; -1 不等0,转
        RET
INTR:   LD      A,(INTRN)
        INC     A
        LD      (INTRN),A
        LD      A,01
        ADD     A,A
        RET
MAST:   LD      A,0
        EI
        NOP
        NOP
        CALL    STOP2           ;***********************
        CALL    INTR
        NOP
        DI
        CP      0
        JP      Z,MAST          ; 等于,转
        CALL    PROG2
        LD      A,(INTRN)
        BIT     0,A
        CALL    NZ,PROG4
        LD      A,(INTRN)
        AND     03
        CP      2
        CALL    Z,PROG8
        LD      A,(INTRN)
        AND     0FH
        CP      0
        CALL    Z,PRO32A
        LD      A,(INTRN)
        AND     0FH
        CP      08H
        CALL    Z,PRO32B
        JP      MAST
PROG2:  OUT     (OK1),A
        OUT     (OK2),A
        OUT     (OK3),A
        OUT     (OK4),A
        LD      A,(K500)
        INC     A
        LD      (K500),A
        CP      250
        RET     C
        LD      A,0
        LD      (K500),A
        CALL    A500
        RET
A500:   LD      A,(K1000)
        INC     A
        LD      (K1000),A
        CP      120
        RET     C
        LD      A,0
        LD      (K1000),A
        CALL    CLOCK
        CALL    BCL25           ;1992,9,18
        CALL    SIOTM
        LD      C,PL10          ;1993,1,15^^^
        RES     7,C
        CALL    DISIO           ;1993,1,15+++
        RET
PROG4:  CALL    SIOT
        CALL    SIORE
        RET
SIOT:   LD      A,(SIONU)
        AND     0FH
        CP      0AH
        JP      C,SIOT1         ; 小于,转
        CALL    SIOTS
        LD      A,0
        LD      (SIONU),A
        RET
SIOT1:  INC     A
        LD      (SIONU),A
        RET
SIOTS:  LD      A,(PTW)
        CP      0
        RET     Z
        LD      HL,SIOTDS
        LD      B,0
        LD      A,(PBR)
        LD      C,A
        ADD     HL,BC
SIOTS1: IN      A,(SIOAC)
        BIT     2,A
        JP      Z,SIOTS2                ; 等于,转
        PUSH    HL
        PUSH    BC
        LD      C,PL19
        CALL    DISIO
        POP     BC
        POP     HL
        LD      A,(HL)
        OUT     (SIOAD),A
        LD      A,(PBR)
        LD      E,A
        LD      A,(SION)
        CP      E
        JP      NZ,SIOTS3       ; 不等,转
        LD      A,1
        LD      (PBR),A
        JP      SIOTS4
SIOTS3: LD      A,(PBR)
        INC     A
        LD      (PBR),A
SIOTS4: LD      A,(PBR)
        LD      E,A
        LD      A,(PTW)
        CP      E
        JP      NZ,SIOTSE       ;  不等,转
        LD      A,0
        LD      (PTW),A
SIOTSE: LD      A,0FFH
        RET
SIOTS2: CALL    ALMWO
        LD      C,PL17
        CALL    DISIO
        JP      SIOTSE
DISIO:  LD      A,C
        OUT     (PB2),A
        LD      A,04
        OUT     (PC2),A
        NOP
        NOP
        NOP
        NOP
        LD      A,0
        OUT     (PC2),A
        RET
SIOTW:  LD      IX,SIOW+1
        LD      IY,SIOW
        LD      A,(PTW)
        LD      (SIOW+20),A
SIOTW0: LD      A,(PBR)
        LD      E,A
        LD      A,(PTW)
        CP      E
        JP      Z,SIOTW2                ; 等于,转
        LD      A,(PTW)
        CP      0
        JP      NZ,SIOTW1               ; 不等0,转
        LD      A,(PBR)
        LD      (PTW),A
SIOTW1: LD      HL,SIOTDS
        LD      B,0
        LD      A,(PTW)
        LD      C,A
        ADD     HL,BC
        LD      A,(IX)
        LD      (HL),A
        LD      A,(SION)
        LD      E,A
        LD      A,(PTW)
        CP      E
        JP      NZ,SIOTW3       ;  不等,转
        LD      A,1
        LD      (PTW),A
        JP      SIOTW4
SIOTW3: LD      A,(PTW)
        INC     A
        LD      (PTW),A
SIOTW4: INC     IX
        DEC     (IY)
        JP      NZ,SIOTW0       ; -1 不等0,转
        RET
SIOTW2: CALL    ALMWO
        LD      C,PL19
        CALL    DISIO
        LD      A,(SIOW+20)
        LD      (PTW),A
        RET
PROG8:  NOP             ;CALL COMRM
        CALL    OUT25
        CALL    KOT25
        CALL    SOT25           ;1992,7,1
        RET
SIORE:  IN      A,(SIOAC)               ;1992,8,21
        RRC     A
        RET     NC
        IN      A,(SIOAD)
        LD      E,A
        LD      A,(SIORDP)
        CP      0
        JP      NZ,SIORE1       ; 不等0,转
        LD      A,E

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -