Ú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
.XLIST PAGE 64 .LIST ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TITLE FIRMWARE SAPI-1 MIKOS/K V5.0 - KZD ; 18.5.88 ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ; VOLBA SYSTEMU TV64 EQU 00 ; AND/G CPM EQU 00 ; 00 = ZPS-2; -1 = ZPS-3 SM EQU 00 ; TERMINAL SM 7202 HORE EQU 00 IMS EQU -1 ; PRO DPS-1 (IMS) ;=============================================== ASEG ; ; *** DEFINOVANI PAMETOVEHO PROSTORU * ; @R@ EQU 4000H ; ZACATEK RSTN EQU 0CFH ; RST1 .. POUZIVA SYSTEM ;----------------------------------------------- IF CPM MONIT EQU 100 ; START ERAM EQU 9FFFH ; VRCHOL RAM EP3 EQU 1900H ; USER EPROM IF TV64 TVBEG EQU 0F800H ELSE TVBEG EQU 0E800H ; TV-RAM ENDIF EPROM EQU 0C00H+100H ; O.S. EPROM ELSE MONIT EQU 0 ; ROM VERZE ZPS2 ERAM EQU 0000 EP3 EQU 1800H IF TV64 TVBEG EQU 0F800H ELSE TVBEG EQU 3800H ; TV-RAM ENDIF IF HORE EPROM EQU 0B400H ELSE EPROM EQU 0C00H ENDIF ENDIF ; ; * MONITOR ENTRY * ; CI EQU 103H RI EQU 106H CO EQU 109H PO EQU 10CH CSTS EQU 112H IOCHK EQU 115H IOSET EQU 118H IODEF EQU 11EH SPCL EQU 121H CRLF EQU 124H EXPR EQU 127H ERROR EQU 12AH ASHEX EQU 12DH DADR EQU 130H DBYT EQU 133H HILO EQU 136H NEXT EQU 139H SPACE EQU 13CH CINCR EQU 13FH TEXT EQU 142H HXASC EQU 148H TXIMM EQU 151H WND@ EQU 154H RNAME EQU 15AH INTER EQU 15DH SERI@ EQU 17BH SERO@ EQU 17EH SMST@ EQU 181H ; ; TERMINAL TLINE EQU 24 TCOLUM EQU 80 ; ZAZNAM LENGHT EQU 255 ; DELKA BLOKU NAMLE EQU 11 ; DELKA JMENA COMLE EQU 64 ; DELKA KOMENTARE UVOD EQU 0FBH ; SYNCHRO BLOKU ;------------------------------------------ ; KONSTANTY ETX EQU 3 BS EQU 8 HT EQU 9 LF EQU 0AH VT EQU 0BH CR EQU 0DH SUBS EQU 1AH ; END FLAG ESC EQU 1BH HOME EQU 1DH ; BLOKOVA NAVESTI SOH EQU 01H ; "START OF HEADER" EOT EQU 04H ; "END OF TEXT" CAN EQU ':' ; JMENO PASKY ; 'A' ; DATOVY (ASCII) BLOK ; 'B' ; BINARNI BLOK ; SERIOVY KANAL ; ============= UMODE EQU 10H USTAT EQU 11H UDATA EQU 12H URES EQU 13H PRENOS EQU 0DH ; NASTAVENI PRENOSU (SM7202) ; (PRO AND-16: 14H) ; PARAMETRY KZD-1 ; =============== IF IMS KZDIN EQU 09H ; PRO IMS KZDOUT EQU 08H KZDCTR EQU 0BH ELSE ; STD. KZD KZDIN EQU 31H ; ADRESA VSTUPNIHO PORTU KZDOUT EQU 30H ; ADRESA VYSTUPNIHO PORTU KZDCTR EQU 33H ; ADRESA RIDICIHO REGISTRU ENDIF ; MHB 8255 PRODL EQU 0 ; CASOVACI PARAMETR ; UDAVA PRODLOUZENI ZAPISOVEHO ; TAKTU V MIKROSEC. ; PRODL=0 ... TAKT = 0,1 MSEC ; PRODL=30 ... TAKT = 0,13 MSEC ; PRODL=100... TAKT = 0,2 MSEC ; VYZNAM CHYBOVYCH HLASENI (PRIZNAK Z=0): ; ======================================= ; CHYBA <A> ; 0 30H ZAZNAM NENI POVOLEN (SZAVP) ; 2 32H CHYBA PRI CTENI DAT (CRC) (CTBLD,KOBLD) ; 4 34H NESOUHLASI CISLO BLOKU (@READU) ; CHYBA PRI CTENI OZNACENI (CTOZN) ; 6 36H PRETIZENI MOTORKU (TEKP,CTTV) ; 8 38H BYLA PRECTENA EM (@READU) ; A 3AH NENI BINARNI FORMAT (LOAD) ; C 3CH SOUBOR NEEXISTUJE (NUMB,CMPNM) ; DEFINICE KONSTANT: ; ================== SETPPI EQU 8BH SETOUT EQU 1FH KSCVP EQU 0FEH KSCVPC EQU 0BEH KSCVZC EQU 0BBH KSCRVP EQU 0BDH KSCRVZ EQU 0B7H KSZAVP EQU 0AEH KSTPCT EQU 0FFH KSTPZA EQU 0AFH KONST1 EQU 05CH KPREVZ EQU 0B3H ;************************************ ASEG IF HORE .PHASE EPROM ELSE ORG EPROM ; START ENDIF ;************************************ ;==================================== ; 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@ ; 7 JMP REWIND ; 8 JMP PUT@ ; 9 JMP STOP ; 10 JMP SLEN ; 11 JMP NUMB@ ; 12 MAXSL EQU $-EPROM ;==================================== ; INICIALIZACE SYSTEMU KOS ;==================================== INITS: MVI A,0A9H ; LO=L,RI-1,PO-1 STA FND ; NE FIND MODE STA IOBYT CALL TXIMM ; OHLASENI DB 'MIKOS/K V5.0 ' DC '(C) TESLA DIZ 1987 ' LXI H,KOS@@ SHLD KOS@+1 CALL NAF ; NASTAV FLAGY LXI H,ZAC ; VYPLN IODEF LXI D,R1LOC MVI B,12 CALL MOVE CALL INITIO ; INICIALIZACE 8255 LDA EP3 ; USER SYSTEM ? CPI 0C3H CZ EP3 + 3 ; START ; IF HORE LXI D,0B3F8H MVI C,8 CALL 11EH ; IODEF - MEMTOP ENDIF ; 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 OBSLUHY ;=================================== MICOS: CALL STOP XRA A STA EXTEXT ; 0..NENI MVI C,'_' LDA JEVER ORA A JZ $+5 MVI C,'*' ; PRO VERIFIKACI CALL CO CALL ECHOCR CPI 'I' JZ INIT ; INICIALIZACE PASKY CPI 'O' JZ OPEN ; OPEN OUTPUT CPI 'C' ; CLOSE OUTPUT JZ CLOSE CPI 'F' ; FIND INPUT JZ FIND CPI 'S' JZ SAVE CPI 'L' ; LOAD JZ LOAD CPI 'E' JZ EOR CPI 'Z' JZ @BOT ; NASTAV NA "BOT" CPI 'B' JZ @BLOK ; O BLOK VPRED CPI '>' JZ @SKIP ; O SOUBOR VPRED CPI '<' JZ @BACK ; O SOUBOR VZAD CPI 'V' JZ VERIF ; NASTAV VERIFIKACI CPI 'P' JZ VRF1 ; POROVNANI 1 SOUBORU CPI 'R' MVI D,1 JZ REWIND ; PREVINUTI NA ZACATEK CPI 'D' JZ @EOR ; ADRESAR KAZETY CPI 'N' JZ NUMB ; NAJDI DLE CISLA SOUBORU CPI 'X' JZ SLEN@ ; NASTAV DELKU BLOKU CPI 'K' ; ZAPIS EM RNZ ; JINY POVEL ;************************************ ; REALIZACE POVELU KOS-1 ;************************************ ;==================================== ; ZAPIS EM NA PASKU ;==================================== KONEC: CALL OK? RNZ ; NEPIS CALL SCVZC CALL HLKMM CALL ZAKMM CALL ZAKS1 JMP EOR1 ; PRED "EM" ;==================================== ; BINARNI SOUBOR NASTAV ;==================================== BINAR: MVI A,'B' STA BOUT-1 RET ;==================================== ; UZAVRI A PRIPOJ DALSI SOUBOR ;==================================== NOVYOT: CALL CLOSE JMP OPE4 ;==================================== ; NASTAV DELKU BLOKU ; VSTUP: E - DELKA BLOKU ; (PRI VOLANI SLUZBY 157 ; JE DELKA BLOKU V <L> ;==================================== SLEN@: CALL TXIMM DB CR,LF DC 'DELKA BLOKU' MVI C,1 CALL EXPR POP D SLEN: MOV A,E STA DEBL ; NOVA DELKA BLOKU RET ;==================================== ; PREPNI NASTAVENI VERIFIKACE ;==================================== VERIF: LDA JEVER XRI 0FFH STA JEVER RET ;==================================== ; OTEVRI NOVY SOUBOR PRO ZAPIS ;==================================== OPEN: XRA A CALL IOPO ; NASTAV IOBYT CALL NPO RM ; PO=SYSTEM.. MVI C,2 JNZ CCPM ; USER=2 CALL RNAME CPI '@' ; VYBER JZ OPE2 ; ZA SOUBOR CPI '.' JNZ OPE5 ; NA KONEC (APPEND) CALL BOT ; OD ZACATKU PUSH H OPE1: CALL SEARCH ; KONEC ZAZNAMU ? CALL VYPISH ; SOH CALL SKIP CALL STOP CALL OK? JNZ OPE1 ; DALSI SOUBOR OPE4: LHLD BNO ; CISLO SOUBORU INR H MVI L,0 SHLD BNO ; CISLO BLOKU A SOUBORU MVI A,SOH STA @OF1 POP H JMP WRNAM OPE5: MVI A,8 ; NASTAV PO=1 CALL IOPO1 PUSH H CALL BLOK4 CALL EOR JMP OPE4 OPE2: MVI A,8 CALL IOPO1 LDA @OF1 ; PODRUHE ? ORA A JNZ NOVYOT PUSH H CALL SCVPC CALL HLDMM ; ZA SOUBOR JMP OPE4 ;==================================== ; OTEVRI SOUBOR PRO CTENI ;==================================== FIND: XRA A CALL IORI CALL NRI RM ; SYSTEM RI MVI C,1 JNZ CCPM ; USER 2 CALL RNAME CPI '.' CZ BOT MVI B,NAMLE LXI D,FNAME CALL MOVE CALL CMPNM FIND1: MVI A,1 STA BNI STA @IF1 CALL BUFEND SHLD ADRI RET ;==================================== ; CTI BINARNI SOUBOR ;==================================== ; LOAD: CALL FIND ; OTEVRI SOUBOR LO1: CALL RICH ORA A ; BLANK? JZ LO1 SUI '<' PUSH PSW MVI A,3AH JNZ ERREND ; NENI BINARNI FORMAT POP PSW MOV B,A ; KONTROLNI SOUCET CALL RADR@ SHLD EADR ; KONCOVA ADRESA XCHG CALL RADR@ SHLD SADR ; START. ADRESA CALL RICH CPI '>' PUSH PSW MVI A,3AH JNZ ERREND ; NENI BINAR POP PSW PUSH H CALL CHECK MVI B,0 ; NULUJ LO2: CALL RICH MOV M,A CALL HILO JNC LO2 CALL CHECK STA SUM POP H LXI D,4401H CALL HILO JNZ CLSTP LXI H,0 SHLD @BT ; UZAVRI VSTUPNI SOUBOR CLSTP: CALL CRLF CALL NRI RM JNZ CLST2 DIRSTP: XRA A STA @IF1 ; CLOSE CMA STA DEBL ; BLOK 255 B JMP @SKIP ; ZA EM A STOP CLST2: XRA A STA @IF2 RET ;==================================== ; ULOZ BINARNI SOUBOR ;==================================== SAVE: CALL OPEN MVI C,2 CALL EXPR ; ROZSAH ADRES CALL NPO CZ BINAR MVI C,'<' ; PRVNI BYTE CALL POCH MVI B,0 ; KONTROLNI SOUCET POP H ; POCATECNI ADRESA POP D ; KONCOVA ADRESA CALL PADR@ XCHG CALL PADR@ MVI C,'>' CALL POCH MOV C,B ; KONTROLNI SUMA ADRES CALL POCH MVI B,0 ; KONTROLNI SUMA DAT SAV1: MOV C,M CALL POCH CALL HILO JNC SAV1 MOV C,B ; SUMA CALL POCH ;==================================== ; UZAVRI VYSTUPNI SOUBOR ;==================================== CLOSE: CALL NPO RM MVI C,3 JNZ CCPM CLOSE0: LDA @OF1 ; NENI OTEVREN ORA A RZ PUSH D PUSH H LHLD ADRO INX H MVI M,SUBS ; ZAPIS POSLEDNI ZNAK MVI A,EOT ; UZAVRI BLOK STA BOUT-1 CALL WOB XRA A STA @OF1 ; CLOSE CALL EOR1 ; PRED EM LDA JEVER ORA A JZ CLOSE1 CALL BACK CALL VRF1 CLOSE1: POP H POP D RET ;==================================== ; NAJDI SOUBOR DLE CISLA A OTEVRI ; VSTUP: PRO VOLANI SLUZBOU 157 ; L - CISLO SOUBORU ;==================================== NUMB: CALL TXIMM DB CR,LF DC 'CISLO SOUBORU' MVI C,1 CALL EXPR POP D NUMB@: MOV A,E ; CISLO SOUBORU ; <DE> TO DA SLUZBA 157!! ORA A JZ NUM1 STA BTO ; PRO "00" CALL BOT JMP @BLOK ; ZA NAZEV PASKY NUM1: CALL SEARCH JNZ NUM2 XRA A ; PRO "EM" STA KAM? JMP NUM5 NUM2: MOV A,E ; HLEDANE C.S. CMP C ; CTENE C.S. JNC NUM3 XRA A ; PRO ZPET NUM3: STA KAM? NUM4: MOV A,E ; HLEDANE C.S. CMP C ; CTENE C.S. JNZ FIND1 ; OK - NASEL LDA KAM? JC NUM5 ORA A ; PRO VPRED JZ NUM6 ; BILO ZPET, HLEDEJ JINAK CALL SKIP CALL SEARCH JZ NUM8 ; PRO "EM" SOUBOR NENI JMP NUM4 NUM5: ORA A ; PRO ZPET JNZ NUM6 ; BYLO VPRED, HLEDEJ JINAK CALL BACK CALL BACK CALL SEARCH MOV A,C ; CTENE C.S. ORA A JZ NUM8 ; PRO "CAN" SOUBOR NENI JMP NUM4 NUM6: CALL BOT ; HLEDEJ OD ZACATKU NUM7: CALL SEARCH JZ NUM8 ; SOUBOR NENI MOV A,E ; HLEDANE C.S. CMP C ; CTENE C.S. JZ FIND1 ; OK - NASEL CALL SKIP JMP NUM7 NUM8: CALL EOR1 ; PRED "EM" MVI A,3CH JMP ERREND ;==================================== ; INICIALIZUJ NOVOU KAZETU ;==================================== INIT: CALL FORM ; FORMATOVANI CALL TXIMM DC ' ZADEJ' LXI H,0 ; CISLO SOUBORU SHLD BNO ; A BLOKU CALL RNAME ; JMENO PASKY MVI A,CAN ; ZAPIS JMENO SOUBORU WRNAM: PUSH H PUSH PSW CALL NULBF POP PSW MOV M,A INX H MVI B,COMLE ; JMENO+POZNAMKA XCHG POP H PUSH D CALL MOVE POP H MVI B,NAMLE LXI D,WRNM ; VYSTUPNI POLE WRN1: MOV A,M ORA A JNZ $+5 MVI A,' ' ; BLANK STAX D INX H INX D DCR B JNZ WRN1 CALL ZADMM ; DMM PRED SOUBOREM MVI C,COMLE+1 ; DELKA BLOKU CALL WOB1 MVI M,'A' ; TYP DATA JMP CRLF ;==================================== ; TEST NA JMENO CALL PHDR CMPNM: CALL SEARCH ; POROVNEJ JMENO JNZ CMPN1 MVI A,3CH ; KONEC SOUBORU JMP ERREND CMPN1: LDA BIN-1 CPI CAN JZ CMPNM-3 ; VYPIS VOLUME JMENO ; PRO ZAPIS CPF10: PUSH B ; <C> - CISLO SOUBORU LXI B,FNAME LXI H,BIN-1 MVI E,NAMLE CALL TESTJM POP B RZ ; OK - NASEL CALL SKIP JMP CMPNM ; DALSI JMENO TESTJM: INX H ; JMENO LDAX B CPI '*' JZ JMENO? CALL @ANAL JZ VYPISH CMP M RNZ INX B DCR E JNZ TESTJM ; VYPIS HLAVICKU VYPISH: PUSH B PUSH D CALL PHDR IF SM LDA TSM ORA A JNZ VYP1 MVI C,1FH ; PRO TERMINAL CALL SERO@ CALL CRLF ENDIF VYP1: POP D POP B XRA A RET IF SM SERCR: MVI C,CR ; ZNAK "CR" NA SERIOVY JMP SERO@ ; VYSTUP ENDIF SEARCH: CALL SCVPC ; NALEZENI SOUBORU CALL HLDMM ; NA PASCE A TEST PUSH D CALL READBL POP D CPI 38H JZ STOP ; PRO "EM" PUSH PSW MOV A,C ; CISLO BLOKU STA BTI STA BTO POP PSW JMP STOP ; TISK HLAVICKY SOUBORU PHDR: IF SM LDA TSM ORA A PUSH PSW CNZ CRLF ; POUZE PRO TV POP PSW CZ SERCR ; PRO TERMINAL ELSE CALL CRLF ENDIF PHDR1: LXI H,BIN MVI D,COMLE JMP TEXT PDIR: PUSH B MOV A,C CALL DBTV2 CALL PHDR1 CALL SPACE POP B RET ; VYPIS NA CO PRO IDENTIFIKACI BLOKU PNAME: LXI H,READNM ; VYPIS "E" ZNAKU Z POLE PNAM1: MOV A,M ; READNM NA CO CPI 1FH JNC PNAM2 ADI 40H ; KOD SAPI-1 NA ASCII PNAM2: MOV C,A CALL CO INX H DCR E JNZ PNAM1 RET DBTCR: CALL CRLF DBTV: MOV A,D CALL DBYT DBTV1: CALL SPACE MOV A,B DBTV2: CALL DBYT JMP SPACE OBNOV: LHLD POSICE ; VRACENI OKNA CALL TXIMM DB 9BH ; ESC MOV C,L CALL CO MOV C,H CALL CO LDA MOD@ STA MODE RET OKNO: PUSH D ; NASTAVENI OKNA PUSH B LXI H,MODE MOV A,M MVI M,0 ; ZRUS ^P STA MOD@ CALL SPCL LXI H,2020H DAD D SHLD POSICE CALL TXIMM DB HOME OR 80H POP B POP D RET ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ; OPERACE SE SOUBORY ;======================================= ; CTI VSTUPNI BUFFER ;======================================= RIB: PUSH D PUSH B XRA A STA FND ; FIND MOD CALL READBL ORA A JNZ ERRD ; CHYBA CTENI BLOKU CALL NUFIL ; CISLA OK ? JNZ ERRD RIB1: SHLD BNI POP B POP D RIB2: LDA BIN-1 ; TYP BLOKU CPI CAN ; NAZEV PASKY RZ CPI SOH ; JMENO SOUBORU RET ; <A> = TYP BLOKU NUFIL: LHLD BNI INX H ; CISLO BLOKU MOV A,C CMP H ; OK? RNZ MOV A,B CMP L ; CISLO SOUBORU ? RET ;============================================= ; CTENI BLOKU VYSTUP: B -CISLO BLOKU CTENE ; C -CISLO SOUBORU CTENE ; A =0 - CTENI OK ; A<>0 - CHYBA ;============================================= READBL: CALL @READU ; CTENI UVODU BLOKU ORA A JNZ KONBL1 ; PRO CHYBU LXI H,READNM MVI M,':' ; VYHLEDAVANI LDA FND ORA A JNZ KONBL0 MVI M,'*' MOV A,C DCR A STA DEBL ; DELKA BLOKU KONBL0: INX H MVI M,'"' CALL CTBLD ; CTENI BLOKU DAT KONBL1: PUSH PSW ; <A> = CHYBA LDA BIN-1 CPI 'B' JZ KONBL2 ; NENI STOP LDA FND ORA A CZ STOP KONBL2: CALL OKNO MVI E,15 MOV A,E STA FND ; NE FIND MOD CALL PNAME ; VYPIS JMENA CALL DBTV CALL OBNOV LXI H,BIN-1 SHLD ADRI POP PSW MOV C,D ; CISLO SOUBORU RET ; A=0 PRO OK ; A<>0 PRO CHYBU ;============================================== ; CTENI UVODU BLOKU ; VYSTUP: B - CISLO BLOKU CTENE ; C - DELKA BLOKU ; D - CISLO SOUBORU CTENE ; NEBO VIZ TEKP ;=========================================== @READU: CALL SCVPC CALL HLKMM RNZ ; PRO CHYBU (A=31) CALL SCVP CALL CTTV CPI 36H JZ ERREND ; KONEC PASKY MOV C,A ORA A MVI A,38H RZ ; PRO KONEC SOUBORU MOV A,C CPI UVOD RNZ ; NENI SYNCHRONIZACE CALL CTOZN RNZ ; PRO CHYBU CTENI ONACENI XRA A ; BLOKU (A=34) RET ; PRO CTOZN OK ;============================================== ; ZAPIS VYSTUPNI BUFFER ;============================================== WOB: LDA DEBL ; DELKA BLOKU MOV C,A INR C ; + TYP BLOKU WOB1: LHLD BNO INX H SHLD BNO MOV B,L ; CISLO BLOKU MOV D,H ; CISLO SOUBORU PUSH B CALL OKNO CALL DBTV1 ; CISLO BLOKU NA CO CALL OBNOV POP B ;============================================== ; ZAPIS BLOKU VSTUP: B -CISLO BLOKU ; C -DELKA BLOKU ; D -CISLO SOUBORU ; VYSTUP: B -CISLO BLOKU ;============================================== @WBLOK: CALL ZAKMM JNZ ERREND ; PRO NEPOVOLENY ZAPIS CALL ZAOZN CALL ZABLD CALL TEKP JNZ ERREND ; PRO CHYBU LDA BOUT-1 CPI EOT ; BYL POSLEDNI BLOK? JZ ZAKS ; ANO=KONEC CPI CAN JNZ NULBF ZAKS: CALL ZAKMM ; ZAPIS KONEC SOUBORU CALL ZAKBL ; EM ZAKS1: CALL ZADMM ; DMM ZA SOUBOREM CALL TEKP RNZ ZAKS2: CALL ZAKBL ; EM CALL ZAKMM ; NULUJ VYSTUPNI BUFFER NULBF: LXI H,BOUT-1 SHLD ADRO PUSH H MVI A,LENGHT INX H MVI M,0 DCR A JNZ $-4 POP H ; (BLOK TYP) ADR MOV A,M CPI 'B' CNZ STOP XRA A ; OK RET ;============================== ; CTI BYTE Z KAZETY ;============================== GET@: PUSH B PUSH D PUSH H LDA @IF1 ; BYL OTEVREN SOUBOR? ORA A CZ FIND ; KDYZ NE, TAK FIND GET0: CALL BUFEND XCHG ; DE = BEIND-1 LHLD ADRI CALL HILO MOV A,M SHLD ADRI JC GET1 ; <A>..BYTE CPI SUBS ; EOF? TEST JNZ GETEX ; - MOV C,A CALL KONEC? GET00: MOV A,C ; POSLEDNI BLOK JNZ GETEX ; - MOV B,L ; ADR ZNAKU SUBS CALL BUFEND ; HLEDEJ OD KONCE GET01: DCX H CMP M ; JE SUBS JNZ GET01 ; - MOV A,L SUB E ; STEJNY ADR? JNZ GET00 ; - NENI KONEC GET2: XRA A STA @IF1 ; UZAVRI SOUBOR CMA STA DEBL ; DELKA BLOKU 255 B CALL @SKIP ; ZA EM MVI A,SUBS STC ; CY=1 !!! DB 6 ; ZRUS ORA GETEX: ORA A POP H POP D POP B RET GET1: CALL KONEC? CNZ RIB JNZ GET0 ; KONEC SOUBORU JMP GET2 KONEC?: LDA BIN-1 ; POSLEDNI BLOK? CPI EOT RET ; ZY=1...ANO BUFEND: LDA DEBL ; VYPOCTI KONEC BLOKU MOV E,A ; V BUFFRU LXI H,BIN-1 MVI D,0 DAD D RET ;=============================== ; ZAPIS BYTE NA KAZETU ;=============================== PUT@: CALL PUTEND ; JE ^Z ? JC CLOSE0 PUSH B PUSH D PUSH H LDA @OF1 ; BYL OTEVREN? ORA A PUSH B CZ OPEN ; KDYZ NE, TAK OPEN POP B CALL BUFEND ; DE = BOUT-1 XCHG LHLD ADRO INX H MOV M,C SHLD ADRO CALL HILO CC WOB POP H POP D POP B MOV A,C ORA A ; NCY RET PUTEND: LDA BOUT-1 CPI 'B' RZ LDA MODE ANI 2 XRI 2 RZ MOV A,C CPI SUBS STC RZ ORA A RET ;=============================== ; ZKONTROLUJ JEDEN SOUBOR ;=============================== VRF1: CALL CRLF CALL SEARCH PUSH PSW ; <A> = CHYBA XRA A STA BTI ; CISLO SOUBORU CALL PDIR ; CISLO SOUBORU A HLAVICKA POP PSW ; NA CO VRF2: ORA A JZ VRF4 ; OK CPI 38H JNZ VRF3 ; BYLA EM LDA BIN-1 CPI CAN JZ STOP ; OK VRF3: PUSH B ; CISLO BLOKU MVI C,'#' CALL CO POP B VRF4: CALL NUFIL MVI C,'%' SHLD BNI ; ULOZ CISLA CNZ CO ; PRO CHYBU CISEL LDA BIN-1 CPI EOT JZ STOP ; KONEC SOUBORU CALL READBL JMP VRF2 ;=============================== ; OSETRENI CHYBY ;=============================== ERRD0: CALL STOP CALL CRLF LHLD BNI INX H XCHG ; CISLO SOUBORU MOV B,E ; A BLOKU NA CO CALL DBTCR CALL TXIMM DB CR,LF,7 DC 'CHYBA CTENI: I/D/N/A=ZNOVA ?' CALL ECHO XCHG ; CISLO SOUBORU A BLOKU CPI 'N' ; PRO "N" JZ RIB1 CPI 'I' JNZ ERRD1 LDA BTI INR A STA BTI ; ZVYS CISLO SOUBORU IF SM LDA TSM ORA A CZ CRLF ENDIF CALL SKIP JMP ERRD7 ERRD1: CPI 'D' JNZ ERRD3 LDA BTI DCR A ; SNIZ CISLO SOUBORU STA BTI CALL BACK CALL BACK JMP ERRD7 ERRD: CALL STOP ; PRO 1. CHYBU - "A" ERRD3: CALL BLOK4 ERRD7: XRA A STA FND ; FIND MOD CALL READBL ORA A JNZ ERRD7 CALL NUFIL ; NASEL ? JZ RIB1 ; ANO - OK JNC ERRD0 ; PREJEL JMP ERRD7 BLOK4: PUSH B ; ZPET O 4 BLOKY MVI B,4 BL41: CALL BLOK2 DCR B JNZ BL41 POP B RET CHECK: MOV C,B ; KONTROLNI SOUCET ? CALL RICH CMP C RZ RADR@: CALL RICH MOV L,A CALL RICH ; HL MOV H,A RET RICH: CALL RI ; CTENI & SUMA 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 ; ZAPIS & SUMA ADD B MOV B,A JMP PO MOVE: MOV A,M ; PRESUN PAMETI STAX D ; HL - ODKUD INX H ; DE - KAM INX D ; B - KOLIK DCR B JNZ MOVE RET ;======================================= ; CTENI TYPU ZAZNAMU ; VYSTUP: A = 00 - PRO EM ; FB - PRO DATOVY BLOK ; NEBO VIZ TEKP ;======================================= CTTV: PUSH B PUSH D LXI D,5000H ; TIME OUT JMP CTTV2 CTTV0: MVI A,5 DCR A JNZ $-1 MVI C,10H CTTV1: DCR C JNZ CTTV3 DCX D MOV A,D ORA E JNZ CTTV2 POP D POP B MVI A,38H JMP ERREND ; KONEC PRO TIME OUT CTTV2: LXI B,0110H CTTV3: IN KZDIN ANI 0F0H JZ CTTV1 RAL MOV A,B RAL MOV B,A JNC CTTV0 IN KZDIN ANI 30H ; TEST PRETIZENI MOTORKU MOV A,B POP D POP B RZ ; OK MVI A,36H ; PRO CHYBU RET ;============================================== ; CTENI OZNACENI BLOKU ; VYSTUP: B - CISLO BLOKU ; C - DELKA BLOKU ; D - CISLO SOUBORU ; NEBO NZ - CHYBA CTENI OZNACENI BLOKU ; A - CHYBA 2 ; NEBO VIZ TEKP ;============================================== CTOZN: PUSH H CALL CTIBYT MOV B,A ; CISLO BLOKU CALL CTIBYT MOV C,A ; DELKA BLOKU CALL CTIBYT MOV D,A ; CISLO SOUBORU CALL CTIBYT ; KONTROLNI SOUCET OZNACENI ADD D ; BLOKU ADD C ADD B ; MUSI BYT 0, JINAK CHYBA POP H MVI A,34H RNZ ; NAVRAT PRO CHYBNY SOUCET JMP TEKP ; PRO OK TEST KONCE PASKY ; POKUD NENI, JE VSE OK ;==================================== ; CTENI BLOKU DAT ; VSTUP: C - DELKA BLOKU ; VYSTUP: NZ - CHYBA CTENI DAT ; A - CHYBA 2 ; NEBO VIZ TEKP ;==================================== CTBLD: PUSH D PUSH B LXI D,BIN-1 ; DATA DO VSTUP. BUFFRU LXI H,0 ; PRO VYPOCET CRC CTBLD1: CALL CTIBYT STAX D ; ULOZENI DAT DO PAMETI INX D DCR C JNZ CTBLD1 CTBLD2: CALL CTIBYT ; NACTENI KONTROLNI SUMY CALL CTIBYT ; DO HL MOV A,H ORA L ; PRO OK MUSI BYT 0 MVI A,32H PUSH PSW ; "Z" A CHYBU LXI D,READNM+2 MVI B,NAMLE CTBLD3: CALL CTIBYT ; CTENI JMENA STAX D ; NA CO INX D DCR B JNZ CTBLD3 XCHG MVI M,'"' INX H MVI M,' ' POP PSW POP B POP D RNZ ; PRO CHYBU KONTROL. SOUCTU JMP TEKP ; PRO OK KONTROLA KONCE ; PASKY ;==================================== ; NACTENI 1 BYTE Z PASKY ; VSTUP: HL - PREDCHOZI CRC ; VYSTUP: A - PRECTENY BYTE ; HL - CRC ;==================================== CTIBYT: PUSH B MVI B,01 ; POCITADLO BITU CTIBY1: IN KZDIN ANI 0F0H JZ CTIBY1 IN KZDIN ANI 0F0H JZ CTIBY1 ; PRO RUSENI RAL PUSH PSW ; VYPOCET CRC SBB A DAD H ; PREDCHOZI CRC ADC A ORA A ; UPRAVA PRO Z-80 MVI A,7 JPE $+5 ; NA POP PSW XRA L MOV L,A POP PSW ; KONEC VYPOCTU CRC MOV A,B RAL ; CYKLUS PRO 8 BITU MOV B,A JNC CTIBY1 POP B RET ;==================================== ; ZAPIS BLOKU DAT = "C" BYTU DAT, ; 2 BYTY CRC, 11 BYTU JMENO, ; 2 BYTY ODDELOVACI <55H> ; VSTUP: C - DELKA DAT ;==================================== ZABLD: PUSH B LXI D,BOUT-1 ; DATA Z VYSTUP. BUFFERU LXI H,0 ; PRO VYPOCET CRC ZABLD1: LDAX D CALL PISBYT ; ZAPIS VLASTNICH DAT INX D DCR C JNZ ZABLD1 MOV A,H CALL PISBYT ; ZAPIS CRC ZNAKU MOV A,H CALL PISBYT LXI D,WRNM MVI B,NAMLE ; Z WRNM ZABLD2: LDAX D CALL PISBYT ; ZAPIS JMENA INX D DCR B JNZ ZABLD2 POP B PISODD: MVI A,55H CALL PISBYT ; ZAPIS 16 BITU ODDELOVACICH ;====================================== ; ZAPIS 1 BYTE NA PASKU ; VSTUP: A - BYTE DAT ; HL - PREDCHOZI CRC ; VYSTUP: HL - CRC ;====================================== PISBYT: PUSH B MVI C,80H ; POCITADLO (MASKA) BITU MOV B,A ; DATA DO REG.B ANA C ; VYBER BITU ADI 0FFH ; BIT DO CARRY MVI A,KONST1 ; A=5CH RAR ; A=X0101110 ; (X-BIT DAT, SNIRENA ; CITLIVOST, D.P.=H, ; ZAZNAM, VPRED) OUT KZDOUT ; VYSTUP DAT PUSH PSW XRI 20H ; A=X0001110 OUT KZDOUT ; DATA PLATNA RAL ; VYPOCET CRC SBB A DAD H ADC A ORA A ; UPRAVA PRO Z-80 MVI A,7 JPE $+5 XRA L MOV L,A MVI A,2 ; CEKACI SMICKA DCR A ; NA PROUDLOZENI JNZ $-1 ; PLATNOSTI DAT !!! POP PSW ; KONEC VYP.CRC OUT KZDOUT ; VRACENI SIGN.D.P. MVI A,3+(2*PRODL/15) DCR A JNZ $-1 MOV A,C RRC ; NA DALSI BIT MOV C,A MOV A,B JNC PISBYT+4 POP B RET ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ; INSTALACE TERMINALU SM 7202 ARAM EQU $ IF ARAM GT EPROM+800H .PRINTX 'SPATNA TABULKA SM 7202' ERRRAM ORA ELSE IF HORE BALAST: DS (EPROM+800H)-ARAM ELSE ORG EPROM+800H ENDIF ENDIF SERIO: JMP SINIT JMP SERI@ JMP SCO JMP SMST@ ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ; JE EXTERNI JMENO '"' ? EXT?: LDA EXTEXT CPI '"' RET ; ANALYZA ODDELOVACU @ANAL: CPI ' ' RZ ANAL: CPI CR RZ ORA A RET JMENO?: CALL VYPISH ; ANO / NE OK?: CALL TXIMM DC '--(A/N)?' CALL ECHOCR CPI 'A' RZ CPI 'Y' RET ;======================================== ; 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 ; VYPIS TEXT TXNAM: CALL TXIMM DB CR,LF DC ' NAZEV:' RET BREAK: CALL CSTS RZ CALL CI JMP ETX? ; CTI A VYPIS ZNAK ECHO: CALL CINCR RZ ETX?: CPI ETX RNZ CALL STOP CALL NAF ; NULUJ FLAGY JMP NEXT ; BREAK=>C ECHOCR: CALL ECHO PUSH PSW CALL CRLF POP PSW RET NAF: XRA A ; NASTAVENI FLEGU STA @IF1 STA @OF1 STA JEVER CMA ; = LENGHT STA DEBL RET ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ; ZASTAV A OHLAS CHYBU ERSTP: MVI A,32H ; CHYBA SOUCTU ERREND: PUSH PSW CALL CRLF CALL TXIMM DC 'CHYBA - ' POP PSW ANI 0FH ; TYP CHYBY MOV E,A CALL STOP MVI D,0 LXI H,TXERR DAD D CALL @TEXT JMP NEXT @TEXT: MOV E,M INX H MOV D,M XCHG MOV D,M INX H JMP TEXT ;==================================== ; ZAPIS OZNACENI BLOKU - 0FFH, CISLO ; A DELKA BLOKU, CISLO SOUBORU, ; KONTROLNI SOUCET ; VSTUP: B - CISLO BLOKU ; C - DELKA BLOKU ; D - CISLO SOUBORU ;==================================== ZAOZN: MVI A,UVOD ; UVOD BLOKU (0FBH) CALL PISBYT CALL ZAOZN1 MOV A,B ; CISLO BLOKU CALL PISBYT MOV A,C ; DELKA BLOKU CALL PISBYT MOV A,D CALL PISBYT ; CISLO SOUBORU ADD C ADD B CMA INR A CALL PISBYT ; KONTROLNI SOUCET ZAOZN1: MVI A,32 DCR A JNZ $-1 RET ;==================================== ; ZAPIS KONCOVYCH BLOKU (EM, FM) ; - 16 KRAT PISE <00H> ; VYSTUP: VIZ TEKP ;==================================== ZAKBL: PUSH B PUSH H MVI B,16 ZAKB1: XRA A CALL PISBYT DCR B JNZ ZAKB1 POP H POP B ;==================================== ; TEST KONCE PASKY ; VYSTUP: NZ - MOTOREK PRETIZEN ; A - CHYBA 1 ;==================================== TEKP: CALL BREAK IN KZDIN ANI 30H ; TEST PRETIZENI MVI A,36H ; OBOU MOTORKU RNZ ; PRO CHYBU - NENALEZEN KONEC XRA A ; SOUBORU RET ; PRO OK - PASKA STOJI ;==================================== ; PREVINUTI KAZETY ; VSTUP: D=1 - NA ZACATEK ; D-0 - NA KONEC ; VYSTUP: VIZ TEKP ;==================================== REW3: PUSH D MVI A,KPREVZ DCR D ; URCENI SMERU PREMOTANI JZ REW4 MVI A,KSCRVP REW4: OUT KZDOUT POP D REW7: CALL TEKP JZ REW7 ; DOKUD NEDA PRETIZENI ! REWIND: PUSH D MVI A,KSCVZC DCR D ; URCENI SMERU JZ REW5 MVI A,KSCVPC REW5: OUT KZDOUT POP D PUSH B LXI B,12000D REW1: DCX B ; CEKACI SMICKA PRO MOV A,B ; PREVIJENI ORA C JNZ REW1 POP B CALL TEKP JZ REW3 ; OPAKUJE, DOKUD NADA XRA A ; PRETIZENI ;=================================== ; STOP POHYBU ;=================================== STOP: PUSH PSW MVI A,KSTPCT OUT KZDOUT POP PSW RET ;================================== ; INICIALIZACE MHB 8255 ;================================== INITIO: MVI A,SETPPI OUT KZDCTR MVI A,SETOUT OUT KZDOUT RET ;================================== ; START CTENI VPRED ;================================== SCVP: MVI A,KSCVP OUT KZDOUT RET ;================================== ; START CTENI VPRED (SNIZ.CITL.) ;================================== SCVPC: MVI A,KSCVPC OUT KZDOUT RET ;================================== ; START CTENI VZAD (SNIZ.CITL.) ;================================== SCVZC: MVI A,KSCVZC OUT KZDOUT RET ;================================== ; START CTENI RYCHLE VPRED ;================================== SCRVP: MVI A,KSCRVP OUT KZDOUT RET ;================================== ; START CTENI RYCHLE VZAD ;================================== SCRVZ: MVI A,KSCRVZ OUT KZDOUT RET ;======================================= ; START ZAZNAMU VPRED ; VYSTUP: NZ - ZAZNAM NENI POVOLEN ; A - CHYBA 0 ;======================================= SZAVP: MVI A,KSZAVP OUT KZDOUT IN KZDIN ANI 08H MVI A,30H RET ;=================================== ; VYHLEDANI ZACATKU PASKY (ZN. BOT) ; VYSTUP: VIZ TEKP ;=================================== @BOT: CALL BOT JMP STOP BOT: MVI D,1 ; PREVINUTI NA ZACATEK CALL REWIND CALL SCVPC CALL HLDMM CALL HLDMM JNZ ERREND PUSH B LXI B,500D CALL HLBOT1 POP B JMP HLDMM ;=============================== ; SKOK O 1 SOUBOR VPRED ; VYSTUP: VIZ TEKP ;=============================== @SKIP: CALL SKIP JMP STOP SKIP: CALL SCVPC ; MUSI STAT PRED (NEBO V) CALL CTTV ; SOUBOREM CALL SCRVP JMP HLDMM ; NASTAVI NA KONEC SOUBORU ;=============================== ; SKOK O 1 SOUBOR VZAD ; VYSTUP: VIZ TEKP ;=============================== @BACK: CALL BACK JMP STOP BACK: CALL SCVZC CALL CTTV ; VYHLED.DAT VZAD CALL SCRVZ ; RYCHLE VZAD ;============================== ; HLEDANI DLOUHE MEZIBL. MEZERY ; VYSTUP: VIZ TEKP ;============================== HLDMM: PUSH H ; 853 TAKTU ??? LXI H,2500H ; MA BYT 3840 ??? CALL HLMM2 JNZ HLDMM+1 JMP HLMM1 ;============================== ; ZAPIS KRATKE MEZIBL. MEZERY ; VYSTUP: VIZ SZAVP, TEKP ;============================== ZAKMM: PUSH B LXI B,450H ; MA BYT 500=500 TAKTU ??? ZAMM2: CALL SZAVP JNZ ZAMM3 ; PRO NEPOVOLENY ZAZNAM ZAMM1: MVI A,11+(2*PRODL/15) ; CEKACI SMICKA DCR A ; MEZERY JNZ $-1 NOP DCX B MOV A,C ORA B JNZ ZAMM1 ZAMM3: POP B RNZ ; PRO NEPOVOLENY ZAZNAM JMP TEKP ;============================== ; ZAPIS DLOUHE MEZIBL. MEZERY ; VYSTUP: VIZ SZAVP, TEKP ;============================== ZADMM: PUSH B LXI B,2000H ; MA BYT 5200=5200 TAKTU ??? JMP ZAMM2 ;============================== ; SKOK O 1 BLOK VPRED ; VYSTUP: VIZ TEKP ;============================== @BLOK: CALL BLOK1 JMP STOP BLOK1: CALL SCVPC JMP BLOK2+3 ;============================== ; SKOK O 1 BLOK VZAD ; VYSTUP: VIZ TEKP ;============================== BLOK2: CALL SCVZC CALL CTTV ;============================== ; HLEDANI KRATKE MEZIBL.MEZERY ; VYSTUP: VIZ TEKP ;============================== HLKMM: PUSH H ; 125 TAKTU ??? LXI H,200H ; MA BYT 550 ??? CALL HLMM2 JNZ HLKMM+1 ; PRO NAVRAT PRES RNZ HLMM1: POP H ; PRO DALSI POKUS JMP TEKP HLMM2: IN KZDIN ; HLEDANI MEZERY ANI 0C0H ; V ZADANE DELCE RNZ ; PRO SPATNE - BYLY DCX H ; PRETECENY DATA ORA H ORA L JNZ HLMM2 RET ; PRO OK - NACTEN ZADANY ; POCET "NEDAT" ;============================== ; VYHLEDANI KONCE VSECH ZAZNAMU ; VYSTUP: VIZ TEKP ;============================== EOR: XRA A ; = EOR JMP EOR0 @EOR: MOV C,A ; C=0/"D" PRO EOR?DIR LDA JEVER ORA C ; A="D" OR JEVER EOR0: PUSH PSW ; A<>0 - DIR CNZ BOT EOR2: CALL SEARCH ; CTENI BLOKU SE JMENEM JZ EOR3 ; CTENA EM POP PSW PUSH PSW JZ EOR4 ; NENI DIR CALL PDIR MOV A,C ORA A JZ EOR41 ; PRO NAZEV PASKY POP PSW PUSH PSW CPI 'D' JNZ EOR5 ; PRO VERIFIKACI EOR41: CALL CRLF EOR4: CALL SKIP JMP EOR2 EOR5: XRA A ; NENI CHYBA STA BNI ; CISLO BLOKU CALL VRF2 CALL CRLF MVI C,'-' CALL CO CALL DBTV1 ; CISLO BLOKU CALL CRLF JMP EOR2 EOR3: POP PSW EOR1: CALL SCVZC CALL HLDMM CALL HLKMM JNZ ERREND JMP STOP ;============================== ; FORMATOVANI (MAZANI) KAZETY ; VYSTUP: VIZ TEKP ;============================== FORM: MVI D,1 ; PREVIJENI VZAD, TEDY CALL REWIND ; PREVINUTI NA ZACATEK CALL SZAVP JNZ ERREND ; PRO ZAPIS NENI POVOLEN PUSH B PUSH H LXI B,12000D; ZAPIS DAT (1/10 KAZETY) MVI A,55H FORM1: CALL PISBYT DCX B MOV A,B ORA C JNZ FORM1 CALL SCRVZ CALL HLDMM CALL HLDMM ; PREVINUTI NA ZACATEK CALL SCVPC CALL HLBOT ; VYHLADANI 6000 BYTE DAT POP H POP B STA NAMBUF ; A=0 (<>"@") CALL ZAKS1 ; ZAPIS DMM, EM A KMM JNZ ERREND JMP EOR1 ; NASTAVENI PRED EM HLBOT: LXI B,1100D HLBOT1: CALL CTTV DCX B MOV A,B ORA C JNZ HLBOT1 RET ;----------------------------------- ; TEXTY CHYBOVYCH HLASENI TXERR: DW TXER0 DW TXER2 DW TXER4 DW TXER6 DW TXER8 DW TXERA DW TXERC TXER0: DB 19 DC 'ZAZNAM NENI POVOLEN' TXER2: DB 15 DC 'CHYBA CTENI DAT' TXER4: DB 20 DC 'CHYBA OZNACENI BLOKU' TXER6: DB 11 DC 'KONEC PASKY' TXER8: DB 18 DC 'NENI KONEC SOUBORU' TXERA: DB 19 DC 'NENI BINARNI FORMAT' TXERC: DB 17 DC 'SOUBOR NEEXISTUJE' ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ; OBSLUHA TERMINALU SM 7202 ; INICIALIZACE SYSTEMU ; -------------------- SINIT: LXI H,SERIO+3 LXI D,CI@0 MVI B,9 CALL MOVE XRA A STA SEKV ; NENI ESC. SEKVENCE MVI A,9 ; TERM.+STOP MGF. SINI1: OUT UMODE OUT URES MVI A,PRENOS ; NASTAVENI PRENOSU OUT USTAT IN UDATA ; NEPLATNA DATA RET ; SERIOVY VYSTUP ; -------------- SCO: LDA SEKV ORA A JNZ SCO7 ; JE ESC. SEKVENCE MOV A,C ; ANALYZA ZNAKU CPI ESC JZ SCO6 ; ZACINA ESC. SEKV. CPI HOME JZ SCO1 CPI LF JZ SCO3 CPI VT JZ SCO3 CPI CR JZ SCO2 CPI HT JZ SCO4 CPI BS JNZ SCO5 LDA COLUM ; "BS" ORA A JZ SERO@ DCR A JMP SCO21 SCO1: XRA A ; "HOME" STA LINE SCO2: XRA A ; "CR" SCO21: STA COLUM JMP SERO@ SCO3: LDA LINE ; "LF" A "VT" CPI TLINE ; POCET RADKU JZ SERO@ INR A STA LINE JMP SERO@ SCO4: PUSH B ; "HT" LDA COLUM SCO41: INR A CPI TCOLUM ; POCET SLOUPCU JZ SCO42 MOV B,A ANI 7 MOV A,B JNZ SCO41 JMP SCO43 ; TABELACNI POZICE SCO42: DCR A ; POSLEDNI SLOUPEC SCO43: POP B JMP SCO21 SCO5: MOV A,C CPI 20H JNC SERO@ ; PRO RIDICI ZNAK LDA COLUM CPI TCOLUM-1 ; POCET SLOUPCU JZ SERO@ INR A JMP SCO21 SCO6: STA SEKV ; NASTAVENI ESC. SEKV. JMP SERO@ SCO7: PUSH H ; ESC. SEKVENCE LDA SEKV RLC JC SCO8 ; PRO 3.BYTE ORI 80H LXI H,LINE JMP SCO9 SCO8: XRA A ; KONEC SEKVENCE LXI H,COLUM SCO9: STA SEKV MOV A,C SUI 20H JC SCO10 ; NENI ADRESACE KURZORU MOV M,A SCO10: POP H JMP SERO@ @E@KOS EQU $ IF HORE .DEPHASE ENDIF ; ;********************************************* ; 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 ; ;****************************** ;<< EXTERNE 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 PRER: DS 1 ; UROVEN PRERUSENI ; ; PROMENNE PRO OPERACNI SYSTEM ; CUR@: DS 1 KEY: DS 1 CAS: DS 1 WNDP: DS 6 ; PARAMETRY 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 ; ;"""""""""""""""""""""""""""""""""" ; PROMENNE PRO O.S. FNAME: DS 12 ; JMENO SOUBORU BNO: DS 1 ; CISLO BLOKU BTO: DS 1 ; CISLO SOUBORU BNI: DS 1 ; BTI: DS 1 ; INPUT ADRO: DS 2 ; ADR OUTPUT ADRI: DS 2 ; ADR INPUT FND: DS 1 ; FIND/READ ;********************************** ; I/O BUFFER PRO KOS ;********************************** DS 1 ; TYP BLOKU BOUT: BIN: DS LENGHT ; DATA BIEND EQU $ BOEND EQU $ WRNM: DS 11 ; JMENO SOUBORU READNM: DS 22 ; BUFFER PRO ZOBRAZENI POSICE: DS 2 ; ZOBRAZENI BLOKU MOD@: DS 1 ; TSP: DS 1 ; PRO SP-210 JEDE?: DS 1 ; - " - ; DEBL: DS 1 ; DELKA BLOKU JEVER: DS 1 ; 0 - NENI VERIFIKACE KAM?: DS 1 ; HLEDEJ 0/X - ZPET/VPRED ; SEKV: DS 1 ; 0 - NENI ESCAPE SEKV. TSM: DS 1 ; 0 - JE TERMINAL ; .DEPHASE ; 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