Ú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 | FK-1 | HVĚZDA | SP 830 | PCS 1-QR6000


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


8 bity / SAPI-1 / Programové vybavení / MikroBASIC / ASM V2.4


Výpis programu Mikro BASIC verze 2.4


;JPR-1 MIKRO BASIC
;
;*****************************************
;
;   J P R - 1     M I K R O     B A S I C    2 . 4
;
;****************************************
;
;
        TITLE   'JPR-1  MIKRO BASIC'
;
        ORG     0
;
        JMP     START
TOP:    LHLD    TXTUNF
        INX     H
        RET
        JMP     BRST
LENGHT: LHLD    LEGT
        DCX     H
        RET
        JMP     BRST+9
BEND:   CALL    ENDCHK
        JMP     RSTART
;
;START
;
START:  LXI     SP,STACK
        CALL    DISP
        CALL    NULDIS
        XRA     A
        STA     MODE
        STA     PORT24
        LXI     D,MSG1
        CALL    PRTSTG
        LXI     H,TOP
        SHLD    RANPNT
        LXI     H,TXTBGN
        SHLD    TXTUNF
        LXI     H,BUFA
        SHLD    BUFFER
        LXI     H,BUFE
        SHLD    BUFEND
        LXI     H,TXTE
START1: SHLD    TXTEND
;
;RSTART  HORKY START
;
RSTART: CALL    CRLF
RSTAR1: LXI     SP,STACK
        LXI     D,OK
        SUB     A
        STA     MODE
        CMA
        STA     MASKIN
        CALL    PRTSTG
        LXI     H,ST2+1
        SHLD    CURRNT
ST2:    LXI     H,0
        SHLD    LOPVAR
        SHLD    STKGOS
ST3:    MVI     B,'>'
        CALL    GETLN
ST5:    PUSH    D
        CALL    DBUFF
        CALL    TSTNUM
        CALL    IGNB
        MOV     A,H
        ORA     L
        POP     B
        JZ      DIRECT
        DCX     D
        MOV     A,H
        STAX    D
        DCX     D
        MOV     A,L
        STAX    D
        PUSH    B
        PUSH    D
        MOV     A,C
        SUB     E
        PUSH    PSW
        CALL    FNDLN
        PUSH    D
        JNZ     ST4
        PUSH    D
        CALL    FNDNXT
        POP     B
        LHLD    TXTUNF
        CALL    MVUP
        MOV     H,B
        MOV     L,C
        SHLD    TXTUNF
ST4:    POP     B
        LHLD    TXTUNF
        POP     PSW
        PUSH    H
        CPI     3
        JZ      RSTART
        ADD     L
        MOV     L,A
        MVI     A,0
        ADC     H
        MOV     H,A
        CALL    DTXTE
        CALL    COMP
        JNC     QSORRY
        SHLD    TXTUNF
        POP     D
        CALL    MVDOWN
        POP     D
        POP     H
        CALL    MVUP
        JMP     ST3
;
MSG1:   DB      'MIKRO BASIC',0
;
;TABULKA KLICOVICH SLOV
;
TAB1:   DB      'LIST',0
        DW      LIST
        DB      'LLIST',0
        DW      LLIST
        DB      'RUN',0
        DW      RUN
        DB      'NEW',0
        DW      NEW
        DB      'REWIND',0
        DW      REWIND
TXMON:  DB      'MONITOR',0
        DW      MONIT
        DB      'RAM',0
        DW      RAM
        DB      'LOAD',0
        DW      LOAD
        DB      'SAVE',0
        DW      SAVE
TAB2:   DB      'NEXT',0
        DW      NEXT
        DB      'LET',0
        DW      LET
        DB      'CLS',0
        DW      CLS
        DB      'CLEAR',0
        DW      CLEAR
        DB      'HARD',0
        DW      HARD
        DB      'DISPL',0
        DW      DISPL
        DB      'IF',0
        DW      IFF
        DB      'GOTO',0
        DW      GOTO
        DB      'GOSUB',0
        DW      GOSUB
        DB      'RETURN',0
        DW      RETURN
        DB      'REM',0
        DW      REM
        DB      'FOR',0
        DW      FOR
        DB      'INPUT',0
        DW      INPUT
        DB      'PRINT',0
        DW      PRINT
        DB      'LPRINT',0
        DW      LPRINT
        DB      'END',0
        DW      BEND
        DB      'STOP',0
        DW      STOP
        DB      'CALL',0
        DW      BCALL
        DB      'OUTCHAR',0
        DW      OUTCHR
        DB      'OUT',0
        DW      BOUT
        DB      'O$',0
        DW      O
        DB      'I$',0
        DW      I
        DB      'WAIT',0
        DW      WAIT
        DB      'BEEP',0
        DW      BEEP
        DB      'POKE',0
        DW      POKE
        DB      'MASK',0
        DW      MASK
        DB      'TAB',0
        DW      TAB
        DB      'BYTE',0
        DW      BYTE
        DB      'WORD',0
        DW      WORD
        DB      0
        DW      DEFLT
TAB4:   DB      'RND',0
        DW      RND
        DB      'ABS',0
        DW      ABS
        DB      'SIZE',0
        DW      SIZE
        DB      'PEEK',0
        DW      PEEK
        DB      'INCHAR',0
        DW      INCHAR
        DB      'HEX',0
        DW      HEX
        DB      'INM',0
        DW      INM
        DB      'IN',0
        DW      BIN
        DB      27H,0
        DW      QUOTE
        DB      'TOP',0
        DW      TOP
        DB      'AREM',0
        DW      AREM
        DB      'LEN',0
        DW      LENGHT
        DB      0
        DW      XP40
TAB5:   DB      'TO',0
        DW      FR1
        DB      0
        DW      QWHAT
TAB6:   DB      'STEP',0
        DW      FR2
        DB      0
        DW      FR3
TAB8:   DB      '>=',0
        DW      XP11
        DB      '#',0
        DW      XP12
        DB      '>',0
        DW      XP13
        DB      '=',0
        DW      XP15
        DB      '<=',0
        DW      XP14
        DB      '<',0
        DW      XP16
        DB      0
        DW      XP17
;
;COMP  POROVNANI HL A DE, Z=1
;
COMP:   MOV     A,H
        CMP     D
        RNZ
        MOV     A,L
        CMP     E
        RET
;
;IGNB  VYNECHANI MAEZER PODLE DE
;
IGNB:   LDAX    D
        CPI     20H
        RNZ
        INX     D
        JMP     IGNB
;
;FINI
;
FINI:   POP     PSW
        CALL    FIN
        JMP     QWHAT
;
;INDEXOVANA PROMENA
;
TSTV:   CALL    IGNB
        SUI     40H
        RC
        JNZ     TV1
        INX     D
        CALL    PARN
        DAD     H
        JC      QHOW
        PUSH    D
        XCHG
        CALL    SIZE
        CALL    COMP
        JC      ASORRY
        LHLD    TXTEND
        CALL    SUBDE
        POP     D
        RET
;
;VYPOCET ADRESY ULOZENI PROMENE
;
TV1:    CPI     1BH
        CMC
        RC
        INX     D
        LXI     H,VARBGN
        RLC
        ADD     L
        MOV     L,A
        MVI     A,0
        ADC     H
        MOV     H,A
        RET
;
;TSTC  POROVNANI TEXTU PODLE DE SE ZNAKEM
;KTERY JE ZA CALL... JE-LI SHODNY POKRA-
;CUJE SE NA CALL...+2 JINAK NA ADRESE
;O N VYSSI.N JE NA ADRESE CALL..+2
;
TSTC:   XTHL
        CALL    IGNB
        CMP     M
        INX     H
        JZ      TC2
        PUSH    B
        MOV     C,M
        MVI     B,0
        DAD     B
        POP     B
        DCX     D
TC2:    INX     D
        INX     H
        XTHL
        RET
;
;TSTNUM  PREVOD ASCII CISLA Z BUFFERU PODLE
;DE NA BINARNI CISLO V HL
;
TSTNUM: LXI     H,0
        MOV     B,H
        CALL    IGNB
TN1:    CPI     '0'
        RC
        CPI     3AH
        RNC
        MVI     A,0F0H
        ANA     H
        JNZ     QHOW
        INR     B
        PUSH    B
        MOV     B,H
        MOV     C,L
        DAD     H
        DAD     H
        DAD     B
        DAD     H
        LDAX    D
        INX     D
        ANI     0FH
        ADD     L
        MOV     L,A
        MVI     A,0
        ADC     H
        MOV     H,A
        POP     B
        LDAX    D
        JP      TN1
;
;QHOW  OTAZKA HOW
;
QHOW:   PUSH    D
AHOW:   LXI     D,HOW
        JMP     ERROR
;
;TEXTY OTAZEK
;
HOW:    DB      'HOW?',0DH
OK:     DB      'READY',0DH
WHAT:   DB      'WHAT?',0DH
SORRY:  DB      'SORRY',0DH
;
;NEW
;
NEW:    CALL    ENDCHK
        LXI     H,TXTBGN
        SHLD    TXTUNF
;
;RUN
;
RUN:    CALL    ENDCHK
        LXI     D,TXTBGN
RUNNXL: LXI     H,0
        CALL    FNDLP
        JC      RSTART
RUNTSL: XCHG
        SHLD    CURRNT
        XCHG
        INX     D
        INX     D
RUNSML: XRA     A
        STA     MODE
        CALL    CONT
        LXI     H,TAB2-1
        JMP     EXEC
;
;GOTO
;
GOTO:   CALL    EXPR
        PUSH    D
        CALL    ENDCHK
        CALL    FNDLN
        JNZ     AHOW
        POP     PSW
        JMP     RUNTSL
;
;HARD
;
HARD:   CALL    PRNTST
        CALL    FINI
;
;DISPL
;
DISPL:  CALL    DISP
        CALL    FINI
;
;LIST
;
LLIST:  CALL    PRNTST
LIST:   CALL    TSTNUM
        MVI     A,0FFH
        STA     LISTC
        CALL    IGNB
        CPI     0DH
        JNZ     LS4
LS0:    CALL    FNDLN
LS1:    JC      LS6
        LDA     LISTC
        CPI     0FFH
        JZ      LS5
        DCR     A
        JZ      RSTART
LS5:    STA     LISTC
LS3:    CALL    PRTLN
        CALL    FNDLP
        JMP     LS1
LS4:    CPI     '+'
        JNZ     LS0
        INX     D
        CALL    IGNB
        PUSH    H
        CALL    TSTNUM
        MOV     A,L
        INR     A
        INR     A
        STA     LISTC
        POP     H
        JMP     LS0
LS6:    CALL    DISP
        JMP     RSTAR1
;
;PRINT
;
LPRINT: CALL    PRNTST
PRINT:  MVI     C,8
        CALL    TSTC
        DB      ':'
        DB      9
        CALL    CRLF
        CALL    DISP
        JMP     RUNSML
        CALL    TSTC
        DB      0DH
        DB      9
        CALL    CRLF
PR6:    CALL    DISP
        JMP     RUNNXL
PR0:    CALL    TSTC
        DB      '*'
        DB      14
        CALL    EXPR
        MOV     A,L
        RRC
        RRC
        ANI     0C0H
        STA     MODE
        JMP     PR3
        CALL    TSTC
        DB      '#'
        DB      7
        CALL    EXPR
        MOV     C,L
        JMP     PR3
        CALL    QTSTG
        JMP     PR8
PR3:    CALL    TSTC
        DB      ','
        DB      6
        CALL    FIN
        JMP     PR0
        CALL    CRLF
        CALL    DISP
        CALL    FINI
PR8:    CALL    EXPR
        PUSH    B
        CALL    PRTNUM
        POP     B
        JMP     PR3
;
;GOSUB
;
GOSUB:  CALL    PUSHA
        CALL    EXPR
        PUSH    D
        CALL    FNDLN
        JNZ     AHOW
        LHLD    CURRNT
        PUSH    H
        LHLD    STKGOS
        PUSH    H
        LXI     H,0
        SHLD    LOPVAR
        DAD     SP
        SHLD    STKGOS
        JMP     RUNTSL
;
;RETURN
;
RETURN: CALL    ENDCHK
        LHLD    STKGOS
        MOV     A,H
        ORA     L
        JZ      QWHAT
        SPHL
        POP     H
        SHLD    STKGOS
        POP     H
        SHLD    CURRNT
        POP     D
        CALL    POPA
        CALL    FINI
;
;FOR
;
FOR:    CALL    PUSHA
        CALL    SETVAL
        DCX     H
        SHLD    LOPVAR
        LXI     H,TAB5-1
        JMP     EXEC
;
FR1:    CALL    EXPR
        SHLD    LOPLMT
        LXI     H,TAB6-1
        JMP     EXEC
;
FR2:    CALL    EXPR
        JMP     FR4
;
FR3:    LXI     H,1
FR4:    SHLD    LOPINC
        LHLD    CURRNT
        SHLD    LOPLN
        XCHG
        SHLD    LOPPT
        LXI     B,0AH
        LHLD    LOPVAR
        XCHG
        MOV     H,B
        MOV     L,B
        DAD     SP
        DB      3EH
FR7:    DAD     B
        MOV     A,M
        INX     H
        ORA     M
        JZ      FR8
        MOV     A,M
        DCX     H
        CMP     D
        JNZ     FR7
        MOV     A,M
        CMP     E
        JNZ     FR7
        XCHG
        LXI     H,0
        DAD     SP
        MOV     B,H
        MOV     C,L
        LXI     H,0AH
        DAD     D
        CALL    MVDOWN
        SPHL
FR8:    LHLD    LOPPT
        XCHG
        CALL    FINI
;
;NEXT
;
NEXT:   CALL    TSTV
        JC      QWHAT
        SHLD    VARNXT
NX0:    PUSH    D
        XCHG
        LHLD    LOPVAR
        MOV     A,H
        ORA     L
        JZ      AWHAT
        CALL    COMP
        JZ      NX3
        POP     D
        CALL    POPA
        LHLD    VARNXT
        JMP     NX0
NX3:    MOV     E,M
        INX     H
        MOV     D,M
        LHLD    LOPINC
        PUSH    H
        MOV     A,H
        XRA     D
        MOV     A,D
        DAD     D
        JM      NX4
        XRA     H
        JM      NX5
NX4:    XCHG
        LHLD    LOPVAR
        MOV     M,E
        INX     H
        MOV     M,D
        LHLD    LOPLMT
        POP     PSW
        ORA     A
        JP      NX1
        XCHG
NX1:    CALL    CKHLDE
        POP     D
        JC      NX2
        LHLD    LOPLN
        SHLD    CURRNT
        LHLD    LOPPT
        XCHG
        CALL    FINI
NX5:    POP     H
        POP     D
NX2:    CALL    POPA
        CALL    FINI
;
;REM
;
REM:    XCHG
        SHLD    ARMM
        XCHG
        LXI     H,0
        JMP     IFFR
;
;AREM
;
AREM:   LHLD    ARMM
        RET
;
;
;CLEAR
;
CLEAR:  LXI     H,VARBGN
        PUSH    D
        LXI     D,27*2
        MVI     C,0
        CALL    NULD20
        POP     D
        CALL    FINI
;
;IF
;
IFF:    CALL    EXPR
IFFR:   MOV     A,H
        ORA     L
        JNZ     RUNSML
        CALL    FNDSKP
        JNC     RUNTSL
        JMP     RSTART
;
;CHYBA VSTUPU
;
INPERR: LHLD    STKINP
        SPHL
        POP     H
        SHLD    CURRNT
        POP     D
        POP     D
;
;INPUT
;
INPUT:
IP1:    PUSH    D
        CALL    QTSTG
        JMP     IP2
        CALL    TSTV
        JC      IP4
        JMP     IP3
IP2:    PUSH    D
        CALL    TSTV
        JC      QWHAT
        LDAX    D
        MOV     C,A
        SUB     A
        STAX    D
        POP     D
        CALL    PRTSTG
        MOV     A,C
        DCX     D
        STAX    D
IP3:    PUSH    D
        XCHG
        LHLD    CURRNT
        PUSH    H
        LXI     H,IP1
        SHLD    CURRNT
        LXI     H,0
        DAD     SP
        SHLD    STKINP
        PUSH    D
        MVI     B,':'
        CALL    GETLN
        CALL    DBUFF
        CALL    EXPR
        POP     D
        XCHG
        MOV     M,E
        INX     H
        MOV     M,D
        POP     H
        SHLD    CURRNT
        CALL    CONT
        POP     D
IP4:    POP     PSW
        CALL    TSTC
        DB      ','
        DB      3
        JMP     IP1
        CALL    FINI
DEFLT:  LDAX    D
        CPI     0DH
        JZ      LT1
;
;LET
;
LET:    CALL    SETVAL
        CALL    TSTC
        DB      ','
        DB      3
        JMP     LET
LT1:    CALL    FINI
;
;EXPR  VYHODNOCENI VYRAZU
;
EXPR:   CALL    EXPR2
        PUSH    H
EXPR1:  LXI     H,TAB8-1
        JMP     EXEC
XP11:   CALL    XP18
        RC
        MOV     L,A
        RET
XP12:   CALL    XP18
        RZ
        MOV     L,A
        RET
XP13:   CALL    XP18
        RZ
        RC
        MOV     L,A
        RET
XP14:   CALL    XP18
        MOV     L,A
        RZ
        RC
        MOV     L,H
        RET
XP15:   CALL    XP18
        RNZ
        MOV     L,A
        RET
XP16:   CALL    XP18
        RNC
        MOV     L,A
        RET
XP17:   POP     H
        RET
XP18:   MOV     A,C
        POP     H
        POP     B
        PUSH    H
        PUSH    B
        MOV     C,A
        CALL    EXPR2
        XCHG
        XTHL
        CALL    CKHLDE
        POP     D
        LXI     H,0
        MVI     A,1
        RET
EXPR2:  CALL    TSTC
        DB      '-'
        DB      6
        LXI     H,0
        JMP     XP26
        CALL    TSTC
        DB      '+'
        DB      0
        CALL    EXPR3
XP23:   CALL    TSTC
        DB      '+'
        DB      15H
        PUSH    H
        CALL    EXPR3
XP24:   XCHG
        XTHL
        MOV     A,H
        XRA     D
        MOV     A,D
        DAD     D
        POP     D
        JM      XP23
        XRA     H
        JP      XP23
        JMP     QHOW
        CALL    TSTC
        DB      '-'
        DB      92H
XP26:   PUSH    H
        CALL    EXPR3
        CALL    CHGSGN
        JMP     XP24
EXPR3:  CALL    EXPR4
XP31:   CALL    TSTC
        DB      '*'
        DB      2DH
        PUSH    H
        CALL    EXPR4
        MVI     B,0
        CALL    CHKSGN
        XTHL
        CALL    CHKSGN
        XCHG
        XTHL
        MOV     A,H
        ORA     A
        JZ      XP32
        MOV     A,D
        ORA     D
        XCHG
        JNZ     AHOW
XP32:   MOV     A,L
        LXI     H,0
        ORA     A
        JZ      XP35
XP33:   DAD     D
        JC      AHOW
        DCR     A
        JNZ     XP33
        JMP     XP35
        CALL    TSTC
        DB      '/'
        DB      4EH
        PUSH    H
        CALL    EXPR4
        MVI     B,0
        CALL    CHKSGN
        XTHL
        CALL    CHKSGN
        XCHG
        XTHL
        XCHG
        MOV     A,D
        ORA     E
        JZ      AHOW
        PUSH    B
        CALL    DIVIDE
        MOV     H,B
        MOV     L,C
        POP     B
XP35:   POP     D
        MOV     A,H
        ORA     A
        JM      QHOW
        MOV     A,B
        ORA     A
        CM      CHGSGN
        JMP     XP31
EXPR4:  LXI     H,TAB4-1
        JMP     EXEC
XP40:   CALL    TSTV
        JC      XP41
        MOV     A,M
        INX     H
        MOV     H,M
        MOV     L,A
        RET
XP41:   CALL    TSTNUM
        MOV     A,B
        ORA     A
        RNZ
PARN:   CALL    TSTC
        DB      '('
        DB      09
        CALL    EXPR
        CALL    TSTC
        DB      ')'
        DB      1
        RET
        JMP     QWHAT
;
;RND
;
RND:    CALL    PARN
        MOV     A,H
        ORA     A
        JM      QHOW
        ORA     L
        JZ      QHOW
        PUSH    D
        PUSH    H
        LHLD    RANPNT
        LXI     D,CONTE
        CALL    COMP
        JC      RA1
        LXI     H,COMP
RA1:    MOV     E,M
        INX     H
        MOV     D,M
        SHLD    RANPNT
        POP     H
        XCHG
        PUSH    B
        CALL    DIVIDE
        POP     B
        POP     D
        INX     H
        RET
;
;ABS
;
ABS:    CALL    PARN
        DCX     D
        CALL    CHKSGN
        INX     D
        RET
;
;SIZE
;
SIZE:   LHLD    TXTUNF
        PUSH    D
        XCHG
        LHLD    TXTEND
        CALL    SUBDE
        POP     D
        RET
;
;DIVIE
;
DIVIDE: PUSH    H
        MOV     L,H
        MVI     H,0
        CALL    DV1
        MOV     B,C
        MOV     A,L
        POP     H
        MOV     H,A
DV1:    MVI     C,0FFH
DV2:    INR     C
        CALL    SUBDE
        JNC     DV2
        DAD     D
        RET
SUBDE:  MOV     A,L
        SUB     E
        MOV     L,A
        MOV     A,H
        SBB     D
        MOV     H,A
        RET
;
CHKSGN: MOV     A,H
        ORA     A
        RP
CHGSGN: MOV     A,H
        ORA     L
        RZ
        MOV     A,H
        PUSH    PSW
        CMA
        MOV     H,A
        MOV     A,L
        CMA
        MOV     L,A
        INX     H
        POP     PSW
        XRA     H
        JP      QHOW
        MOV     A,B
        XRI     80H
        MOV     B,A
        RET
;
CKHLDE: MOV     A,H
        XRA     D
        JP      CK1
        XCHG
CK1:    JMP     COMP
;
;SETVAL
;
SETVAL: CALL    TSTV
        JC      QWHAT
        PUSH    H
        CALL    TSTC
        DB      '='
        DB      0AH
        CALL    EXPR
        MOV     B,H
        MOV     C,L
        POP     H
        MOV     M,C
        INX     H
        MOV     M,B
        RET
        JMP     QWHAT
;
;FIN
;
FIN:    CALL    TSTC
        DB      ':'
        DB      4
        POP     PSW
        JMP     RUNSML
        CALL    TSTC
        DB      0DH
        DB      4
        POP     PSW
        JMP     RUNNXL
        RET
;
;ENDCHK
;
ENDCHK: CALL    IGNB
        CPI     0DH
        RZ
QWHAT:  PUSH    D
AWHAT:  LXI     D,WHAT
ERROR:  SUB     A
        STA     MODE
        CALL    PRTSTG
        CALL    DISP
        POP     D
        LDAX    D
        PUSH    PSW
        SUB     A
        STAX    D
        LHLD    CURRNT
        PUSH    H
        MOV     A,M
        INX     H
        ORA     M
        POP     D
        JZ      RSTART
        MOV     A,M
        ORA     A
        JM      INPERR
        CALL    PRTLN
        DCX     D
        POP     PSW
        STAX    D
        MVI     A,3FH
        CALL    OUTC
        SUB     A
        CALL    PRTSTG
        JMP     RSTART
QSORRY: PUSH    D
ASORRY: LXI     D,SORRY
        JMP     ERROR
;
;GETLN
;
GETLN:  MOV     A,B
        CALL    OUTC
        CALL    DBUFF
GL1:    CALL    CI
        CPI     8
        JZ      GL3
        CPI     7FH
        JZ      GL4
        CALL    OUTC
        STAX    D
        INX     D
        CPI     0DH
        RZ
        MOV     A,E
CXBUFE: PUSH    H
        LHLD    BUFEND
        CMP     L
        POP     H
        JNZ     GL1
GL3:    MOV     A,E
CXBUFA: PUSH    H
        LHLD    BUFFER
        CMP     L
        POP     H
        JZ      GL4
        CALL    GL5
        JMP     GL1
GL4:    CALL    CRLF
        MVI     B,'>'
        JMP     GETLN
GL5:    DCX     D
        MVI     A,8
        CALL    OUTC
        MVI     A,' '
        CALL    OUTC
        MVI     A,8
        JMP     OUTC
;
;FNDLN
;
FNDLN:  MOV     A,H
        ORA     A
        JM      QHOW
        LXI     D,TXTBGN
FNDLP:  PUSH    H
        LHLD    TXTUNF
        DCX     H
        CALL    COMP
        POP     H
        RC
        LDAX    D
        SUB     L
        MOV     B,A
        INX     D
        LDAX    D
        SBB     H
        JC      FL2
        DCX     D
        ORA     B
        RET
;
;FNDNXT
;
FNDNXT: INX     D
FL2:    INX     D
FNDSKP: LDAX    D
        CPI     0DH
        JNZ     FL2
        INX     D
        JMP     FNDLP
;
;PRTSTG
;
PRTSTG: MOV     B,A
PS1:    LDAX    D
        INX     D
        CMP     B
        RZ
        CALL    OUTC
        CPI     0DH
        JNZ     PS1
        RET
;
;QTSTG
;
QTSTG:  CALL    TSTC
        DB      '"'
        DB      0FH
        MVI     A,'"'
QT1:    CALL    PRTSTG
        CPI     0DH
        POP     H
        JZ      PR6
QT2:    INX     H
        INX     H
        INX     H
        PCHL
        RET
;
;PRTNUM
;
PRTNUM: MVI     B,0
        CALL    CHKSGN
        JP      PN1
        MVI     B,2DH
        DCR     C
PN1:    PUSH    D
        LXI     D,0AH
        PUSH    D
        DCR     C
        PUSH    B
PN2:    CALL    DIVIDE
        MOV     A,B
        ORA     C
        JZ      PN3
        XTHL
        DCR     L
        PUSH    H
        MOV     H,B
        MOV     L,C
        JMP     PN2
PN3:    POP     B
PN4:    DCR     C
        MOV     A,C
        ORA     A
        JM      PN5
        MVI     A,20H
        CALL    OUTC
        JMP     PN4
PN5:    MOV     A,B
        ORA     A
        CNZ     OUTC
        MOV     E,L
PN6:    MOV     A,E
        CPI     0AH
        POP     D
        RZ
        ADI     30H
        CALL    OUTC
        JMP     PN6
;
;PRTLN
;
PRTLN:  LDAX    D
        MOV     L,A
        INX     D
        LDAX    D
        MOV     H,A
        INX     D
        MVI     C,4
        CALL    PRTNUM
        MVI     A,20H
        CALL    OUTC
        SUB     A
        CALL    PRTSTG
        RET
;
;MVUP
;
MVUP:   CALL    COMP
        RZ
        LDAX    D
        STAX    B
        INX     D
        INX     B
        JMP     MVUP
;
;MVDOWN
;
MVDOWN: MOV     A,B
        SUB     D
        JNZ     MD1
        MOV     A,C
        SUB     E
        RZ
MD1:    DCX     D
        DCX     H
        LDAX    D
        MOV     M,A
        JMP     MVDOWN
;
;POPA
;
POPA:   POP     B
        POP     H
        SHLD    LOPVAR
        MOV     A,H
        ORA     L
        JZ      PP1
        POP     H
        SHLD    LOPINC
        POP     H
        SHLD    LOPLMT
        POP     H
        SHLD    LOPLN
        POP     H
        SHLD    LOPPT
PP1:    PUSH    B
        RET
;
;PUSHA
;
PUSHA:  LXI     H,STKLMT
        CALL    CHGSGN
        POP     B
        DAD     SP
        JNC     QSORRY
        LHLD    LOPVAR
        MOV     A,H
        ORA     L
        JZ      PU1
        LHLD    LOPPT
        PUSH    H
        LHLD    LOPLN
        PUSH    H
        LHLD    LOPLMT
        PUSH    H
        LHLD    LOPINC
        PUSH    H
        LHLD    LOPVAR
PU1:    PUSH    H
        PUSH    B
        RET
;
;CRLF , OUTC
;
CRLF:   MVI     A,0DH
OUTC:   PUSH    PSW
        CPI     0DH
        JZ      LINEF
        CALL    CO
H2:     POP     PSW
        RET
LINEF:  CALL    CROUT
        JMP     H2
CROUT:  MVI     A,0DH
        CALL    CO
        MVI     A,0AH
        JMP     CO
;
;NULOVANI DISPLEJE
;
CLS:    CALL    NULDIS
        CALL    FINI
;
;DIRECT MODUL
;
DIRECT: LXI     H,TAB1-1
EXEC:   CALL    IGNB
        PUSH    D
EX1:    LDAX    D
        INX     D
        CPI     '.'
        JZ      EX3
        INX     H
        CMP     M
        JZ      EX1
        MVI     A,0
        DCX     D
        CMP     M
        JZ      EX5
EX2:    INX     H
        CMP     M
        JNZ     EX2
        INX     H
        INX     H
        POP     D
        JMP     EXEC
EX3:    MVI     A,0
EX4:    INX     H
        CMP     M
        JNZ     EX4
EX5:    INX     H
        MOV     A,M
        INX     H
        MOV     H,M
        MOV     L,A
        POP     PSW
        PCHL
;
;DBUFF
;
DBUFF:  PUSH    H
        LHLD    BUFFER
        MOV     D,H
        MOV     E,L
        POP     H
        RET
DTXTE:  PUSH    H
        LHLD    TXTEND
        MOV     D,H
        MOV     E,L
        POP     H
        RET
;
;MASKA
;
MASK:   CALL    EXPR
        MOV     A,L
        STA     MASKIN
        CALL    FINI
;
;RAM
;
RAM:    CALL    EXPR
        XCHG
        LXI     H,TXTE
        XCHG
        CALL    COMP
        JC      ASORRY
        MOV     A,H
        ORA     A
        JM      ASORRY
        MOV     A,M
        CMA
        MOV     M,A
        MOV     B,M
        CMP     B
        JNZ     ASORRY
        SHLD    BUFEND
        MOV     A,L
        SUI     64
        MOV     L,A
        MOV     A,H
        SBI     0
        MOV     H,A
        SHLD    BUFFER
        DCX     H
        DCX     H
        JMP     START1
;
;CALL
;
BCALL:  CALL    EXPR
        PUSH    D
        LXI     B,HERE
        PUSH    B
        PCHL
HERE:   POP     D
        CALL    FINI
;
;OUT
;
BOUT:   CALL    EXPR
        PUSH    H
        CALL    TSTC
        DB      ','
        DB      1AH
        CALL    EXPR
        MOV     B,L
        MVI     A,0D3H
        STA     IOBUFA
        POP     H
        MOV     A,L
        STA     IOBUFB
        MVI     A,0C9H
        STA     IOBUFC
        MOV     A,B
        CALL    IOBUFA
        CALL    FINI
        JMP     QWHAT
;
;WAIT
;
WAIT:   CALL    EXPR
        PUSH    D
WAIT1:  MVI     H,100
        CALL    WAIT2
        DCR     L
        JNZ     WAIT1
        POP     D
        CALL    FINI
;
;BEEP
;
BEEP:   CALL    EXPR
        PUSH    D
BEEP1:  XCHG
        CALL    PIPO10
        POP     D
        CALL    FINI
WAIT2:  MVI     D,64H
WAIT3:  DCR     D
        JNZ     WAIT3
        DCR     H
        RZ
        JMP     WAIT2
;
;TAB
;
TAB:    CALL    PARN
A1:     MOV     A,H
        ORA     L
        CZ      FINI
        DCX     H
        MVI     A,20H
        CALL    CO
        JMP     A1
;
;IN , INM
;
BIN:    CALL    INEM
        MOV     L,A
        RET
INM:    CALL    INEM
        MOV     L,A
        LDA     MASKIN
        ANA     L
        MOV     L,A
        RET
INEM:   CALL    PARN
        PUSH    H
        MVI     A,0DBH
        STA     IOBUFA
        POP     H
        MOV     A,L
        STA     IOBUFB
        MVI     A,0C9H
        STA     IOBUFC
        CALL    IOBUFA
        MVI     H,0
        RET
;
;O$
;
O:      CALL    EXPR
        PUSH    D
        XCHG
        XRA     A
        CALL    PRTSTG
ZZZ4:   POP     D
        CALL    FINI
;
;I$
;
I:      CALL    EXPR
        PUSH    D
        XCHG
        LHLD    TXTUNF
        XCHG
        CALL    COMP
        JC      ASORRY
        CALL    DBUFF
        CALL    GL1
        MOV     B,H
        MOV     C,L
        XCHG
        DCX     H
        CALL    DBUFF
        PUSH    D
        CALL    MVUP
        XRA     A
        STAX    B
        POP     D
        INX     H
        CALL    SUBDE
        XCHG
        LXI     H,LEGT
        MOV     M,E
        INX     H
        MOV     M,D
        JMP     ZZZ4
;
;PEEK
;
PEEK:   CALL    PARN
        MOV     L,M
        MVI     H,0
        RET
;
;POKE
;
POKE:   CALL    EXPR
        PUSH    H
        CALL    TSTC
        DB      ','
        DB      9
        CALL    EXPR
        MOV     A,L
        POP     H
        MOV     M,A
        CALL    FINI
        JMP     QWHAT
;
;BYTE
;
BYTE:   CALL    PARN
        MOV     A,L
        CALL    WRIT2
        CALL    FINI
;
;WORD
;
WORD:   CALL    PARN
        CALL    PRHL
        CALL    FINI
;
WRIT2:  PUSH    PSW
        RRC
        RRC
        RRC
        RRC
        CALL    IST
        POP     PSW
IST:    ANI     0FH
        ADI     90H
        DAA
        ACI     40H
        DAA
        JMP     OUTC
;
;QUOTE
;
QUOTE:  LDAX    D
        INX     D
        MOV     L,A
        MVI     H,0
        CALL    TSTC
        DB      27H
        DB      1
        RET
        JMP     QWHAT
;
;OUTCHAR
;
OUTCHR: CALL    EXPR
        MOV     A,L
        CALL    CO
        CALL    FINI
;
;INCHAR
;
INCHAR: CALL    CI
        MVI     H,0
        MOV     L,A
        RET
;
;HEX
;
HEX:    PUSH    B
        LXI     H,0
        CALL    TSTC
        DB      '('
        DB      1DH
HNXTH:  LDAX    D
        CPI     0DH
        JZ      QWHAT
        CALL    NIBBLE
        JC      QWHAT
        DAD     H
        DAD     H
        DAD     H
        DAD     H
        MVI     B,0
        MOV     C,A
        DAD     B
        INX     D
        CALL    TSTC
        DB      ')'
        DB      3
        JMP     POPRET
        JMP     HNXTH
        JMP     QWHAT
POPRET: POP     B
        RET
;
;TEST TLACITKA BREAK
;
CONT:   LDA     2800H
        RLC
        RC
        JMP     BREAK
STOP:   CALL    ENDCHK
BREAK:  LHLD    CURRNT
        XCHG
        CALL    CRLF
        MVI     A,'*'
        CALL    OUTC
        CALL    PRTLN
        JMP     RSTART
;
;*******************************************
;
;     KAZETOVY MAGNETOFON  ,  TISKARNA
;
;*****************************************
LOAD:   MVI     A,38H
        OUT     10H
        MVI     A,0FFH
        OUT     11H
LOAD40: IN      12H
        MVI     B,0
LOAD30: IN      11H
        ANI     80H
        JNZ     LOAD40
LOAD10: MOV     A,B
        CPI     0FFH
        JZ      LOAD20
        CALL    SEC1
        MVI     B,0FFH
        JMP     LOAD30
LOAD20: MVI     A,'*'
        CALL    CO
        CALL    PIN
        CPI     'B'
        JNZ     LOAD40
        MVI     B,0
        CALL    PIN
LOAD5:  CALL    CO
        CALL    PIN
        CPI     0DH
        JNZ     LOAD5
        CALL    PIN
        MOV     E,A
        CALL    PIN
        MOV     D,A
        LXI     H,TXTBGN
LOAD4:  CALL    COMP
        JZ      LOAD3
        CALL    PIN
        MOV     M,A
        INX     H
        JMP     LOAD4
LOAD3:  MOV     C,B
        CALL    PIN
        CMP     C
        JNZ     TPERR
        SHLD    TXTUNF
        JMP     SAVE3
SEC1:   MVI     L,20
        DB      11H
SEC3:   MVI     L,110
SEC31:  MVI     H,100
        CALL    WAIT2
        DCR     L
        JNZ     SEC31
        RET
;
;
;
TOUT:   PUSH    PSW
        ADD     B
        MOV     B,A
        POP     PSW
        OUT     12H
TOUT1:  IN      11H
        ANI     40H
        JZ      TOUT1
        RET
;
;
;
PIN:    IN      11H
        ANI     80H
        JZ      PIN
        IN      12H
        PUSH    PSW
        ADD     B
        MOV     B,A
        POP     PSW
        RET
;
;SAVE
;
SAVE:   CALL    LABEL
        LHLD    TXTUNF
        MOV     A,L
        CALL    TOUT
        MOV     A,H
        CALL    TOUT
        XCHG
        LXI     H,TXTBGN
SAVE1:  CALL    COMP
        JZ      SAVE2
        MOV     A,M
        CALL    TOUT
        INX     H
        JMP     SAVE1
SAVE2:  MOV     A,B
        CALL    TOUT
        CALL    SEC1
SAVE3:  MVI     A,10H
        OUT     10H
        JMP     RSTART
;
;TAPE ERROR
;
TPERR:  CALL    CRLF
        LXI     D,TPER
        SUB     A
        CALL    PRTSTG
        JMP     RSTART
TPER:   DB      'ERROR',0
;
;VSTUP LABELU
;
LABEL:  LXI     D,TLAB
        SUB     A
        CALL    PRTSTG
        MVI     B,'='
        CALL    GETLN
        MVI     A,30H
        OUT     10H
        MVI     A,0FFH
        OUT     11H
        CALL    SEC3
        MVI     A,'B'
        CALL    TOUT
        CALL    DBUFF
        MVI     B,0
LAB1:   LDAX    D
        PUSH    PSW
        CALL    TOUT
        POP     PSW
        CPI     0DH
        RZ
        INX     D
        JMP     LAB1
TLAB:   DB      'NAME ',0
;
;PREVIJENI KAZETY
;
REWIND: MVI     A,38H
        OUT     10H
REW10:  CALL    CI
        JMP     SAVE3
;
;VYSTYP NA TISKARNU
;
COP:    CALL    OUTDIS
        PUSH    H
        LXI     H,2C00H
        MOV     M,A
        PUSH    PSW
        DCX     H
        MVI     M,1
        INX     H
ZZZ1:   MOV     A,M
        ANI     40H
        JZ      ZZZ1
        DCX     H
        MVI     M,3
        INX     H
ZZZ2:   MOV     A,M
        ANI     40H
        JNZ     ZZZ2
        DCX     H
        MVI     M,1
        POP     PSW
        POP     H
        RET
;
;ZMENA VYSTUPU
;
PRNTST: LXI     H,COP
ZZZ3:   SHLD    CO+1
        RET
;
DISP:   MVI     A,0C3H
        STA     CO
        LXI     H,OUTDIS
        JMP     ZZZ3
;
;MIKRO BASIC JPR-1
;********************************************
;
;   DISPLEJ    JPR-1
;
;********************************************
;
;ZRUSENI UKAZATELE
;
OUTDIS: PUSH    PSW
        PUSH    H
        PUSH    D
        PUSH    B
        MOV     C,A
        CALL    SESTAV
        LDA     MODE
        MOV     B,A
        MOV     A,M
        ANI     0C0H
        CPI     80H
        JNZ     OUTD1
        MOV     A,B
        ORA     A
        JNZ     OUTD1
        MOV     A,M
        ANI     7FH
        MOV     M,A
;
;CR, LF, BS A ULOZENI ZNAKU
;
OUTD1:  MOV     A,C
        CPI     0DH
        JZ      CRDS
        CPI     08H
        JZ      BACK
        CPI     0AH
        JZ      LFDS
        ANI     3FH
        MOV     E,A
        MOV     A,B
        ORA     E
        MOV     M,A
        ANI     0C0H
        CPI     0C0H
        CZ      IPOZ
        CALL    IPOZ
;
;NAVRAT
;
;
;OBNOVENI UKAZATELE
;
OUTD10: LDA     MODE
        ORA     A
        JNZ     ZZZ13
        CALL    SESTAV
        MOV     A,M
        ORI     80H
        MOV     M,A
ZZZ13:  POP     B
        POP     D
        POP     H
        POP     PSW
        RET
;
;CURSOR ZPET
;
BACK:   LDA     POZICE
        DCR     A
        CPI     0FFH
        JZ      BACK10
        STA     POZICE
        JMP     OUTD10
BACK10: LDA     RADEK
        DCR     A
        CPI     0FFH
        JZ      NULD30
        STA     RADEK
        MVI     A,39
        STA     POZICE
        JMP     OUTD10
;
;INKREMENT POZICE NA RADKU
;
IPOZ:   LDA     POZICE
        INR     A
        STA     POZICE
        CPI     40
        RC
        XRA     A
        STA     POZICE
;
;INKREMENT RADKU
;
IRAD:   LDA     RADEK
        INR     A
        CPI     24
        JZ      ROLDIS
        JMP     ZZZ5
;
;NULOVANI DISPLEJE
;
NULDIS: PUSH    PSW
        PUSH    H
        PUSH    D
        PUSH    B
NULD30: LXI     H,3800H
        LXI     D,2048
        CALL    NULD10
        CALL    HOME
        JMP     OUTD10
;
NULD10: MVI     C,20H
NULD20: MOV     M,C
        INX     H
        DCX     D
        MOV     A,D
        ORA     E
        JNZ     NULD20
        RET
;
;CR
;
CRDS:   XRA     A
        STA     POZICE
        JMP     OUTD10
;
;LF
;
LFDS:   CALL    IRAD
        JMP     OUTD10
;
;ROLOVANI DISPLEJE
;
ROLDIS: LXI     H,3800H
        LXI     D,3840H
        MVI     C,23
MOVS:   CALL    MOVR
        PUSH    B
        LXI     B,18H
        DAD     B
        XCHG
        DAD     B
        XCHG
        POP     B
        DCR     C
        JNZ     MOVS
        LXI     H,3DC0H
        LXI     D,64
        JMP     NULD10
MOVR:   MVI     B,28H
MOVZ:   LDAX    D
        MOV     M,A
        INX     D
        INX     H
        DCR     B
        JNZ     MOVZ
        RET
;
;SESTAVENI ADRESY CURSORY DO H,L
;
SESTAV: MVI     H,0
        LDA     RADEK
        MOV     L,A
        MVI     B,6
SES10:  DAD     H
        DCR     B
        JNZ     SES10
        LDA     POZICE
        ORA     L
        MOV     L,A
        MOV     A,H
        ORI     38H
        MOV     H,A
        RET
;
;HOME
;
HOME:   XRA     A
        STA     POZICE
ZZZ5:   STA     RADEK
        RET
;MIKRO BASIC JPR-1
;****************************************
;
;   KLAVESNICE   JPR-1
;
;****************************************
;
;ZACATEK
;
CI:     PUSH    B
        PUSH    D
        PUSH    H
KLIN10: MVI     C,80H
KLIN20: MVI     D,5
        MVI     B,1EH
        MVI     H,0
;
;GENERACE SIGNALU PRO SLOUPEC
;
KLIN30: LDA     PORT24
        ANI     0E0H
        ORA     B
        STA     2400H
        MOV     A,B
        STC
        RAL
        ANI     1FH
        MOV     B,A
        LDA     2400H
        CPI     0FFH
        CNZ     KLIN50
        DCR     D
        JNZ     KLIN30
;
;PROBEHL CELI CIKLUS , 5 SPOUPCU
;
        CALL    SHOF
        MOV     A,C
        CPI     1
        JZ      KLIN40
        JC      KLIN20
        CPI     80H
        JZ      KLIN90
        JMP     KLIN10
;
;PLATNY ZNAK A NAVRAT
;
KLIN40: MOV     A,L
        ADD     H
        LXI     H,TABZN
        MOV     C,A
        MVI     B,0
        DAD     B
        CALL    PIPO
        MOV     A,M
        POP     H
        POP     D
        POP     B
        RET
;
;KLAVESNICE V KLIDU
;
KLIN90: MVI     C,90H
KLIN99: DCR     C
        JNZ     KLIN99
        MVI     C,0
        JMP     KLIN20
;
;PROHLEDANI RADKU
;
KLIN50: MVI     E,8
KLIN60: RRC
        CNC     KLIN70
        DCR     E
        JNZ     KLIN60
        RET
;
;SESTAVENI KODU KLAVESY
;
KLIN70: PUSH    PSW
        MOV     A,D
        DCR     A
        RLC
        RLC
        RLC
        ANI     38H
        DCR     E
        ORA     E
        INR     E
        CPI     7
        JZ      KLIN80
        MOV     L,A
        INR     C
        POP     PSW
        RET
;
;PRIZNAK SHIFT
;
KLIN80: MVI     H,28H
        CALL    SHON
        POP     PSW
        RET
;
;SIGNALIZACE SHIFT
;
SHOF:   LDA     PORT24
        ANI     0D0H
SHOF10: STA     PORT24
        STA     2400H
        RET
SHON:   LDA     PORT24
        ORI     20H
        JMP     SHOF10
;
;TABULKA ASCII
;
TABZN:  DB      '0P',0DH,08H,'1QA'
        DB      0EH,'9OL 2W'
        DB      'SZ8IKM3EDX'
        DB      '7UJN4RFC6Y'
        DB      'HB5TGV)'
;
;KODY PRI SHIFT
;
        DB      07FH,0DH,08H,'!QA'
        DB      0EH,'(#= ?WSZ'
        DB      '>@*."E&X<:'
        DB      '-,$%\[',27H,'/+;^T_]'
;
;PIPNUTI
;
PIP:    PUSH    B
        LDA     PORT24
        ORI     40H
        STA     2400H
        MVI     C,42H
PIP20:  DCR     C
        JNZ     PIP20
        ANI     0B0H
        STA     2400H
        MVI     C,50H
PIP30:  DCR     C
        JNZ     PIP30
        POP     B
        RET
;
;ZAPIPANI
;
PIPO:   LXI     D,40H
PIPO10: CALL    PIP
        DCX     D
        MOV     A,D
        ORA     E
        JNZ     PIPO10
        RET
;
;***************************************
;
;   MIKRO MONITOR JPR-1
;
;***************************************
;
PRHL:   MOV     A,H
        CALL    WRIT2
        MOV     A,L
        JMP     WRIT2
;
;VSTUP HEXA ADRESY
;
MEXPR:  LXI     H,0
MEXO:   CALL    CI
        MOV     C,A
        CALL    CO
MEX1:   CALL    NIBBLE
        JC      MEX2
        DAD     H
        DAD     H
        DAD     H
        DAD     H
        ORA     L
        MOV     L,A
        JMP     MEXO
NIBBLE: SUI     '0'
        RC
        CPI     'G'-'0'
        CMC
        RC
        CPI     10
        CMC
        RNC
        SUI     'A'-'9'-1
        CPI     10
        RET
MEX2:   MOV     A,C
        CPI     0DH
        JZ      ECHU
        CPI     20H
        RZ
EROR:   MVI     A,'?'
        CALL    CO
        JMP     MLOOP
ECHU:   PUSH    PSW
        MVI     A,0AH
        CALL    CO
        POP     PSW
        MOV     C,A
        RET
;VYPOCET DELKY INSTRUKCE
;
LENG:   MVI     B,0
        PUSH    H
        POP     D
        MOV     A,M
        CPI     0C3H
        JZ      B3
        CPI     0CDH
        JZ      B3
        ANI     0EFH
        CPI     22H
        JZ      B3
        CPI     2AH
        JZ      B3
        ANI     0CFH
        CPI     1
        JZ      B3
        ANI     0C7H
        CPI     0C2H
        JZ      B3
        CPI     0C4H
        JZ      B3
        MOV     A,M
        ANI     0F7H
        CPI     0D3H
        JZ      B2
        ANI     0E7H
        ANI     0C7H
        CPI     6
        JZ      B2
        CPI     0C6H
        JZ      B2
        JMP     B1
B3:     INR     B
B2:     INR     B
B1:     INR     B
        XCHG
        RET
;
;ZACATEK MONITORU
;
MONIT1: CALL    NULDIS
MONIT:  LXI     SP,STACK
MLOOP:  CALL    CROUT
        LXI     D,TXMON
        SUB     A
        CALL    PRTSTG
        CALL    CROUT
        MVI     A,'*'
        CALL    CO
        CALL    CI
        CALL    CO
        CPI     'D'
        JZ      ENTER
        CPI     'S'
        JZ      SUEX
        CPI     'G'
        JZ      GOEX
        CPI     'B'
        JZ      START
        CPI     'R'
        JZ      RSTART
        JMP     EROR
;
SUEX:   LXI     H,MLOOP
        PUSH    H
GOEX:   CALL    MEXPR
        PCHL
;
ENTER:  CALL    MEXPR
;
LOOP:   CALL    CROUT
;
LOOPA:  CALL    PRHL
        CALL    LENG
        PUSH    B
        PUSH    H
LOOP1:  MVI     A,' '
        CALL    CO
        MOV     A,M
        CALL    WRIT2
        INX     H
        DCR     B
        JNZ     LOOP1
        POP     D
        POP     B
        MVI     A,4
        SUB     B
        MOV     B,A
        RLC
        ANI     0FH
        ADD     B
        MOV     B,A
LPP:    MVI     A,' '
        CALL    CO
        DCR     B
        JNZ     LPP
;
;VYPIS ASCII
;
        MVI     A,':'
        CALL    CO
        LDAX    D
        ANI     7FH
        CPI     20H
        JC      CONTM
        CPI     7FH
        JNZ     CONT1
CONTM:  MVI     A,' '
CONT1:  CALL    CO
        MVI     A,':'
        CALL    CO
LOOP2:  CALL    CI
        MOV     C,A
        CALL    CO
        CPI     08
        JZ      BACKGO
        CPI     ' '
        JZ      LPPA
        CPI     0DH
        JZ      LOOP
        CPI     '.'
        JZ      MLOOP
        CPI     '"'
        JZ      TEXT
        PUSH    H
        LXI     H,0
        CALL    MEX1
        MOV     B,A
        MOV     A,L
        STAX    D
        INX     D
        MOV     A,B
        POP     H
        CPI     ' '
        JZ      LOOP2
        CPI     0DH
        JNZ     EROR
        XCHG
        JMP     LOOPA
;
;
BACKGO: DCX     D
        XCHG
        JMP     LOOP
;
LPPA:   XCHG
        INX     H
        JMP     LOOP
;
TEXT:   CALL    CI
        CALL    CO
        CPI     '"'
        JZ      CONTE
        MOV     C,A
        STAX    D
        LDAX    D
        CMP     C
        JNZ     EROR
        INX     D
        JMP     TEXT
;
CONTE:  CALL    CI
        CPI     ' '
        JZ      LOOP2
        XCHG
        JMP     LOOP
;
        DB      24H       ;VERZE 02-04
;
;*********************************************
;
;       DEFINICE RAM
;
;*********************************************
;
        ORG     4000H
;
PORT24: DS      1
LEGT:   DS      2
IOBUFA: DS      1
IOBUFB: DS      1
IOBUFC: DS      1
LISTC:  DS      1
CO:     DS      3
MASKIN: DS      1
CURRNT: DS      2
STKGOS: DS      2
VARNXT: DS      2
STKINP: DS      2
LOPVAR: DS      2
LOPINC: DS      2
LOPLMT: DS      2
LOPLN:  DS      2
LOPPT:  DS      2
RANPNT: DS      2
ARMM:   DS      2
RADEK:  DS      1
POZICE: DS      1
MODE:   DS      1
TXTUNF: DS      2
        DS      40
STKLMT: DS      2
        DS      97
STACK:  DS      2
VARBGN: DS      54
TXTEND: DS      2
BUFFER: DS      2
BUFEND: DS      2
TXTBGN: DS      2
        DS      1722
TXTE:   DS      2
BUFA:   DS      64
BUFE:   DS      1
BRST:   DS      18
;
        END

Ú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 | FK-1 | HVĚZDA | SP 830 | PCS 1-QR6000


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


8 bity / SAPI-1 / Programové vybavení / MikroBASIC / ASM V2.4



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