Ú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
.LIST ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TITLE FIRMWARE SAPI-1 KOS V5.0A - K10/SP210 ; 9.2.1988 (P.P.) ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ; ASEG ; ; *** DEFINOVANI DATOVEHO PROSTORU * ; @R@ EQU 4000H ; ZACATEK SYSTEMOVE RAM (1K) RSTN EQU 0CFH EP3 EQU 1800H ; USER EPROM SYSTEM ; ; MONIT EQU 0 ; ROM VERZE ZPS-2 ERAM EQU 0000 EPROM EQU 0C00H ; O.S. ; ; ; * MONITOR ENTRY * ; CI EQU 103H RI EQU 106H CO EQU 109H PO EQU 10CH CSTS EQU 112H CINCR EQU 13FH IODEF EQU 11EH SPCL EQU 121H EXPR EQU 127H DBYT EQU 133H DADR EQU 130H CRLF EQU 124H HILO EQU 136H NEXT EQU 139H TEXT EQU 142H IOCHK EQU 115H SPACE EQU 13CH IOSET EQU 118H ERROR EQU 12AH ASHEX EQU 12DH HXASC EQU 148H TXIMM EQU 151H WND@ EQU 154H RNAME EQU 15AH INTER EQU 15DH SERI@ EQU 17BH SERO@ EQU 17EH LENGHT EQU 255 ; DELKA BLOKU NAMLE EQU 11 ; DELKA JMENA COMLE EQU 64 ; DELKA KOMENTARE ;------------------------------------------- CR EQU 0DH ; KONSTANTY LF EQU 0AH DEL EQU 7FH ; DELETE ETX EQU 03H HT EQU 9 ; TAB PREAM EQU 10H ; PREAMBLE/POSTAMBLE SUBS EQU 1AH ; END FLAG HOME EQU 1DH ERS EQU 1EH ; SPREC EQU 0DFH ;KONSTANTY RIZENI SPSTART EQU 0FBH ;SP-210 SPSTOP EQU 7FH SPPAUS EQU 0EFH SPREWZ EQU 0BFH SPREWK EQU 0F7H SPRS EQU 8BH ;RIDICI SLOVO 8255 ; SER. I/O URES EQU 13H UDATA EQU 12H USTAT EQU 11H UMODE EQU 10H ;PARAREL. I/O SPC EQU 37H SPIN EQU 35H SPOUT EQU 34H ; BLOKOVA NAVESTI EOL EQU 0 ; "END OF RECORDS" SOH EQU 01H ; "START OF HEADER" EOT EQU 04H ; "END OF TEXT" CAN EQU ':' ; JMENO PASKY ; 'A' ; DATOVY (ASCII) BLOK ; 'B' ; BINARNI BLOK ; ;****************************************** ASEG ORG EPROM ;START ;****************************************** ; ;==================================== ; T A B U L K A S L U Z E B K O S ;==================================== ; JMP MICOS 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 MOTA ; 8 JMP PUT@ ; 9 JMP STOP ; 10 ; MAXSL EQU $-EPROM ; CAS: DC 'PERINA' ; ;==================================== ; 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 V5.0 ' DC '(C) TESLA DIZ 1987' LXI H,KOS@@ SHLD KOS@+1 MVI A,SPRS ; RIDICI SLOVO PRO OUT SPC ; SP-210 XRA A STA @IF1 ; FIND FLAG STA @OF1 STA TSP ; NASTAV SP-210 LXI H,ZAC ; VYPLN IODEF LXI D,R1LOC MVI B,12 CALL MOVE LDA EP3 ; USER SYSTEM ? CPI 0C3H CZ EP3 + 3 ; START JMP STOP ; ;==================================== ; 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 ; ;==================================== ; VUHODNOCENI POVELU OSLUHY ;==================================== ; MICOS: CALL STOP XRA A STA EXTEXT ; 0..NENI MVI C,'_' CALL TTSP JNZ $+5 MVI C,':' CALL CO CALL ECHOCR CPI 'D' JZ DIR ; DIRECTORY CPI 'I' JZ INIT ; INICIALIZACE PASKY CPI 'O' JZ OPEN ; OPEN OUTPUT CPI 'C' ; CLOSE UOTPUT JZ CLOSE CPI 'F' ; FIND INPUT JZ FIND CPI 'S' JZ SAVE CPI 'L' ; LOAD JZ LOAD CPI 'K' JZ KONEC CPI 'X' JZ EXCH CPI '>' JZ MOTA CPI '<' JZ REWIZ CPI 'R' JZ REWIND CPI 'M' ; PREVIJENI RNZ ; JINY POVEL ; ;************************************ ; REALIZACE POVELU KOS-I ;************************************ ; ;==================================== ; PREVIN PASKU ;==================================== ; MOTA: CALL TTSP ; TEST SP-210 JZ REWIK ; PRO SP-210 MVI A,28H ; SEPNUTI RELE MGF. OUT UMODE JMP MOTA1 REWIK: MVI A,SPREWK ; PREVINUTI NA KONEC CALL SPPULS MOTA1: CALL DONE STOP: CALL TTSP ; TEST SP-210 MVI A,SPSTOP STOP1: CZ SPPULS ; PRO SP-210 MVI A,10H OUT UMODE STA JEDE? RET ; ;==================================== ; BINARNI SOUBOR NASTAV ;==================================== ; BINAR: MVI A,30H CALL GAPO ; START ZAPISU CALL BTIM8 MVI A,'B' STA BOUT-1 RET ; ;==================================== ; ZAPIS KONEC PASKY ;==================================== KONEC: CALL OK? ; ANO ? RNZ CALL RECOR XRA A JMP WOBW ; 00.. TYP ; ;==================================== ; DIRECTORY: ;==================================== ; DIR: CALL PLAY INR A DIR0: CZ VYPISH XRA A DIR1: XCHG SHLD BNI ; CISLO SOUBORU.. MVI C,'%' ; CHYBA SEKVENCE CNZ CO CALL SEARCH ; HLAVICKA JZ DIR0 ORA A JNZ DIR1A CALL STOP JMP NEXT DIR1A: CPI EOT JNZ DIR2 CALL DBTCR DIR2: CALL NUFIL JMP DIR1 ; ;==================================== ; OPEN: OTEVRI NOVY SOUBOR PRO ZAPIS ;==================================== ; OPEN: CALL IOPO ; NASTAV IOBYT CALL NPO RM ; PO=SYSTEM.. MVI C,2 JNZ CCPM ; USER=2 CALL RNAME CPI '@' ; APPEND? JZ OPE5 CPI '.' PUSH PSW CZ REWIND POP PSW LDA @OF1 ; PODRUHE? ORA A PUSH PSW ; ===================== CNZ CLOSE ; UZAVRI A PRIPOJ DALSI POP PSW ; DALSI SOUBOR JNZ OPE4 ; ===================== PUSH H CALL PLAY OPE1: CALL SEARCH ; KONEC ZAZNAMU ? CZ VYPISH ; SOH MOV A,D STA BTO ; CISLO SOUBORU LDA BOUT-1 ; ANO CPI EOT JZ OPE3 ; DALSI BLOK CPI CAN OPE3: CZ OK? JNZ OPE1 ; DALSI BLOK POP H DB 3EH OPE4: XRA A ; APPEND PUSH H LHLD BNO ; CISLO SOUBORU INR H MVI L,0 SHLD BNO ; CISLO BLOKU A SOUBORU ORA A ; APPEND? CNZ RECOR MVI A,SOH STA @OF1 POP H JMP WRNAM OPE5: MVI A,8 ; NASTAV PO=1 CALL IOPO1 JMP OPE4 ; ;==================================== ; FIND: OTEVRI SOUBOR PRO CTENI ;==================================== ; FIND: CALL IORI CALL NRI RM ; SYSTEM RI MVI C,1 JNZ CCPM ; USER 2 CALL RNAME CPI '.' PUSH PSW CZ REWIND POP PSW MVI B,NAMLE LXI D,FNAME CALL MOVE CALL EXT? CNZ PLAY CALL CMPNM MVI A,1 MOV E,A XCHG SHLD BNI ; CISLO SOUBORU STA @IF1 MVI A,LOW(BIEND-1) STA ADRI RET ; ;==================================== ; LOAD BINARNI SOUBOR ;==================================== ; LOAD: CALL FIND ; OTEVRI SOUBOR LO1: CALL RICH ORA A ; BLANK? JZ LO1 SUI '<' JNZ ERSTP ; NENI BINARNI FORMAT MOV B,A ; KONTROLNI SOUCET CALL RADR@ SHLD EADR ; KONCOVA ADRESA XCHG CALL RADR@ SHLD SADR ; START. ADRESA CALL RICH CPI '>' JNZ ERSTP ; NENI BINAR 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 JMP STOP CLST2: XRA A STA @IF2 RET ; ;==================================== ; SAVE 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 ; ;==================================== ; SLOSE: UZAVRI VSTUPNI SOUBOR ;==================================== ; CLOSE: CALL NPO RM MVI C,3 JNZ CCPM CLOSE0: LDA @OF1 ; NENI OTEVREN ORA A RZ PUSH H LHLD ADRO INX H MVI M,SUBS ; ZAPIS POSLEDNI ZNAK MVI A,EOT ; UZAVRI BLOK CALL WOBW XRA A STA @OF1 ; CLOSE POP H JMP STOP ; ;==================================== ; INICIALIZUJ NOVOU KAZETU ;==================================== ; INIT: CALL TTSP JNZ INIT2 ; PRO K-10 CALL REWIND CALL RECPUL MVI B,4 INIT1: MVI A,250 CALL TIME ; CEKANI 4*2.5 SEC. DCR B JNZ INIT1 JMP INIT3 INIT2: MVI A,28H ; SEPNUTI RELE MGF. OUT UMODE CALL TXIMM DC ' PREVIN A ZAPNI ' CALL RECOR INIT3: CALL XSTOP CALL TXIMM DC ' ZADEJ' LXI H,0 ;0..CISLO SOUBORU SHLD BNO CALL RNAME MVI A,CAN ; ; ZAPIS JMENO SOUBORU ; WRNAM: PUSH PSW PUSH H ; ADRESA JMENA CALL NULBF 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 ANI 3FH ; KOD PRO AND-1 JNZ $+5 MVI A,' ' ; BLANK STAX D INX H INX D DCR B JNZ WRN1 POP PSW CALL WOBW MVI M,'A' ; TYP DATA JMP CRLF ; ;==================================== ; PREPNUTI K-10 / SP-210 ;==================================== ; EXCH: LDA TSP XRI 0FFH STA TSP RET ; ;==================================== ; PREVINUTI NA ZACATEK - RUCNI STOP ;==================================== ; REWIZ: CALL TTSP RNZ ; NENI SP-210 MVI A,SPREWZ JMP REWIK+2 ; ;==================================== ; PREVINUTI NA ZACATEK - AUTOMATICKY ;==================================== ; REWIND: CALL TTSP RNZ ; NENI SP-210 MVI A,SPREWZ CALL SPPULS MVI A,200 CALL TIME ; CEKANI 2 SEC. REWI1: CALL BREAK@ IN SPIN ; STAV SP-210 CPI 0F7H ; TEST STOPU JNZ REWI1 ; JESTLI NENI STOP JMP STOP ; ;==================================== ; TEST NA JMENO ; CALL PHDR CMPNM: CALL SEARCH ; POROVNEJ JMENO JNZ CMPNM ; NENI HLAVICKA CPI CAN JZ CMPNM-3 ; VYPIS VOLUME JMENO ; PRO ZAPIS CPF10: LXI B,FNAME MVI E,NAMLE CALL TESTJM JNZ CMPNM ; DALSI JMENO RET ; 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 D LXI H,BIN-1 CALL PHDR VIP1: POP D XRA A RET ; JMENO?: CALL VYPISH ; ANO / NE OK?: CALL TXIMM DC '--(A/N)?' CALL ECHOCR CPI 'A' ; PISMENA RZ CPI 'Y' RET ; ; TISK HLAVICKY SOUBORU ;---------------------- PHDR: CALL CRLF INX H MVI D,COMLE JMP TEXT ; ; "OKNA" V MIKOSU PRO IDEVTIFIKACI BLOKU PNAME: LXI H,READNM ; VYPIS "B"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 B JNZ PNAM1 RET DBTCR: CALL CRLF DBTV: MOV A,D CALL DBYT DBTV1: CALL SPACE MOV A,E 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 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 D RET ; JE EXTERNI JMENO '"' ? EXT?: LDA EXTEXT CPI '"' RET ; ; ANALIZA ODDELOVACU ; @ANAL: CPI 20H RZ ANAL: CPI CR RZ ORA A 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 TEXTU ; TXNAM: CALL TXIMM DB CR,LF DC ' NAZEV:' RET BREAK: BREAK@: CALL CSTS RZ CALL CI JMP ETX? ; CTI A VYPIS ZNAK ; ECHO: CALL CINCR RZ ETX?: CPI ETX RNZ CALL DIRSTP ; CLOSE & STOP JMP NEXT ; BREAK=>C ; ZOBRAZ "CTENI" PLAY: CALL TTSP JZ START ; PRO SP-210 CALL TXIMM DC ' CTENI ' RECO: CALL DONE ; START: MVI A,38H ; NASTAVENI MGF. GAPO: MOV C,A LDA JEDE? ORA A RZ ; MGF JEDE CALL TTSP MOV A,C JNZ STAR2 ; PRO K-10 PUSH PSW ; RIDICI SLOVO ANI 0FH PUSH PSW CNZ SPGO ; START CTENI POP PSW CZ RECPUL ; START ZAPISU POP PSW ; 38 / 18 STAR2: OUT UMODE OUT URES ; RESET UARTU MVI A,1FH OUT USTAT ; NASTAVENI PRENOSU IN UDATA ; NEPLATNA DATA XRA A STA JEDE? RET ; ; TEST PRIPOJENI SP-210 TTSP: LDA TSP ORA A RET ; Z=1 PRO SP-210 ; GENEROVANI RIDICIHO PULSU NA SP-210 ; VSTUP: A - RIDICI SLOVO RECPUL: CALL T10MS MVI A,SPREC OUT SPOUT ; ZAZNAM SPGO: CALL T10MS MVI A,SPSTART ; SPUSTENI SPPULS: OUT SPOUT MVI A,21 CALL TIME ; PULS DELKY 210 MS MVI A,0FFH OUT SPOUT ; KONEC SIGNALU RET ; ZOBRAZ "ZAPIS!" RECOR: CALL TTSP RZ ; PRO SP-210 NIC CALL TXIMM DB CR,LF DC ' ZAPIS!' ; DONE: CALL TXIMM DC ' HOTOVO ?' ECHOCR: CALL ECHO PUSH PSW CALL CRLF POP PSW RET ; ; CASOVE PODPROGRAMY ; BTIM8: LDA CAS MOV B,A ; * 10 MS MOV A,M ; 'B' ? CPI 'B' MOV A,B JNZ TIME RRC RRC RRC ; /8 JMP TIME T10MS: MVI A,1 ; PRO 10 MS TIME: PUSH B ; ACC*10MS (TCY=500NS) TIME1: LXI B,800+255 TIME2: DCX B ; ( 5) INR B ; ( 5) DCR B ; ( 5) JNZ TIME2 ; (10) 10MS LOOP @ 12.5US DCR A JNZ TIME1 POP B RET ; ; PRESUN PAMETI ; MOVE: MOV A,M STAX D INX H INX D DCR B JNZ MOVE RET ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ; OPERACE SE SOUBORY ;==================================== ; NAJDI BLOK NA PASCE ;==================================== ; SEARCH: XRA A SEAR1: MVI C,'#' ; CHYBA CC CO CALL ZVYS CALL READF JC SEAR1 ; PRO CHYBU MOV A,M ORA A JZ NEXT ; PRO KONEC SOUBORU JMP RIB2 ; ; ZVIS CISLO BLOKU ; ZVYS: LHLD BNI INX H SHLD BNI RET ;==================================== ; CTI VSTUPNI BUFFER ;==================================== ; RIB: PUSH D PUSH B CALL ZVYS CALL READ JC ERRD ; CHYBA CALL NUFIL ; CISLO O.K. ? JNZ ERRD ; CHYBA BLOKU RIB1: POP B POP D LXI H,BIN-1 MOV A,M RIB2: CPI CAN ; NAZEV PASKY RZ CPI SOH ; JMENO SOUBORU RET ; (HL)..TYP BLOKU ; ; CHYBA C T E N I ; ERRD: CALL XSTOP CALL TTSP ; PRO SP-210 1. OPRAVA MVI B,100 JZ ERR31 ; AUTOMATICKY "A" ERRD0: CALL STOP ; ZPRACUJ CHYBU CTENI LHLD BNI XCHG CALL DBTCR ; POZADOVANE CISLO CALL TXIMM DB CR,LF DC 'CHYBA CTENI: I/D/N/A=ZNOVA ?' CALL ECHO ; POKRACUJ CPI 'N' JZ ERRD8 CPI 'I' JNZ ERRD1 LDA BTI INR A STA BTI ; ZVIS CISLO SOUBORU JMP ERRD7 ERRD1: CPI 'D' JNZ ERRD3 LDA BTI DCR A STA BTI ERRD2: MVI B,200 ; PRO "D" CALL VRAT ; NAVRAT O 2 SEC. CALL READF CALL NUFIL JNC ERRD2 ; JESTE VRACEJ JMP ERRD7 ERRD3: MVI B,50 ; PRO "A" NAVRAT O 0.5 SEC ERR31: CALL VRAT JMP ERRD7 ERRD4: CALL TXIMM DB CR,LF DC 'VRAT ZPET ' CALL PLAY ERRD7: CALL READF ; ZNOVA CTI JC ERRD7 CALL NUFIL ; A HLEDEJ JZ ERRD8 JNC ERRD0 ; PREJEL JMP ERRD7 ; CTI DAL ; ERRD8: CALL CRLF JMP RIB1 ; JE TO DOBRE VRAT: CALL TTSP POP H ; NAVRATOVA ADRESA VRAT JNZ ERRD4 ; PRO K-10 PUSH H ; PRO SP-210 OK MVI A,SPREWZ ; PREVIJENI VZAD CALL SPPULS ; DOBA VSTUPUJE V <A> MOV A,B JMP TIME ;==================================== ; ZAPIS VYSTUPNI BUFFER ;==================================== ; WOBW: STA BOUT-1 WOB: PUSH D LHLD BNO INX H SHLD BNO XCHG ; ;********************************************* ; ZAPIS BLOKU: HL - ADRESA VYSTUPNIHO BUFFERU ;********************************************* ; WRBLO: PUSH B PUSH D LXI H,BOUT-1 ; START BLOKU MVI A,30H CALL GAPO ; START WRITE CALL BTIM8 ; 800/100 MS LDA CASK ORA A CNZ BTIM8 ; PRODLOUZENO 2X CALL SEROP CALL SEROP CALL SEROP ; PREAMBLE LXI B,(LENGHT+1) AND 0FFH CALL SEROM ; DATA LXI H,WRNM MVI C,NAMLE CALL SEROM ; JMENO POP D MOV A,E CALL SEROUT ; CISLO BLOKU MOV A,D CALL SEROUT ; CISLO SOUBORU MOV A,B CALL SEROUT ; KONTROLNI SUMA CALL SEROP XRA A CALL SEROUT ; ZAVER BLOKU CALL OKNO CALL DBTV1 CALL OBNOV POP B CALL T10MS ; 10 MS LXI H,BOUT-1 SHLD ADRO ; ZACATEK MOV A,M CALL ZASTAV POP D ; ; NULUJ VYSTUPNI BUFFER ;---------------------- ; NULBF: LXI H,BOUT-1 PUSH H MVI A,LENGHT INX H MVI M,0 DCR A JNZ $-4 POP H ; (BLOK TYP) ADRM RET ; ; ZASTAV NA KONCI BLOKU ; ZASTAV: SUI 'B' RZ INR A JZ XSTOP ; 'A' CALL BTIM8 MOV A,M DCR A ; SOH ? JNZ STOP ; NENI SOH ; VOLANI STOP NA K-10 / PAUSE NA SP-210 XSTOP: CALL TTSP MVI A,SPPAUS ; PAUSE NA SP-210 JZ STOP1 JNZ STOP ; STOP NA K-10 ; ; CISLO BLOKU O.K. ? ; NUFIL: PUSH H LHLD BNI DCX H CALL HILO ; POROVNEJ POP H 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 LHLD ADRI GET0: INX H MOV A,L ; PRAZDNY? CPI BIEND AND 0FFH MOV A,M SHLD ADRI JZ GET1 ; <A>..BYTE CPI SUBS ; EOF? TEST JNZ GETEX MOV C,A CALL KONEC? GET00: MOV A,C ; POSLEDNI BLOK JNZ GETEX MOV E,L ; ADR ZNAKU SUBS LXI H,BIEND ; 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 CALL STOP MVI A,SUBS STC ; CY=1 DB 6 GETEX: ORA A POP H POP D POP B RET ; GET1: CALL KONEC? CNZ RIB JNZ GET0 ; KONEC SOUBORU JMP GET2 ; POSLEDNI BLOK ? KONEC?: LDA BIN-1 CPI EOT RET ; ZY=1...ANO ; ;==================================== ; 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 LHLD ADRO INX H MOV M,C ; ZAPIS SHLD ADRO MOV A,L CPI (BOEND AND 0FFH)-1 CZ 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 ;KONTROLNI SOUCET? CHECK: MOV C,B CALL RICH CMP C RZ ; ZASTAV A OHLAS CHYBU ERSTP: CALL STOP JMP ERROR ; RADR@: CALL RICH MOV L,A CALL RICH ; HL MOV H,A RET ; RICH: CALL RI ; CTENI & SUMA JC ERSTP JMP SUM@ ; PADR@: MOV C,L CALL POCH MOV C,H ; POCH: MOV A,C ; ZAPI & SUMA ADD B MOV B,A JMP PO ; ;******************************************** ; CTENI BLOKU: HL - ADRESA VSTUPNIHO BUFFERU ; VYSTUP: DE - CISLO SOUBORU A BLOKU ; CY=1 PRO CHYBU ;******************************************** ; READF: XRA A ; NASTAV FIND MOD STA FND READ: RBLOK: PUSH B LXI H,READNM CALL START ; SYNCHRONIZACE SYNC: IN UDATA CALL T10MS ; 10 MS CALL BREAK IN USTAT RLC JC SYNC ; CEKEJ NA READY ; RBL2: MVI C,3 ; 3*PREAMBLE RBL3: CALL SERIN CPI PREAM JNZ SYNC DCR C JNZ RBL3 MVI C,'*' LDA FND ; FIND MOD? ORA A JNZ $+5 ; NECTE MVI C,':' MOV M,C INX H PUSH H LXI H,BIN-1 LXI B,(LENGHT+1) AND 0FFH ; CTI BLOK DAT CALL SERIM POP H MVI M,'"' INX H MVI C,NAMLE CALL SERIM MVI M,'"' INX H MVI M,' ' CALL SERIN MOV E,A CALL SERIN MOV D,A MOV C,B ; KONTROLNI SUMA CALL SERIN SUB C PUSH PSW CALL OKNO MVI B,15 CALL PNAME ; VYPIS JMENA CALL DBTV CALL OBNOV LXI H,BIN-1 SHLD ADRI ; POCATECNI ADRESA LDA FND ORA A MOV A,M MVI B,'A' JZ $+4 INR B CMP B CC XSTOP MVI A,21 STA FND ; ZRUS FIND MOD POP PSW ; PRO ZERO ..O.K POP B RZ STC RET ; ELSE ...ERROR ; ; ZAPIS DO PAMETI ; SERIM: CALL SERIN ; CTI MOV M,A INX H DCR C JNZ SERIM RET ; SEROM: MOV A,M ; Z PAMETI INX H CALL SEROUT ; NA :CT: DCR C JNZ SEROM RET ; VSE SEROP: MVI A,PREAM ; BLOCK-MARK ; ; ZAPIS ZNAMU NA MGF ; SEROUT: CALL SUM@ PUSH B MOV C,A CALL SERO@ POP B RET ; ; VSTUP ZNAKU Z MGF SERIN: CALL SERI@ SUM@: PUSH PSW ADD B MOV B,A CALL BREAK POP PSW RET @E@KOS EQU $ ; ;**************************************** ; ROZDELENI S Y S T E M O V E R A M ;**************************************** ; RST1 EQU @R@ ; RESTART VEKTORY ;........>>> ;...... ;<<... UZIVATELSKY & MONITOR. ZASOBNIK ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% .PHASE @R@+6DH ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ; MONITOR DATA ; MSTAK: DS 2 ACSAV: DS 2 BCSAV: DS 2 DESAV: DS 2 HLSAV: DS 2 PCSAV: DS 2 SPSAV: DS 2 ; BRAD: DS 2 INSTR: DS 1 BRAD2: DS 2 INST2: DS 1 CADR: DS 2 ; KURZOR ADR. ;------------------------- WMKOD: DS 14 ; KOD PRO KURZORY PREV: DS 21 ; PREVODNI KODY..0 ;------------------------- ; USER I/O DEVICE ; CILOC: DS 3 ; 0 COLOC: DS 3 ; 1 R1LOC: DS 3 ; 2 R2LOC: DS 3 ; 3 P1LOC: DS 3 ; 4 P2LOC: DS 3 ; 5 LILOC: DS 3 ; 6 CSLOC: DS 3 ; 7 DS 1 MEMTOP: DS 2 ; 8 ERRSW: DS 3 ; 9 CI@0: DS 3 ; 10 CO@: DS 3 ; 11 CSTS@: DS 3 ; 12 LO@: DS 3 ; 13 KOS@: DS 3 ; 14 RI@: DS 3 ; 15 PO@: DS 3 ; 16 CCPM: DS 3 ; 17 GRAF: DS 3 RESER: DS 3 IONUM EQU ($-CILOC)/3+1 ; IOBYT: DS 1 ; RIZENI I/O ZARIZENI ; ;**************************** ;<< EXTERE OVLADANE FLAGY: >> ;**************************** MODE: DS 1 ; CO-MODE @IF1: DS 1 @IF2: DS 1 @OF1: DS 1 @OF2: DS 1 LINE: DS 1 ; RADEK COLUM: DS 1 ; SLOUPEC RESL: DS 1 ; RESERVACE RESC: DS 1 ; SLOUPEC RESL1: DS 1 ; POSLEDNI RADEK RESC1: DS 1 ; POSLEDNI SLOUPEC PREP: DS 1 ; UROVEN PRERUSENI ; ; PROMENE PRO OPRACNI SYSTEM ; CUR@: DS 1 KEY: DS 1 CASK: DS 1 ; <>0 - PRODLUZ MEZERY WNDP: DS 6 ; PARAMETR PRO 2. OKNO EXSER EQU $-MODE ; KONEC SLUZEB ; CHAR: DS 1 XFLG: DS 1 ; ;**************************************************** ; DATA SPOLECNA PRO MONITOR A O.S. ;**************************************************** ; ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @BT: DS 1 @PED: DS 1 SADR: DS 2 ; START ADR EADR: DS 2 ; END ADR SUM: DS 1 EXTEXT: DS 1 OPT: DS 1 NAMBUF: DS 65 ; ;"""""""""""""""""""""""""""""""""" ; PROMENE 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 TSM: DS 1 TSP: DS 1 ; PRO SP-210 - 0 POSICE: DS 2 ; OKNA V MIKOSU MOD@: DS 1 JEDE?: DS 1 ; PRO =0 MGF. JEDE ; <>0 MGF. STOJI ; .DEPHASE ; END ; [P]
ÚVOD | Novinky | 8 Bitů | Příslušenství | Drobnosti | TTL | Kontakt
SAPI-1 | ONDRA | PMI-80 | PMD-85 | klony PMD-85 | klony SM50/40 | PETR | PLAN-80A | IQ151 | TNS | FK-1 | HVĚZDA | SP 830 | PCS 1-QR6000
ZPS | Technické prostředky | Programové vybavení | Dokumentace