Ú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
Původní verze tj. jak byl získán listing
;PROGRAM OBSLUHY MINIGRAFU PRES DESKU DPP-1
;V SYSTEMU SAPI-1 ZPS-2
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;ODLISNA ADRESACE JE PRO PRIPAD POUZITI DESKY
;PORTU SPOLECNE S OMLADANIM KZD-1 NEBO SP-210
;VERSE V.1-MGF V EPROM 1800-1FFF KS=9C
;150289
MINIG EQU 01800H
START EQU MINIG+0F0H
STAR1 EQU MINIG+4FDH
PORT EQU 033H ;CWR
PORT2 EQU PORT-2 ;PORT B
INC EQU 0C0B1H ;SLUZBA MONITORU
IODEF EQU 0011EH ;SLUZBA MONITORU
NEXT EQU 00139H ;NAVRAT DO MONITORU
ZAZN EQU 0FFD0H ;ZAZNAMNIK V RAM
; EQU MINIG-1 ;VERSE V RAM
RMTOP EQU ZAZN-1 ;VERSE V EPROM
SIZXX EQU ZAZN+02H
SIZXY EQU ZAZN+04H
SIZYX EQU ZAZN+06H
SIZYY EQU ZAZN+08H
POL1X EQU ZAZN+0AH
POL1Y EQU ZAZN+0CH
POL2X EQU ZAZN+0EH
POL2Y EQU ZAZN+10H
WIDE EQU ZAZN+12H
REZIM EQU ZAZN+13H
ZBS EQU ZAZN+14H
PENZ EQU ZAZN+16H
ZPOZD EQU ZAZN+1CH
TABSK EQU 01D40H ;NIZSI BYTE 40H
HBYTE EQU 01DH ;HORNI BYTE TOTOZNE S TABSK
VIRAM EQU 03800H ;POCATEK VIDEORAM
KVRAM EQU 03EH ;HORNI BYTE KONCE VIDEORAM
;TABULKA SKOKU:
ASEG
ORG MINIG
NOP
NOP
NOP
CALL ORGB0 ;INICIALIZACE PORTU
JMP NEXT
CALL TEST ;SPUSTI TEST Z MONITORU
JMP MINIG+06H
CALL COPY1 ;COPY Z MONITORU
JMP MINIG+06H
CALL SYST0 ;NASTAVI MINIGRAF JAKO
JMP MINIG+06H;SYST.TISKARNU
JMP SYSTB ;DTTO Z BASICU
NOP
NOP
NOP
JMP RAMTP ;SPUSTENI Z BASICU
NOP
NOP
NOP
JMP COPYB ;COPY Z BASICU
JMP MOVA ;MOVA
JMP MOVAB ;MOVA Z BASICU
JMP VECTA ;VECTA
JMP VECTB ;VECTA Z BASICU
JMP POINA ;POINTA
JMP POINB ;POINTA Z BASICU
JMP MOVR ;MOVR
JMP MOVRB ;MOVR Z BASICU
JMP VECTR ;VECTR
JMP VECTC ;VECTR Z BASICU
JMP POINR ;POINTR
JMP PONRB ;POINTR Z BASICU
JMP SPEED ;NASTAVI SPEED
JMP WRTEB ;TISK RETEZCE
JMP ZNAK ;TISK ZNAKU
JMP NASXX ;NASTAVENI SIZE XX A YY
JMP NASYX ;NASTAVENI SIZE XY A YX
JMP NWIDE ;NASTAVENI WIDE
JMP NNARR ;NASTAVENI NARROW
ORG START
SYSTB: PUSH H
POP B
JMP SYST
SYST0: NOP
NOP
NOP
NOP
NOP
NOP
SYST: CALL ORG1
MVI A,001H ;NAST.ASCII
STA REZIM
MVI C,00DH
LXI D,TISK
CALL IODEF
RET
TISK: PUSH B ;TEST NA 0AH
PUSH D
PUSH H
MOV A,C
CPI 00AH
JNZ NO0A
LHLD POL2Y
MOV B,H
MOV C,L
LXI D,00000H
CALL MOVA
JMP NAVR
NO0A: CPI 00DH ;TEST NA 0DH
JNZ NO0D
LHLD SIZYY
MVI B,008H
PUSH H
XCHG
POP H
POCET: DAD D
DAD D
DCR B
JNZ POCET
MOV A,H
CMA
MOV H,A
MOV A,L
CMA
MOV L,A
INX H
MOV B,H
MOV C,L
LXI D,00000H
CALL MOVR
NAVR: POP H
POP D
POP B
RET
NO0D: CALL ZNAK
POP H
POP D
POP B
RET
NASXX: SHLD SIZYY
XCHG
SHLD SIZXX
RET
NASYX: SHLD SIZYX
XCHG
SHLD SIZXY
RET
NWIDE: MVI A,000H
STA WIDE
RET
NNARR: MVI A,080H
STA WIDE
RET
MOVAB: PUSH H
POP B
MOVA: CALL PEN0
JMP SK02
VECTB: PUSH H
POP B
VECTA: CALL PEN1
JMP SK02
POINB: PUSH H
POP B
POINA: CALL PEN0
CALL SK02
JMP SK06
MOVRB: PUSH H
POP B
MOVR: CALL PEN0
JMP SK07
VECTC: PUSH H
POP B
VECTR: CALL PEN1
JMP SK07
PONRB: PUSH H
POP B
POINR: CALL PEN0
CALL SK07
JMP SK06
SK06: CALL PEN1
JMP PEN0
SPEED: ADI 008H
STA 0017CH
RET
ORGB0: LXI H,00000H
LXI D,00000H
RAMTP: PUSH D ;NASTAVI RAMTOP
MVI C,08H
LXI D,RMTOP
CALL IODEF
POP D
ORGB: MVI A,099H
OUT PORT
PUSH H
POP B
JMP ORG1
ORG1: MVI A,014H
STA ZPOZD
STA ZAZN+25H
PUSH D
PUSH B
MVI A,001H
STA PENZ
LXI B,00008H
MOV D,B
MOV E,C
CALL MOVR
MVI A,00BH
STA ZPOZD
LXI H,006A4H
SHLD POL1X
LXI H,0F95CH
SHLD POL1Y
POP B
PUSH B
LXI D,00000H
CALL MOVA
POP B
PUSH B
LXI D,00050H
CALL MOVA
XRA A
STA POL1X
POP B
POP D
CALL MOVA
NAST: MVI A,00AH
STA ZAZN+25H
NSIZE: LXI H,00003H
SHLD SIZXX
SHLD SIZYY
MVI L,000H
SHLD SIZXY
SHLD SIZYX
SHLD REZIM
MVI A,080H
STA WIDE
RET
SK07: LHLD POL1X
DAD D
XCHG
LHLD POL1Y
DAD B
MOV B,H
MOV C,L
SK02: LHLD POL1X
XCHG
SHLD POL1X
SHLD POL2X
CALL SK09
PUSH H
PUSH B
MOV C,A
POP D
LHLD POL1Y
XCHG
SHLD POL1Y
SHLD POL2Y
CALL SK09
RLC
RLC
RLC
RLC
MOV B,A
ORA C
STA ZAZN+1EH
POP D
RZ
MOV A,L
SUB E
MOV A,H
SBB D
MOV A,C
JC SK10
XCHG
MOV A,B
SK10: STA ZAZN+1FH
SHLD ZAZN+20H
LXI H,00014H
CALL ZPOZ0
MVI A,029H
STA ZAZN+1DH
MOV B,D
MOV C,E
XRA A
SUB E
MOV L,A
MVI A,000H
SBB D
MOV H,A
XRA A
MOV A,D
RAR
MOV D,A
MOV A,E
RAR
MOV E,A
SK16: PUSH H
PUSH D
XCHG
MOV H,B
MOV L,C
DAD H
DCX H
DAD D
LXI H,ZAZN+1DH
JNC SK12
LDA ZAZN+25H
CMP M
JZ SK12
DCR M
SK12: MVI A,028H
SUB M
SUB C
MVI A,000H
SBB B
JC SK13
INR M
SK13: LHLD ZAZN+20H
POP D
DAD D
XCHG
POP H
PUSH H
DAD D
LDA ZAZN+1FH
JNC SK14
XCHG
LDA ZAZN+1EH
SK14: PUSH D
CALL SK15
DCX B
MOV A,B
ORA C
POP D
POP H
JNZ SK16
RET
SK09: MOV A,L
SUB E
MOV L,A
MOV A,H
SBB D
MOV H,A
DAD H
JNC SK17
XRA A
SUB L
MOV L,A
MVI A,000H
SBB H
MOV H,A
MVI A,00FH
RET
SK17: MOV A,H
ORA L
RZ
MVI A,001H
RET
WRTEB: XCHG
MOV E,C
JMP WRITE
SK08: LHLD ZAZN
MOV E,H
INX H
INX H
MOV A,M
INX H
MOV H,M
MOV L,A
WRITE: XRA A
STA ZAZN+15H
SK25: MOV A,E
ORA A
RZ
LDA ZAZN+15H
ORA A
JNZ SK18
MOV A,M
ORA A
JZ SL19
MOV A,M
CALL ZNAK
SK19: JMP SK20
SL19: INR A
STA ZAZN+15H
CALL SK21
SK18: MOV A,M
CALL SK22
MOV A,M
ORA A
JP SK20
XRA A
STA ZAZN+15H
CALL SK24
SK20: INX H
DCR E
JMP SK25
SK21: PUSH H
LXI H,ZBS
XRA A
CMP M
MOV M,A
JNZ SK26
LHLD POL2X
SHLD ZAZN+18H
LHLD POL2Y
SHLD ZAZN+1AH
SK26: POP H
RET
ZNAK: PUSH H
LXI H,ZBS
CPI 008H
JNZ SK27
MOV M,A
POP H
RET
SK27: ANI 07FH
MOV C,A
CALL SK21
LDA REZIM
ORA A
JNZ SK28
MOV A,C
CPI 07BH
JC SK28
ADI 005H
MOV C,A
INR M
SK28: MOV A,C
CPI 020H
JC SK29
ANI 0F8H
RAR
RAR
ADI 0F8H
ADI 040H
MOV L,A
MVI A,000H
ACI HBYTE
MOV H,A
MOV A,M
INX H
MOV H,M
MOV L,A
MOV A,C
ANI 007H
MOV C,A
JZ SK31
SK32: MOV A,M
ORA A
INX H
JP SK32
DCR C
JNZ SK32
SK31: MVI A,008H
CALL SK22
SK30: MOV A,M
CALL SK22
MOV A,M
INX H
ORA A
JP SK30
SK29: POP H
SK24: PUSH H
LDA WIDE
RLC
RAL
ADI 0F6H
CMA
MVI C,000H
CALL SL22
POP H
RET
SK22: MOV C,A
ANI 007H
SL22: PUSH H
PUSH D
PUSH PSW
LHLD SIZXX
XCHG
LHLD ZAZN+18H
CALL SL32
XCHG
MOV A,C
ANI 038H
RAR
RAR
RAR
LXI H,ZBS
ADD M
MOV B,A
LHLD SIZYX
XCHG
CALL SL32
POP PSW
PUSH H
LHLD SIZXY
XCHG
LHLD ZAZN+1AH
CALL SL32
MOV A,B
XCHG
LHLD SIZYY
XCHG
CALL SL32
PUSH H
MOV A,C
ANI 040H
JZ SL33
LHLD POL2X
XCHG
LHLD POL2Y
MOV B,H
MOV C,L
LDA PENZ
ORA A
CZ MOVA
POP B
POP D
CALL VECTA
JMP SK33
SL33: CALL PEN0
POP H
SHLD POL2Y
POP H
SHLD POL2X
SK33: POP D
POP H
RET
SL32: INR E
DCR E
RZ
PUSH H
LXI H,00000H
SK35: DCR A
JM SK34
DAD D
JMP SK35
SK34: POP D
DAD D
RET
SK15: LHLD PENZ+1
MOV H,A
ADD L
ANI 00FH
MOV E,A
MOV A,H
ANI 0F0H
ADD L
ANI 0F0H
ORA E
STA PENZ+1
XRA A
MOV H,A
LDA ZAZN+1DH
RAR
MOV L,A
JMP SK36
PEN0: LDA PENZ
DCR A
RNZ
JMP SK37
PEN1: LDA PENZ
DCR A
RZ
MVI A,001H
SK37: STA PENZ
LXI H,001F4H
SK36: PUSH H
LHLD PENZ
MOV A,H
ANI 00EH
ORA L
MOV L,A
MOV A,H
ANI 0E0H
RRC
ORA L
RRC
OUT PORT2
POP H
ZPOZ0: LDA ZPOZD
ZPOZ1: DCR A
JNZ ZPOZ1
DCX H
MOV A,H
ORA L
JNZ ZPOZ0
RET
COPYB: MOV B,H
MOV C,L
JMP COPY2
COPY1: PUSH B
PUSH D
POP B
POP D
COPY2: PUSH B
PUSH D
CALL MOVA
LXI D,002F0H ;RAMECEK
LXI B,00000H
PUSH B
CALL VECTR
POP D
PUSH D
LXI B,0FD08H
CALL VECTR
LXI D,0FD10H
POP B
CALL VECTR
POP D
POP B
CALL VECTA
LXI D,00012H ;POC.TISKU
LXI B,0FFDCH
CALL MOVR
CALL NSIZE
MVI A,001H ;NAST.ASCII
STA REZIM
LHLD POL1X
XCHG
LXI H,VIRAM
DALZN: MOV A,M
ANI 020H ;PREKODOVANI AND->ASCII
MOV A,M
JNZ VYST
ORI 40H ;DOPL.BITU 6 NA ASCII
VYST: CALL ZNAK
MOV A,M ;TEST NA DVOJ.SIRKU ZN.
CMA
ANI 0C0H
JNZ NENI
MVI A,020H ;KOD MEZERY
CALL ZNAK
INX H
NENI: INX H
MOV A,L
ANI 03FH ;DALSI RADEK?
CPI 028H ;>27HH=K0NEC RADKU
JC DALZN
DALR: PUSH B
LXI B,00018H
DAD B ;DALSI PAM.MISTO
POP B
PUSH H
PUSH D
LXI B,0FFE0H
LHLD POL2Y
DAD B
MOV B,H
MOV C,L
CALL MOVA ;NA DALSI RADEK
POP D
POP H
MOV A,H ;TEST NA KONEC VIDEORAM
CPI KVRAM
JC DALZN
JMP NSIZE
ORG STAR1
TEST: LXI D,00186H
LXI B,00708H
CALL ORG1
MVI A,00AH
STA SIZXX
STA SIZYY
ADD A
STA ZAZN+25H
XRA A
STA WIDE
INR A
STA REZIM
MVI H,020H
SK56: MOV A,H
CALL ZNAK
INR H
MOV A,H
ANI 007H
JNZ SK56
PUSH H
MOV H,D
MOV L,E
SHLD POL2X
LHLD POL2Y
LXI B,0FF80H
DAD B
SHLD POL2Y
POP H
MOV A,H
ORA A
JP SK56
JMP NAST
ORG TABSK
DW TAB20,TAB28,TAB30,TAB38,TAB40
DW TAB48,TAB50,TAB58,TAB60,TAB68
DW TAB70,TAB78,TAB80
TAB20: DB 80H,3AH,5AH,0AH,0CAH,31H,7AH
DB 32H,0FBH,39H,49H,0BH,7BH,2CH,68H,18H,0DCH
DB 10H,53H,5CH,63H,61H,68H,71H
DB 74H,3AH,0CAH,7CH,39H,70H,69H
DB 72H,79H,1BH,52H,4BH,54H,0DBH
DB 0CH,68H,70H,79H,7AH,73H,6BH
DB 50H,49H,4AH,0DCH,3BH,0F2H
TAB28: DB 3BH,69H,59H,0CBH,39H,6BH,5BH
DB 0C9H,11H,73H,24H,60H,31H,0D3H
DB 20H,64H,32H,0D2H,12H,0C1H,20H
DB 0E4H,0AH,0CAH,0FCH
TAB30: DB 7CH,34H,54H,4BH,49H,50H,70H
DB 79H,7BH,0F4H,29H,7BH,0CBH,30H
DB 79H,7BH,74H,6CH,48H,0CCH,30H
DB 79H,7BH,74H,6CH,63H,5CH,54H
DB 4BH,49H,0D0H,0BH,7BH,58H,0DCH
DB 10H,49H,4BH,54H,5CH,63H,60H
DB 78H,0FCH,34H,7BH,79H,70H,50H
DB 49H,4BH,54H,5CH,63H,61H,0D8H,7CH,0F8H
TAB38: DB 09H,50H,58H,61H,63H,6CH,74H
DB 7BH,79H,70H,68H,61H,63H,5CH
DB 54H,4BH,0C9H,10H,49H,4BH,54H
DB 74H,7BH,79H,70H,68H,61H,63H
DB 0ECH,1AH,5AH,2AH,0EAH,01H,52H
DB 22H,0E2H,33H,61H,0D3H,28H,6CH
DB 18H,0DCH,31H,63H,0D1H,30H,79H
DB 7BH,74H,6CH,5AH,52H,0AH,0CAH
TAB40: DB 68H,71H,73H,6CH,54H,4BH,4AH
DB 51H,61H,6AH,63H,0CBH,7AH,4CH
DB 21H,0E3H,78H,7BH,74H,6CH,63H
DB 60H,63H,5CH,54H,4BH,0C8H,34H
DB 7BH,79H,70H,50H,49H,4BH,0D4H
DB 78H,7BH,74H,54H,4BH,0C8H,3CH
DB 78H,48H,4CH,20H,0E2H,78H,7CH,20H,0E2H
DB 34H,7BH,79H,70H,50H,49H,4BH,54H,5CH,0DAH
TAB48: DB 78H,3CH,4CH,20H,0E4H,09H,4BH,4AH
DB 7AH,79H,0FBH,10H,49H,4BH,54H
DB 0FCH,78H,3CH,60H,0CCH,38H,48H
DB 0CCH,78H,62H,7CH,0CCH,78H,4CH
DB 0FCH,09H,50H,70H,79H,7BH,74H,54H,4BH,0C9H
TAB50: DB 78H,7BH,74H,6CH,63H,0E0H,09H
DB 50H,70H,79H,7BH,74H,54H,4BH
DB 49H,1AH,0CCH,78H,7BH,74H,6CH
DB 63H,60H,0CCH,10H,49H,4BH,54H
DB 5CH,63H,61H,68H,70H,79H,7BH
DB 0F4H,38H,7CH,3AH,0CAH,38H,50H
DB 49H,4BH,54H,0FCH,38H,4AH,0FCH
DB 38H,49H,6AH,4BH,0FCH
TAB58: DB 7CH,38H,0CCH,38H,62H,7CH,22H
DB 0CAH,38H,7CH,48H,0CCH,3BH,79H
DB 49H,0CBH,38H,0CCH,39H,7BH,4BH
DB 0C9H,31H,7AH,0F3H,0H,0C4H
TAB60: DB 39H,0F2H,29H,6BH,64H,54H,4BH
DB 49H,50H,59H,5BH,54H,0CCH,78H
DB 28H,6BH,64H,54H,4BH,0C8H,2CH
DB 69H,60H,50H,49H,0CCH,3CH,4CH
DB 49H,50H,60H,69H,0ECH,18H,5CH
DB 64H,6BH,69H,60H,50H,49H,0CCH
DB 0AH,72H,7BH,7CH,21H,0E3H,00H
DB 43H,4CH,6CH,69H,60H,58H,51H,0D4H
TAB68: DB 78H,28H,6BH,64H,0CCH,09H,4BH
DB 4AH,6AH,69H,3AH,0FAH,01H,42H
DB 4BH,6BH,6AH,3BH,0FBH,78H,2CH
DB 58H,0CCH,09H,4BH,4AH,7AH,0F9H
DB 68H,60H,69H,62H,4AH,22H,6BH
DB 64H,0CCH,68H,60H,69H,6BH,64H
DB 0CCH,09H,50H,60H,69H,6BH,64H,54H,4BH,0C9H
TAB70: DB 00H,68H,6BH,64H,5CH,53H,0D0H
DB 04H,6CH,69H,60H,58H,51H,0D4H
DB 09H,69H,61H,6AH,6BH,0E4H,4BH
DB 54H,5BH,59H,60H,69H,0ECH,0CH
DB 4BH,52H,7AH,29H,0EBH,28H,50H,49H
DB 4BH,54H,0ECH,28H,4AH,0ECH,28H
DB 49H,62H,4BH,0ECH
TAB78: DB 6CH,28H,0CCH,0H,43H,4CH,6CH
DB 28H,58H,51H,0D4H,28H,6CH,48H
DB 0CCH,0BH,52H,5AH,61H,6AH,72H
DB 0FBH,0AH,0FAH,09H,52H,5AH,63H
DB 6AH,72H,0F9H,20H,69H,5BH,0E4H,80H
TAB80: DB 32H,0FBH,2AH,71H,7AH,73H,0EAH
DB 39H,72H,0FBH,31H,7AH,0F3H,39H,79H,3BH,0FBH
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