Ú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