ÚVOD | Novinky | 8 Bitů | Příslušenství | Drobnosti | TTL | Kontakt


SAPI-1 | ONDRA | PMI-80 | PMD-85 | klony PMD-85 | klony SM50/40 | PETR | PLAN-80A | IQ151 | TNS


ZPS | Technické prostředky | Programové vybavení | Dokumentace


8 bity / SAPI-1 / Programové vybavení / V5.0 / ASM MIKOS


Výpis programu MIKOS/D V5.0


.XLIST
        PAGE    64
.LIST
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
TITLE MIKOS/D V5.0 23.3.88/P.P.
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;
;  VOLBA SYSTEMU PODLE CPU-KARTY
TV64    EQU     -1      ; 64/40 ZNAKU NA RADEK
CPM     EQU     00      ; CPM/ZPS-2
TYPTER  EQU     00      ; 14H..AMD16,  ODH..SM7202
;
;=========================================
        ASEG
;
;       *** DEFINOVANI PAMETOVEHO PROSTORU *
;
BIOS    EQU     1300H   ; ELSE BIOS
BUFDX   EQU     4280H   ; BUFFER CPM
BUFO    EQU     4200H   ; BUFFER OUTPUT
@R@     EQU     4000H   ; ZACATEK SYSTEMOVE RAM (1K)
RSTN    EQU     0CFH    ; RST1 .. POUZIVA SYSTEM
EP3     EQU     1800H   ; USER EPROM SYSTEM
MONIT   EQU     100H    ; SLUZBY
;-----------------------------------------------
        IF      CPM
ERAM    EQU     9FFFH   ;TOP RAM
        IF TV64
TVBEG   EQU     0F800H  ;AND1Z
        ELSE
TVBEG   EQU     0E800H  ;TV-RAM
        ENDIF
EPROM   EQU     0C00H+100H      ; O.S. EPROM
        ELSE
ERAM    EQU     0000
TVBEG   EQU     3800H   ;TV-RAM
EPROM   EQU     0C00H
        ENDIF
;
;       * MONITOR ENTRY *
;
CSTS    EQU     MONIT + 12H
CI      EQU     MONIT + 3
RI      EQU     MONIT + 6
CO      EQU     MONIT + 09H
PO      EQU     MONIT + 0CH
CINCR   EQU     MONIT + 3FH
IODEF   EQU     MONIT + 1EH
EXPR    EQU     MONIT + 27H
DBYT    EQU     MONIT + 33H
DADR    EQU     MONIT + 30H
CRLF    EQU     MONIT + 24H
HILO    EQU     MONIT + 36H
NEXT    EQU     MONIT + 39H
TEXT    EQU     MONIT + 42H
IOCHK   EQU     MONIT + 15H
SPACE   EQU     MONIT + 3CH
IOSET   EQU     MONIT + 18H
ERROR   EQU     MONIT + 2AH
ASHEX   EQU     MONIT + 2DH
HXASC   EQU     MONIT + 48H
TXIMM   EQU     MONIT + 51H
WND@    EQU     MONIT + 54H
RNAM@   EQU     MONIT + 5AH
INTER   EQU     MONIT + 5DH
SMTAB   EQU     MONIT + 7BH
;
;
LENGHT  EQU     255     ; BLOCK LENGHT
NAMLE   EQU     11      ; NAME LENGHT
COMLE   EQU     64      ; COMENT LENGHT
TVR     EQU     TVBEG+20        ; CTENI
TVW     EQU     TVBEG+36        ; ZAPIS
;-------------------------------------------
CR      EQU     0DH     ; KONSTANTY
LF      EQU     0AH
DEL     EQU     7FH     ; DELETE
ETX     EQU     03H
HT      EQU     9       ; TAB
PREAM   EQU     10H     ; PREAMBLE/POSTAMBLE
SUBS    EQU     1AH     ; END FLAG
;
; SER. I/O
URES    EQU     13H
UDATA   EQU     12H
USTAT   EQU     11H
UMODE   EQU     10H

; BLOK LABELS
SOH     EQU     01H     ; "START OF HEADER"
EOT     EQU     04H     ; "END OF TEXT"
CAN     EQU     ':'     ; JMENO PASKY
;               'A'     ; DATOVY (ASCII) BLOK
;               'B'     ; BINARNI BLOK
;
;******************************************
        ASEG
        ORG     EPROM   ;START
;******************************************
;
;====================================
;  T A B U L K A  S L U Z E B  K O S
;====================================
;

        JMP     MICOS   ;BRANCH TABLE
        JMP     INITS   ;INIT SYSTEM
        JMP     FIND    ;1
        JMP     OPEN    ;2
        JMP     CLOSE   ;3
        JMP     LOAD    ;4
        JMP     SAVE    ;5
        JMP     BINAR   ;6
ZAC:    JMP     GET@2   ;7
        JMP     REWIND  ;8
        JMP     PUT@2   ;9
        JMP     PUT@2   ;10
;
MAXSL   EQU     $-EPROM
;
;====================================
;  INICIALIZACE SYSTEMU KOS
;====================================
;
INITS:
        LXI     H,TVBEG ; TEST NA TERMINAL
        MVI     A,'A'   ; ZAPIS
        MOV     M,A
        CMP     M
        JZ      INIT1   ; JE AND
        MVI     A,9     ; PREPNI
        OUT     UMODE
        OUT     URES
        NOP
        MVI     A,TYPTER
        OUT     USTAT
        LXI     H,SMTAB
        LXI     D,CI@0  ; INSTALUJ OVLADANI
        MVI     B,9
        CALL    MOVE
        IN      UDATA
        CALL    TXIMM
        DB      1DH,1FH
        DC      '  '
INIT1:  CALL    TXIMM   ;OHLASENI
        DB      'MIKOS/D  V5.0   '
        DC      '(C) TESLA DIZ 1988 '
        LXI     H,KOS@@
        SHLD    KOS@+1
        LXI     H,ERROR
        SHLD    CCPM+1
        LXI     H,0
        STA     @IF1    ; FIND FLAG
        STA     @OF1
        LXI     H,ZAC   ; VYPLN IODEF
        LXI     D,R1LOC
        MVI     B,12
        CALL    MOVE
;
; INICIALIZACE A INSTALACE
;
        MVI     A,09H   ; R=,P=1
        STA     IOBYT
        LDA     EP3     ; USER SYSTEM ?
        CPI     0C3H
        CZ      EP3 + 3 ; START
        IF      NOT CPM
        CALL    BIOS    ; START CPM
        ELSE
        MVI     C,0DH   ;CLEAR
        CALL    5
        ENDIF
DUMMY:  RET
;
;====================================
;  VYHODNOCENI SLUZBY MONITORU
;====================================
;
KOS@@:  INR     C
        LXI     D,EPROM
        MVI     B,MAXSL
SLUZBA: XCHG            ; JMENO
        MOV     A,C
        ADD     C
        ADD     C       ; *3
        CMP     B
        RNC             ; VETSI
        MVI     B,0
        MOV     C,A     ; OFFSET
        DAD     B       ; VYPOCTI ADR
        PCHL
;
;====================================
; VYHODNOCENI POVELU OSLUHY
;====================================
;
MICOS:
        CALL    SETDMI  ;DMA
        XRA     A
        STA     EXTEXT  ; 0..NENI
        CALL    TXIMM
        DB      'OS/D		MENU:'
        DB      0DH,0AH
        DB      'DIR IDIR ERA TYPE LOAD SAVE'
        DB      0DH,0AH
        DC      'RENAME FIND OPEN CLOSE _'
        CALL    ECHO
        PUSH    PSW
        CALL    CRLF
        POP     PSW
        CPI     'O'
        JZ      OPEN    ; OPEN OUTPUT
        CPI     'C'     ; CLOSE UOTPUT
        JZ      CLOSE
        CPI     'S'
        JZ      SAVE
        CPI     'L'     ; LOAD
        JZ      LOAD
        CPI     'D'
        JZ      DIRD
        CPI     'I'
        JZ      INITD
        CPI     'T'
        JZ      TYPE
        CPI     'R'
        JZ      RENAME
        CPI     'E'
        JZ      ERA
        CPI     'F'     ; FIND
        JNZ     ERROR
;
;************************************
; REALIZACE POVELU KOS-1
;************************************
;
;====================================
; FIND: OTEVRI SOUBOR PRO CTENI
;====================================
;
FIND:   CALL    IORI
        CALL    NRI
        RM              ;SYSTEM RI
        MVI     C,1
        JNZ     CCPM    ; USER 2
;
; FIND v ram
;
FIND2:  CALL    RNAME
        JZ      DIR
        PUSH    H
        PUSH    D
        PUSH    B
        CALL    CRFCB
REWI:   LXI     D,FCB
        MVI     C,0FH
        CALL    5
        CALL    ERCPM
        LXI     D,FCB
        MVI     C,23H
        CALL    5       ; DELKA
        MVI     A,80H
        STA     IDX
        STA     @IF1
        POP     B
        POP     D
        POP     H
        RET
;
; REVIND INPUT FILE
;
REWIND: PUSH    H
        PUSH    D
        PUSH    B
        JMP     REWI    ; NOVE CTENI
;
;====================================
; LOAD BINARNI SOUBOR
;====================================
;
LOAD:   CALL    FIND    ; OTEVRI SOUBOR
LO1:    CALL    RICH
        ORA     A       ; BLANK?
        JZ      LO1
        SUI     '<'
        JNZ     ERSTP   ;#NOT BINARY FORMAT
        MOV     B,A     ;SUM
        CALL    RADR@
        SHLD    EADR    ;LAST
        XCHG
        CALL    RADR@   ;LAST
        SHLD    SADR    ; START ADR
        CALL    RICH
        CPI     '>'
        JNZ     ERSTP   ;#NOT BINARY
        CALL    CHECK
        MVI     B,0     ;CLEAR
LO2:    CALL    RICH
        MOV     M,A
        CALL    HILO
        JNC     LO2
        CALL    CHECK
        STA     SUM
; UZAVRI VSTUPNI SOUBOR
CLSTP:  CALL    CRLF
        CALL    NRI
        RM
        JNZ     CLST2
DIRSTP: XRA     A
        STA     @IF1    ;CLOSE
        RET
CLST2:  XRA     A
        STA     @IF2
        RET
;
;====================================
; OPEN: OTEVRI NOVY SOUBOR PRO ZAPIS
;====================================
;
OPEN:   CALL    IOPO    ; NASTAV IOBYT
        CALL    NPO
        RM              ; PO=SYSTEM..
        MVI     C,2
        JNZ     CCPM    ; USER=2
;
; OPEN RAM DISK
;
OPEN2:  CALL    RNAME
        JZ      DIR
        PUSH    H
        PUSH    D
        PUSH    B
        LXI     H,FCBB
        CALL    CRFCBB
        CALL    HVEZDA  ; *.*
        JZ      ERROR   ; CHYBA
        LXI     D,FCBB
        MVI     C,13H   ; ZRUS FILE
        CALL    5
        MVI     C,16H
        LXI     D,FCBB
        CALL    5
        CALL    ERCPM
        XRA     A
        STA     ODX
        INR     A
        STA     @OF1
        CALL    SETTYP  ; BINAR
        POP     B
        POP     D
        POP     H
        RET
;
;====================================
; SAVE ULOZ BINARNI SOUBOR
;====================================
;
SAVE:   CALL    OPEN
        CALL    BINAR
        MVI     C,2
        CALL    EXPR    ;FORM TO
        MVI     C,'<'   ;START BYTE
        CALL    POCH
        MVI     B,0     ;ADR-SUM
        POP     H       ;START
        POP     D       ;LAST
        CALL    PADR@
        XCHG
        CALL    PADR@
        MVI     C,'>'
        CALL    POCH
        MOV     C,B     ;SUM OF ADR.
        CALL    POCH
;
        MVI     B,0     ;DATA-SUM
SAV1:   MOV     C,M
        CALL    POCH
        CALL    HILO
        JNC     SAV1
        MOV     C,B     ;SUM
        CALL    POCH
;
;====================================
; SLOSE: UZAVRI VSTUPNI SOUBOR
;====================================
;
CLOSE:  CALL    NPO
        RM
        MVI     C,3
        JNZ     CCPM
        LDA     @OF1    ;NO OPEN
        ORA     A
        JZ      ERROR
;
; UKONC SOUBOR
;
CLOSE2: PUSH    H
        PUSH    D
        PUSH    B
        MVI     C,1AH
        CALL    PUT@B
;---
CLFIL:  XCHG
        LXI     H,BUFO+7FH      ;KONEC
CLF0:   MOV     A,E
        CMP     L
        JZ      CLF1
        MVI     M,0     ; CLEAR
        DCX     H
        JMP     CLF0
CLF1:   CALL    ZAPISBL
        LXI     D,FCBB
        MVI     C,10H
        CALL    5
        CALL    ERCPM
        XRA     A
        STA     @OF1
        LDA     MODE    ; ZRUS BINAR
        ANI     NOT 2
        STA     MODE
        POP     B
        POP     D
        POP     H
        RET
;
;
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
; REALIZACE POVELU PRO PRACI SE SOUBORY
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;  TYPE FILE
TYPE:   CALL    FIND
TYP0:   CALL    RI
        JC      CRLF    ; KONEC
        MOV     C,A
        CALL    CO
        CALL    BREAK
        CNZ     ECHO    ; CEKEJ
        JMP     TYP0
;
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;
INITD:  MVI     C,0DH
        CALL    5
        LXI     H,FCB
        MVI     M,1     ;DRIVE A
        INX     H
        JMP     DIR
;
; DIRECTORY:
;
DIRD:   LXI     H,0
        CALL    RNAME
        CALL    CRFCB
        LXI     H,FCB+1 ;TEST CR
        MOV     A,M
        CPI     ' '
        JNZ     DIR22   ; JE JMENO
DIR:    PUSH    H
        CALL    SETDMI  ; DMA ADR
        POP     H
        MVI     B,11
DIRD1:  MVI     M,'?'
        INX     H
        DCR     B
        JNZ     DIRD1
        CALL    CRF3
DIR22:  MVI     C,11H
        XRA     A
DIRD2:  JNZ     DIRD3
        CALL    CRLF
        MVI     B,2     ; POCET JMEN
DIRD3:  LXI     D,FCB
        PUSH    B
        CALL    5
        POP     B
        INR     A
        JZ      SIZE    ; KONEC
        LXI     H,BUFDX-20H
        LXI     D,20H   ; OFFSET
        DAD     D
        DCR     A
        JNZ     $-2     ; ADR
        INX     H
        MVI     D,8
        PUSH    B
        CALL    TEXT@
        CALL    TXIMM
        DC      '.'
        MVI     D,3
        CALL    TEXT@
        POP     B
        PUSH    B
        DCR     B
        JZ      DIR33
        CALL    TXIMM
        DC      '    :     '
DIR33:  POP     B
        MVI     C,12H
        DCR     B
        JMP     DIRD2
SIZE:   CALL    TXIMM
        DB      0DH,0AH
        DC      'OBSAZENO '
        MVI     C,27    ; ADRESA ALOK. MAPY
        CALL    5       ; DO [HL]
        CALL    USED    ; OBSAZENI DO [DE]
        XCHG
        CALL    DADR    ; VYTISTENI OBSAZENOSTI
        MVI     C,14    ; NASTAVENI DISKO 0
        MVI     E,0     ; A RETURN
        JMP     5
;
USED:   ; VYPOCET OBSAZENI DISKETY
        MVI     B,241   ; POCITADLO KONCE
        LXI     D,0FF98H ; POCITADLO BLOKU
USED1:  MOV     A,M
        MVI     C,8
        INX     H
USED2:  RLC
        PUSH    PSW
        MOV     A,E
        ACI     0
        DAA
        MOV     E,A
        JNC     USED3
        INR     D
USED3:  POP     PSW
        DCR     B
        RZ
        DCR     C
        JNZ     USED2
        JMP     USED1
;
;******************************
RENAME: CALL    TXIMM
        DC      'ZADEJ PUVODNI JMENO'
        CALL    RNAME
        CALL    CRFCB
        CALL    HVEZDI  ; KONVENCE *.*
        JZ      ERROR
        CALL    TXIMM
        DC      'NOVE JMENO'
        CALL    RNAME
        LXI     H,FCB+10H
        CALL    CRFCBB
        MVI     C,17H
        LXI     D,FCB
        CALL    5
        JMP     CRLF
;******************************
ERA:    CALL    SETDMI
        CALL    RNAME
        CALL    CRFCB
        CALL    DIR22   ; VYPIS
        CALL    TXIMM
        DC      'ZRUS A/N ?'
        CALL    ECHO
        ANI     0DFH
        CPI     'N'
        JZ      CRLF    ; NE
        MVI     C,13H
        LXI     D,FCB
        CALL    5
        JMP     CRLF
;
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
; P R A C E   S   D A T Y
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;
; CTI   B Y T E
;
GET@2:  PUSH    H
        PUSH    D
        PUSH    B
        LDA     @IF1
        ORA     A
        CZ      FIND
        CALL    CTIB
        INR     B
        DCR     B
        MOV     A,M
        JNZ     FIN1    ; KONEC FILE
        CPI     1AH
        JZ      FIN?
GET@21: ORA     A       ;0->CY
        POP     B
        POP     D
        POP     H
        RET
FIN?:   PUSH    H
        LHLD    LAST
        MOV     A,L
        ORA     H
        POP     H
FIN9:   MVI     A,1AH
        JNZ     GET@21  ; NENI LAST
        XCHG            ; HLEDEJ
        LXI     H,BUFDX+80H
FIN0:   DCX     H
        MOV     A,E
        CMP     L
        JZ      FIN1
        MOV     A,M
        ORA     A
        JNZ     FIN9
        JMP     FIN0
FIN1:   XRA     A
        STA     @IF1
        MVI     A,1AH
        STC
        JMP     GET@21+1        ; KONEC
;
;  CTI BYTE Z DX:
;
CTIB:   LDA     IDX
        CPI     80H
        MVI     B,0
        CZ      CTIBL
        CALL    C@ADR
        STA     IDX
        RET
;
; CTI BLOK Z DX:
;
CTIBL:  CALL    BREAK
        CALL    SETDMI
        LHLD    LAST
        DCX     H
        SHLD    LAST
        MVI     C,14H
        LXI     D,FCB
        CALL    5
        MOV     B,A     ; ERROR FLG
        RET
;
; VYPOCTI ADR
C@ADRO: LXI     H,BUFO
        JMP     $+6
;
C@ADR:  LXI     H,BUFDX
        MVI     D,0
        MOV     E,A
        DAD     D
        INR     A
        RET
;
SETDMI: LXI     D,BUFDX
        JMP     $+6
SETDMO: LXI     D,BUFO
        MVI     C,1AH
        JMP     5
;
; ZAPIS   B Y T E
;
PUT@2:  PUSH    H
        PUSH    D
        CALL    PUT@B
        LDA     MODE
        ANI     2       ; BINAR
        MOV     A,C
        JNZ     PUT@3   ;+
        CPI     1AH     ;^Z
        PUSH    B
        JZ      CLFIL
        POP     B
PUT@3:  POP     D
        POP     H
        RET
PUT@B:  PUSH    B       ; ZAPIS BYTE
        LDA     @OF1
        ORA     A
        CZ      OPEN
        LDA     ODX
        CPI     80H
        CZ      ZAPISBL
        CALL    C@ADRO
        STA     ODX
        POP     B
        MOV     M,C
        RET
;
; ZAPIS BLOK
;
ZAPISBL:
        CALL    BREAK
        CALL    SETDMO
        MVI     C,15H
        LXI     D,FCBB
        CALL    5
        ORA     A
        RZ
        DB      21H     ; LXI H,##
ERCPM:  INR     A
        RNZ             ;255=O.K.
        CALL    TXIMM
        DC      ' CP/M.. ERROR'
        JMP     ERROR
;
;
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
; P O D P R O G R A M Y
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;
; ZOBRAZ TEXT BEZ PARITY
;
TEXT@:  MOV     A,M
        ANI     7FH
        MOV     C,A
        CALL    CO
        INX     H
        DCR     D
        JNZ     TEXT@
        RET
;
; NASTAV MODE NA BINAR
;
SETTYP: CALL    BIN?
        RNZ
;
; BINARNI VYST. SOUBOR
;
BINAR:  LDA     MODE
        ORI     2
        STA     MODE
        RET
;
; VYBER PODLE TYPU BIN-FILE
;
BIN?:   LXI     D,TABTYP
        CALL    COMT
        RZ
        CALL    COMT
        RZ
;
; COMPARE TYP
;
COMT:   LXI     H,FCBB+9
        MVI     C,3
COMT1:  LDAX    D
        CMP     M
        JNZ     COMT2   ; -
        INX     H
        INX     D
        DCR     C
        JNZ     COMT1
        RET             ;+ SHODA
COMT2:  INX     D       ; - RUZNE
        DCR     C
        JNZ     COMT2
        DCR     C       ;-
        RET
;--------------------
TABTYP: DB      'BIN'
        DB      'SAV'
        DB      'COD'
;--------------------
;
;
; TEST NA IOBYTE (PO)
;
NPO:    LDA     IOBYT
        RRC
        RRC
NRI1:   RRC
        RRC
        ANI     3       ; ZARIZENI
        DCR     A       ; MINUS .. SYSTEM
        DCR     A       ;ZY.. USER=1
        RET             ;NZ.. USER=2
;
;TEST NA IOBYTE (RI)
;
NRI:    LDA     IOBYT
        JMP     NRI1
;
; NASTAV IOBYTE PODLE OPTION
;
IOPO:   CALL    CISLO
        RC
        RLC
        RLC
IOPO1:  MVI     C,0CFH  ;MASKA
        JMP     ZMIO
;
IORI:   CALL    CISLO
        RC
        MVI     C,0F3H  ;MASKA
ZMIO:   RLC
        RLC
        MOV     B,A
        LDA     IOBYT
        ANA     C
        ORA     B
        STA     IOBYT
        RET
;
CISLO:  SUI     '0'
        RC              ;CY=1..NENI
        CPI     3
        CMC
        RC
        INR     A
        RET

BREAK:  CALL    CSTS
        RZ
        CALL    CI
        JMP     ETX?
; CTI A VYPIS ZNAK
ECHO:   CALL    CINCR
        RZ
ETX?:   CPI     ETX
        RNZ
        CALL    DIRSTP  ; CLOSE & STOP
        JMP     NEXT    ; BREAK=>C
;
; CHECK SUM ?
CHECK:  MOV     C,B
        CALL    RICH
        CMP     C
        RZ
; ZASTAV A OHLAS CHYBU
ERSTP:
        JMP     ERROR
;
RADR@:  CALL    RICH
        MOV     L,A
        CALL    RICH    ;HL
        MOV     H,A
        RET
;
RICH:   CALL    RI      ;READ & SUM
        JC      ERSTP
        PUSH    PSW
        ADD     B
        MOV     B,A
        POP     PSW
        RET
;
PADR@:  MOV     C,L
        CALL    POCH
        MOV     C,H
;
POCH:   MOV     A,C     ;PUNCH AND SUM
        ADD     B
        MOV     B,A
        JMP     PO
;
;************************************
;  VYTVARENI JMENA SOUBORU
;************************************
;
; CTI JMENO Z KLAVESNICE NEBO PAMETI
;
RNAME:  CALL    RNAM@   ; MONITOR
        XCHG            ; 1.ADR = DE
        CPI     '@'
        RET             ; ZY=1 ... DIR
;
; VYTVOR FCB
;
CRFCB:  LXI     H,FCB   ; INPUT
CRFCBB: LXI     B,NAMBUF
        XCHG
        MOV     A,L
        CMP     C       ; OPTION ?
        JZ      CRFC1
        LDAX    B       ; CTI
        ANI     11B
        JMP     $+4     ; JINAK A:
CRFC1:  XRA     A
        STAX    D       ; DRIVE
        INX     D
        MVI     C,8
        CALL    COPNAM
        MVI     C,3
        CALL    COPNAM
        XCHG
CRF3:   MVI     C,35-11
CRF2:   MVI     M,0
        INX     H
        DCR     C
        JNZ     CRF2
        RET             ; VYMAZ ZBITEK
;
COPNAM: MOV     A,M     ; CTI
        CPI     '*'
        JZ      COPNA0
        STAX    D
        CALL    ANALN
        JZ      COPNA1
        INX     H
        INX     D
        DCR     C
        JNZ     COPNAM
COPN9:  MOV     A,M
        CALL    ANALN   ; DLOUHE JMENO
        INX     H
        RZ
        CPI     ' '
        RZ
        JMP     COPN9
;
COPNA0: MVI     A,'?'
        INX     H
        JMP     COPNA2
;
COPNA1: CPI     '.'     ; KONEC
        MVI     A,' '
        JZ      $+4
COPNA2: INX     H       ; PRESKOC
        STAX    D
        INX     D
        DCR     C
        JNZ     $-3
        RET
;
ANALN:  CPI     '.'
        RZ
        CPI     '"'
        RZ

; ANALIZA ODDELOVACU
;
ANAL:   CPI     CR
        RZ
        ORA     A
        RET
;
;
PRENOS: LXI     H,NAMBUF
MOVE:   MOV     A,M
        STAX    D
        INX     H
        INX     D
        DCR     B
        JNZ     MOVE
        RET
;
HVEZDA: LDA     FCBB+8  ; OUTPUT FILE
        CPI     '?'
        RZ
        LDA     FCBB+11
        CPI     '?'
        RET             ; ZY=1 POTOM....*.*;
HVEZDI: LDA     FCB+8   ; INPUT FILE
        CPI     '?'
        RZ
        LDA     FCB+11
        CPI     '?'
        RET
;-------------------------------------------

@@@KOS  EQU     $
        
;
;****************************************
;  ROZDELENI  S Y S T E M O V E  R A M
;****************************************
;
RST1    EQU     @R@     ; RESTART VEKTORY
;........>>>
;......
;<<... UZIVATELSKY & MONITOR. ZASOBNIK


;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        .PHASE  @R@+6DH
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
; MONITOR DATA
;
MSTAK:  DS      2
ACSAV:  DS      2
BCSAV:  DS      2
DESAV:  DS      2
HLSAV:  DS      2
PCSAV:  DS      2
SPSAV:  DS      2
;
BRAD:   DS      2
INSTR:  DS      1
BRAD2:  DS      2
INST2:  DS      1
CADR:   DS      2       ; KURZOR ADR.
;-------------------------
WMKOD:  DS      14      ; KOD PRO KURZORY
PREV:   DS      21      ; PREVODNI KODY..0
;-------------------------
;       USER I/O DEVICE
;
CILOC:  DS      3       ; 0
COLOC:  DS      3       ; 1
R1LOC:  DS      3       ; 2
R2LOC:  DS      3       ; 3
P1LOC:  DS      3       ; 4
P2LOC:  DS      3       ; 5
LILOC:  DS      3       ; 6
CSLOC:  DS      3       ; 7
        DS      1
MEMTOP: DS      2       ; 8
ERRSW:  DS      3       ; 9
CI@0:   DS      3       ; 10
CO@:    DS      3       ; 11
CSTS@:  DS      3       ; 12
LO@:    DS      3       ; 13
KOS@:   DS      3       ; 14
RI@:    DS      3       ; 15
PO@:    DS      3       ; 16
CCPM:   DS      3       ; 17
GRAF:   DS      3
RESER:  DS      3
IONUM   EQU ($-CILOC)/3+1
;
IOBYT:  DS      1       ; RIZENI I/O ZARIZENI
;
;****************************
;<< EXTERE OVLADANE FLAGY: >>
;****************************
MODE:   DS      1       ; CO-MODE
@IF1:   DS      1
@IF2:   DS      1
@OF1:   DS      1
@OF2:   DS      1
LINE:   DS      1       ; RADEK
COLUM:  DS      1       ; SLOUPEC
RESL:   DS      1       ; RESERVACE
RESC:   DS      1       ; SLOUPEC
RESL1:  DS      1       ; POSLEDNI RADEK
RESC1:  DS      1       ; POSLEDNI SLOUPEC
PREP:   DS      1       ; UROVEN PRERUSENI
;
; PROMENE PRO OPRACNI SYSTEM
;
CUR@:   DS      1
KEY:    DS      1
CASK:   DS      1       ; <>0 - PRODLUZ MEZERY

WNDP:   DS      6       ; PARAMETR PRO 2. OKNO
EXSER   EQU     $-MODE  ; KONEC SLUZEB
;
CHAR:   DS      1
XFLG:   DS      1
;
;****************************************************
;        DATA SPOLECNA PRO MONITOR A O.S.
;****************************************************
;
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@BT:    DS      1
@PED:   DS      1
SADR:   DS      2       ; START ADR
EADR:   DS      2       ; END ADR
SUM:    DS      1
EXTEXT: DS      1
OPT:    DS      1
NAMBUF: DS      65
;
;--------------------------------------
;       D I S K
;--------------------------------------
IDX:    DS      1
ODX:    DS      1
FCB:    DS      33
LAST:   DS      4
FCBB:   DS      36
EDAT    EQU     $
;--------------------------------------
ERAMH   EQU     41CFH   ; KONEC VOLNE RAM
        .DEPHASE
;
        END     ; [P]

ÚVOD | Novinky | 8 Bitů | Příslušenství | Drobnosti | TTL | Kontakt


SAPI-1 | ONDRA | PMI-80 | PMD-85 | klony PMD-85 | klony SM50/40 | PETR | PLAN-80A | IQ151 | TNS


ZPS | Technické prostředky | Programové vybavení | Dokumentace


8 bity / SAPI-1 / Programové vybavení / V5.0 / ASM MIKOS



SAPI.cz - web o československých osmibitech, zejména SAPI-1. Provozuje EC1045 od roku 2011
Za korekce češtiny dekuji: MELSOFTovi, Silliconovi, Martinu Lukáškovi a NOSTALCOMPovi

Když začínám blbnout z 8bitů tak se chodím léčit mezi otaku.
Animefest.cz