; PrintFox DECODER -> MT81 ; ORG 00100H PIPL: EQU 01000H KBE: EQU PIPL+01F40H GBE: EQU PIPL+07D00H PDR: EQU 050H PFL: EQU 052H ; INIT: RST 020H DB 2 DB 'Bilddiskette' DB ' einlegen !' DB 08DH RST 020H DB 1 LD A,0FFH OUT PFL+1 LD A,0C7H OUT PFL+1 OUT PFL LD A,00FH OUT PDR+1 CALL LOAD RST 020H DB 2 DB 'Converting' DB '...' DB 08DH LD HL,PIPL NXT: LD DE,SPAC LD C,1 CALL ZROT EX DE,HL LD HL,SPAC LD BC,8 LDIR EX DE,HL PUSH HL LD DE,(PUFF) SBC HL,DE POP HL JRC NXT-# JR EKO-# ZROT: PUSH HL PUSH DE PUSH BC CALL ROT LD A,D POP BC POP DE POP HL LD (DE),A INC DE INC C LD A,C CMP 9 JRC ZROT-# RET ROT: LD B,8 NBM: PUSH BC LD A,M INC HL BFM: RLA DEC C JRNZ BFM-# RL D POP BC DJNZ NBM-# RET EKO: LD HL,(LZEI) LD (LZE2),HL LD A,5 LD (PMOD),A LD A,H CMP 2 JRNZ BPOK-# RST 020H DB 2 DB '(A)ll or' DB ' (P)lot ?' DB 08DH PFQ: RST 020H DB 1 CMP 'P' JRZ PLOT-# CMP 'A' JRNZ PFQ-# LD A,4 LD (PMOD),A JR BPOK-# PLOT: LD HL,576 LD (LZE2),HL BPOK: RST 020H DB 2 DB 'printing...' DB 08DH LD DE,DINI CALL IGET LD HL,PIPL JR START-# NEXT: LD DE,(LZE2) NE2: LD A,M CALL OUT INC HL DEC DE LD A,D OR E JRNZ NE2-# LD HL,(AZEI) LD DE,(LZEI) ADD HL,DE START: LD (AZEI),HL LD A,13 CALL OUT LD A,10 CALL OUT RST 020H DB 4 CMP 3 JRZ PRQ-# PUSH HL INC HL INC HL LD DE,(PUFF) SBC HL,DE POP HL JRNC PRQ-# LD DE,ITAB CALL IGET JR NEXT-# PRQ: RST 020H DB 2 DB 'repeat (Y)' DB ' ?',08DH RST 020H DB 1 CMP 'Y' JRZ BPOK-# RST 038H IGET: LD B,5 IG2: LD A,(DE) CALL OUT INC DE DJNZ IG2-# RET OUT: PUSH AF WAIT: IN PFL BIT 0,A JRNZ WAIT-# POP AF OUT PDR RET ; LOAD: CALL DIR LD A,(FANZ) OR A RZ LD HL,(02BH) LD (PUFF),HL LD DE,0FF85H CALL KPOS FAZK: RST 020H DB 1 CMP 3 JRNZ NCB-# LD HL,(PUFF) LD (02BH),HL RST 038H NCB: CMP 13 JRZ PFOU-# LD DE,020H CMP 10 JRZ AZK-# LD DE,0FFE0H CMP 11 JRNZ FAZK-# AZK: CALL KPOS JR FAZK-# KPOS: LD HL,(02BH) ADD HL,DE LD (02BH),HL RET PFOU: LD BC,20 LD DE,SPAC PUSH DE LDIR EX DE,HL FCP: DEC HL LD A,M CMP '"' JRNZ FCP-# LD M,0 LD HL,(PUFF) LD (02BH),HL POP HL PUSH HL RST 020H DB 2 DB 'SEARCHING' DB ' FOR' DB 0A0H CALL PNAM POP HL LD C,060H CALL OPEN CALL OTALK CALL IECIN CMP 042H JRZ PIC-# CMP 047H JRZ PIC-# LD A,B OR A JPNZ LERR RST 020H DB 2 DB 'no Picture' DB 08DH XOR A LD (FANZ),A JR LB2-# PIC: LD HL,KBE LD DE,320 CMP 042H JRZ SPIC-# LD HL,GBE LD DE,640 SPIC: LD (PUFF),HL LD (LZEI),DE LD HL,PIPL RST 020H DB 2 DB 'DECODING' DB 08DH CALL PAE LNXT: CALL IECL JRNZ LBRK-# LD A,M CMP 09BH JRNZ NCOD-# CALL IECIN LD E,A CALL IECIN LD D,A CALL IECIN LD B,A COD: LD M,B INC HL DEC DE LD A,D OR E JRNZ COD-# DEC HL NCOD: INC HL PUSH HL LD DE,(PUFF) SBC HL,DE POP HL JRNC OVER-# LD A,L OR A JRNZ LNXT-# CALL GAD RST 020H DB 4 CMP 3 JRNZ LNXT-# OVER: LD A,040H LBRK: CMP 040H PUSH AF CALL GAD POP AF JRZ LB2-# LERR: RST 020H DB 2,08DH CALL FSTAT LB2: RST 020H DB 2,08DH CALL UTALK LD C,060H CALL CLOSE RET PAE: RST 020H DB 7 RST 020H DB 2,0ADH RST 020H DB 7 RET PNAM: LD A,M OR A JRZ NCR-# RST 020H DB 0 INC HL JR PNAM-# NCR: RST 020H DB 2,08DH RET GAD: RST 020H DB 2 DB 8,8,8,088H RST 020H DB 7 RET DIR: LD HL,TDIR LD C,060H XOR A LD (FANZ),A CALL OPEN CALL OTALK PUSH BC LD B,7 LD HL,SPAC IGN: CALL IECL JRNZ DNR-# DJNZ IGN-# RST 020H DB 2,13 DB 'DISK:' DB 0A0H NZEI: CALL IECIN OR A JRZ EZEI-# NZ2: RST 020H DB 0 JR NZEI-# EZEI: RST 020H DB 2,08DH RST 020H DB 4 LD HL,FANZ OR A JRNZ DE2-# INC M CALL IECIN CALL IECIN BIT 6,B JRNZ DEND-# CALL IECIN LD L,A CALL IECIN LD H,A CALL PDEZ KORR: CALL IECIN CMP ' ' JRNZ NZ2-# JR KORR-# DNR: CALL FSTAT DEND: LD HL,FANZ DEC M DEC M DE2: LD L,M LD H,0 CALL PDEZ RST 020H DB 2 DB 'Files ' DB 'listed.' DB 13,08DH POP BC JMP CLOSE TDIR: DB '$',0 FSTAT: PUSH AF PUSH BC LD C,06FH CALL OTALK NEZ: CALL IECIN RST 020H DB 0 CMP 13 JRNZ NEZ-# CALL UTALK POP BC POP AF RET PDEZ: PUSH HL PUSH DE PUSH BC PUSH AF LD D,0 LD BC,100 CALL ZST LD C,10 CALL ZST LD C,1 CALL ZST RST 020H DB 2,0A0H POP AF POP BC POP DE POP HL RET ZST: XOR A NSC: INC A SBC HL,BC JRNC NSC-# ADD HL,BC ADD 02FH CMP '0' JRZ PSP-# LD D,1 JR ZGET-# PSP: DEC C JRZ ZGET-# LD E,A LD A,D OR A LD A,E JRNZ ZGET-# LD A,' ' ZGET: RST 020H DB 0 RET ERRM: PUSH AF LD A,B CMP 040H JRZ NMSG-# OR A CANZ MESG NMSG: POP AF RET MESG: LD A,B CMP 040H JRZ EDAT-# CMP 080H JRZ DNP-# DEC A JRZ OERR-# DEC A JRZ IERR-# OKM: RST 020H DB 2 DB 13 DB 'OK.' DB 08DH RET EDAT: RST 020H DB 2 DB 13 DB 'End of Datas' DB 08DH RET OERR: RST 020H DB 2 DB 13 DB 'Error: OUTPUT' DB 08DH RST 038H IERR: RST 020H DB 2 DB 13 DB 'Error: INPUT' DB 08DH RST 038H DNP: RST 020H DB 2 DB 13 DB 'Device not' DB ' present' DB 08DH RST 038H TALK: LD B,040H JR OTL-# LIST: LD B,020H OTL: LD A,(DIV) AND 00FH OR B AATN: PUSH AF IN PFL RES 5,A OUT PFL SET 3,A OUT PFL POP AF AT2: PUSH AF IN PFL SET 4,A OUT PFL RES 5,A OUT PFL LD B,239 LD C,0 WM1: DJNZ WM1-# POP AF IECO: LD B,C LD C,A IN PFL RES 5,A OUT PFL IN PFL BIT 7,A JRNZ DNPS-# RES 4,A OUT PFL BIT 6,B JRZ WLB-# WG1: IN PFL BIT 7,A JRZ WG1-# WG2: IN PFL BIT 7,A JRNZ WG2-# WLB: IN PFL BIT 7,A JRZ WLB-# SET 4,A OUT PFL LD B,8 DONX: IN PFL BIT 7,A JRZ TOMS-# BIT 0,C JRNZ DOH-# DOL: SET 5,A JR DOO-# DOH: JRZ DOH-# RES 5,A DOO: PUSH BC LD B,2 TKO2: DJNZ TKO2-# LD A,A OUT PFL RES 4,A OUT PFL POP BC RRC C RES 5,A SET 4,A OUT PFL DJNZ DONX-# LD B,59 FO3: IN PFL BIT 7,A JRZ EOS-# DJNZ FO3-# TOMS: LD B,1 JR ULS2-# EOS: LD B,0 RET DNPS: LD B,080H JR ULS2-# SEKL: CALL AT2 IN PFL RES 3,A OUT PFL RET SEKT: CALL AT2 IN PFL SET 5,A OUT PFL RES 3,A OUT PFL RES 4,A OUT PFL WCL: IN PFL BIT 6,A JRNZ WCL-# RET UTALK: IN PFL SET 4,A OUT PFL SET 3,A OUT PFL LD A,05FH JR UTLS-# ULIST: LD A,03FH UTLS: CALL AATN ULS2: IN PFL RES 3,A OUT PFL ULS3: EX (SP),HL EX (SP),HL BIT 2,M IN PFL RES 4,A OUT PFL RES 5,A OUT PFL RET IECIN: IN PFL RES 4,A OUT PFL FI0: IN PFL BIT 6,A JRZ FI0-# LD C,0 EOI: LD B,50 RES 5,A OUT PFL FI1: IN PFL BIT 6,A JRZ DISC-# DJNZ FI1-# LD B,2 LD A,C OR A RNZ IN PFL SET 5,A OUT PFL RES 4,A OUT PFL LD C,040H JR EOI-# DISC: LD A,C PUSH AF LD B,8 DINX: IN PFL BIT 6,A JRZ DINX-# SCF BIT 7,A JRNZ DIH-# CCF DIH: RR C WI1: IN PFL BIT 6,A JRNZ WI1-# DJNZ DINX-# SET 5,A OUT PFL POP AF PUSH AF CMP 040H CAZ ULS3 POP AF LD B,A LD A,C RET IECL: PUSH BC CALL IECIN LD M,A LD A,B POP BC OR A RET OTALK: PUSH AF PUSH BC CALL TALK CALL ERRM POP BC PUSH BC LD A,C CALL SEKT CALL ERRM POP BC POP AF RET OLIST: PUSH AF PUSH BC CALL LIST CALL ERRM POP BC PUSH BC LD A,C CALL SEKL CALL ERRM POP BC POP AF RET CLOSE: PUSH AF PUSH BC LD A,C AND 0EFH OR 0E0H LD C,A CALL OLIST CALL ULIST CALL ERRM POP BC POP AF RET OPEN: PUSH AF PUSH BC LD A,C OR 0F0H LD C,A CALL OLIST NZFN: LD A,M OR A JRZ FNSE-# PUSH BC CALL IECO INC HL POP BC JR NZFN-# FNSE: CALL ULIST CALL ERRM POP BC POP AF RET DINI: DB 27,'3',24 DB 27,'O' ITAB: DB 27,'*' PMOD: DB 5 LZE2: DA 0 LZEI: DA 0 AZEI: DA 0 DIV: DB 8 FANZ: DB 0 PUFF: DA 0 SPAC: DB ' ' END ; END