GLOBAL PREREXT FDMOTOR EQU 0DC LAMOF EQU 0FBE5 LAMSOFH: DEFB 0,0,078,0,078 LSOF: DEFB 0,0,05F,0F,06E PSOF: DEFB 0 FCNVBUF: DEFS 8+1+3+1 FFCNT: DEFB 0 FDDELAY: DEFB 0 RDBCBL: DEFB 0 RDBPTR: DEFW 0 RDBMCB: DEFB 0 RDBMPT: DEFW 0 KAPVYB: DEFW 0 PREREXT: XOR A LD HL,FDDELAY CP (HL) RET Z DEC (HL) RET NZ OUT (FDMOTOR),A RET FDOFF: PUSH AF LD A,0FF FDOFF1: LD (FDDELAY),A POP AF RET FDOFFD: PUSH AF XOR A JR FDOFF1 BRKEY: DI LD A,0F8 OUT (0D0),A IN A,(0D1) AND 081 EI RET Z BRKEY1: CALL KBDTEST JR NZ,BRKEY2 LD A,1 OR A RET BRKEY2: CALL KBDREAD CALL CPESBR JR NZ,BRKEY1 RET LAMSOF: CALL PUAL LD DE,LAMSOFH LD A,(LAMOF) LAMSOF1: LD L,A LD H,0 LD C,L LD B,H ADD HL,HL ADD HL,HL ADD HL,BC EX DE,HL LD (HL),E INC HL LD (HL),D LD C,3 ADD HL,BC LD BC,06CF CALL CURDIS OTDR RET INISOF: CALL PUAL XOR A INISOF1: LD DE,LSOF LD (PSOF),A JR LAMSOF1 HORESOF: CALL PUAL LD A,(PSOF) ADD A,8 CP 098 JR C,HORESOF1 XOR A HORESOF1: CALL SETEOP HORESOF2: CALL INISOF1 CALL SETBOL JP CLREOL DOLESOF: CALL PUAL LD A,(PSOF) SUB 8 JR NC,DOLESOF1 LD A,090 DOLESOF1: CALL SETBOP JR HORESOF2 RDDSK: CALL PUA BDOS DRNUM RET RDUSER: CALL PUA LD E,0FF RDUSER1: BDOS DUSER RET STUSER: CALL PUAL AND 0F LD E,A JR RDUSER1 STDISK: CALL PUAL AND 0F LD E,A PUSH AF BDOS DSELDSK POP AF LD (04),A RET ;STDSK: CALL PUA ; AND 0F ; LD C,A ; BIOS ISELDSK ; LD A,H ; OR L ; RET NZ ; SCF ; RET GETIXIY: PUSH AF LD IX,HOL LD IY,HOR LD A,(HOPANEL) OR A JR Z,GETIXI1 PUSH IX PUSH IY POP IX POP IY GETIXI1: POP AF RET CPESBR: CP KODESC RET Z CP KODBRK RET PUTMNS: CALL PUAL LD HL,MSUV OR A JR Z,PUTMNS1 CP 5 JR NC,PUTMNS1 LD HL,MSBRM CP 1 JR Z,PUTMNS1 LD HL,MSBYM PUTMNS1: CALL PADEK CALL PUTSPC CALL TEXT PUTSPC: PUSH AF LD A,' ' CALL PUTCHAR POP AF RET FARPAN: PUSH HL LD HL,(HOPOZPAN) FARPAN1: PUSH AF LD A,L CALL SETPAP LD A,H CALL SETCOL POP AF POP HL RET FARMNU: PUSH HL LD HL,(HOPOZMNU) JR FARPAN1 FARZAK: PUSH HL LD HL,(HOPOZZAK) JR FARPAN1 FARZVY: PUSH AF LD A,(HOPISZVY) FARZVY1: CALL SETCOL POP AF RET FARZNI: PUSH AF LD A,(HOPISZNI) JR FARZVY1 FARAKT: PUSH AF LD A,(HOPOZAKT) CALL SETPAP POP AF RET GETIX: PUSH AF LD A,(HOPANEL) OR A LD IX,HOL JR Z,GETIX1 LD IX,HOR GETIX1: POP AF XWIN: CALL PUAL LD L,(IX+HOLHL-HOL) LD H,(IX+HOLHL+1-HOL) LD A,027 ADD A,L LD E,A LD A,(HOLINES) ADD A,H DEC A LD D,A JP SETWIN GETAKW: CALL PUA LD E,(HL) INC HL LD D,(HL) INC HL EX DE,HL LD C,(HL) INC HL LD B,(HL) XOR A GETAKW1: EX DE,HL LD E,(HL) INC HL LD D,(HL) INC HL OR A EX DE,HL SBC HL,BC RET Z INC A JR GETAKW1 SETAKW: CALL PUAL LD E,(HL) INC HL LD D,(HL) INC HL ADD A,A LD C,A LD B,0 ADD HL,BC LD C,2 LDIR RET GETAKB: CALL PUA LD E,(HL) INC HL LD D,(HL) INC HL LD A,(DE) LD BC,0 CPIR LD A,C CPL RET SETAKB: CALL PUAL LD E,(HL) INC HL LD D,(HL) INC HL LD C,A LD B,0 ADD HL,BC LDI RET LHLDE: EX DE,HL LD E,(HL) INC HL LD D,(HL) INC HL EX DE,HL RET PRD: PUSH AF AND 0F ADD A,'A' JR PRUS2 PRDU: PUSH AF RRCA RRCA RRCA RRCA CALL PRD POP AF PUSH AF CALL PRU LD A,':' JR PRUS2 PRU: PUSH AF AND 0F CP 0A JR C,PRUS1 PUSH AF LD A,'1' CALL PUTCHAR POP AF SUB 0A PRUS1: ADD A,'0' PRUS2: CALL PUTCHAR POP AF RET FCNTOTXT: CALL PUAL LD B,08 FCNTOT1: LD A,(HL) LD (DE),A CP ' ' JR NZ,FCNTOT2 FCNTOT3: INC HL DJNZ FCNTOT3 JR FCNTOT4 FCNTOT2: INC HL INC DE DJNZ FCNTOT1 FCNTOT4: LD A,'.' LD (DE),A INC DE LD B,3 FCNTOT5: LD A,(HL) AND 07F CP ' ' JR Z,FCNTOT6 LD (DE),A INC HL INC DE DJNZ FCNTOT5 FCNTOT6: XOR A LD (DE),A RET TXTTOFCN: CALL PUAL PUSH HL PUSH DE LD H,D LD L,E INC DE LD BC,8+2 LD (HL),' ' LDIR POP DE POP HL LD B,8 TXTTOF1: LD A,(HL) AND 07F CALL UPCASE INC HL CP ' ' JR Z,TXTTOF1 OR A RET Z CP '.' JR Z,TXTTOF2 LD (DE),A INC DE DJNZ TXTTOF1 TXTTOF3: LD A,(HL) INC HL OR A RET Z CP '.' JR NZ,TXTTOF3 TXTTOF2: LD A,B ADD A,E LD E,A ADC A,D SUB E LD D,A LD B,3 TXTTOF4: LD A,(HL) OR A RET Z AND 07F CALL UPCASE LD (DE),A INC DE INC HL DJNZ TXTTOF4 RET LGTVAR: PUSH AF PUSH DE PUSH HL PUSH IX PUSH IY CALL GETIXIY LD A,H OR A JR NZ,LGTVAR4 LD A,L CP 9 JR Z,LGTVAR6 CP 0A JR NZ,LGTVAR7 LD L,2 LD A,01F CP (IX+HOUSERL-HOL) JR NC,LGTVAR7 CP (IY+HOUSERL-HOL) JR NC,LGTVAR7 LD L,8 JR LGTVAR7 LGTVAR6: LD L,1 LD A,01F CP (IX+HOUSERL-HOL) JR NC,LGTVAR7 LD L,7 LGTVAR7: LD BC,2 LD DE,CUSR1 LD A,L DEC A SRL A JR NC,LGTVAR1 LD DE,CUSR2 LGTVAR1: JR Z,LGTVAR2 INC C LGTVAR2: CP 2 JR Z,LGTVAR3 CP 3 JR NZ,LGTVAR8 LD C,1 JR LGTVAR5 LGTVAR8: LD A,(DE) CP 0A JR C,LGTVAR5 INC C JR LGTVAR5 LGTVAR3: INC DE INC DE EX DE,HL LD DE,FCNVBUF CALL FCNTOTXT EX DE,HL LGTVAR4: CALL DLZRET LGTVAR5: POP IY POP IX LGTVAR9: POP HL POP DE POP AF RET LGTPLX: PUSH AF PUSH DE PUSH HL LD BC,0 LGTPLX1: LD E,(HL) INC HL LD D,(HL) INC HL LD A,E OR D JR Z,LGTPLX2 EX DE,HL PUSH BC CALL LGTVAR POP HL ADD HL,BC LD C,L LD B,H INC BC EX DE,HL JR LGTPLX1 LGTPLX2: LD A,B OR C JR Z,LGTVAR9 DEC BC JR LGTVAR9 PRTVAR: CALL PUAL CALL GETIXIY LD A,H OR A JR NZ,PRTVAR3 LD A,L CP 9 JR Z,PRTVAR4 CP 0A JR NZ,PRTVAR5 LD L,2 LD A,01F CP (IX+HOUSERL-HOL) JR NC,PRTVAR5 CP (IY+HOUSERL-HOL) JR NC,PRTVAR5 LD L,8 JR PRTVAR5 PRTVAR4: LD L,1 LD A,01F CP (IX+HOUSERL-HOL) JR NC,PRTVAR5 LD L,7 PRTVAR5: LD DE,CFCB1 LD A,L DEC A SRL A JR NC,PRTVAR1 LD DE,CFCB2 PRTVAR1: CP 2 JR Z,PRTVAR2 CP 3 JR NZ,PRTVAR6 LD A,(DE) DEC A JP PRD PRTVAR6: PUSH AF LD A,(DE) DEC DE DEC A CALL PRD LD A,(DE) CALL PRU POP AF OR A RET Z LD A,':' JP PUTCHAR PRTVAR2: INC DE EX DE,HL LD DE,FCNVBUF CALL FCNTOTXT EX DE,HL PRTVAR3: JP TEXT CPLX: CALL PUH CALL GETLGTW CALL LGTPLX SUB C SRL A INC A CALL SETX PLX: CALL PUH PLX1: LD E,(HL) INC HL LD D,(HL) INC HL LD A,E OR D RET Z EX DE,HL CALL PRTVAR CALL PUTSPC EX DE,HL JR PLX1 PLX0: EX (SP),HL CALL PLX EX (SP),HL RET CPLX0: EX (SP),HL CALL CPLX EX (SP),HL RET FSETUP: LD A,(HL) INC HL CALL STUSER ; LD A,(HL) ; DEC A ; CALL STDSK EX DE,HL CALL PUAL LD HL,0C LD BC,017 ADD HL,DE LD E,L LD D,H INC DE LD (HL),B LDIR RET FOTVOR: CALL PUA CALL FSETUP BDOS DOPEN ADD A,A RET FZALOZ: CALL PUA CALL FSETUP EX DE,HL CALL CLRFTR EX DE,HL BDOS DNEW ADD A,A CALL C,PLNYADRS RET FZAVRI: CALL PUA LD A,(HL) INC HL CALL STUSER ; LD A,(HL) ; DEC A ; CALL STDSK EX DE,HL BDOS DCLOSE ADD A,A RET FATRIB: CALL PUA CALL FSETUP BDOS DSATR ADD A,A RET FVYMAZ: CALL PUA INC HL CALL CLRFTR DEC HL CALL FATRIB RET C CALL FSETUP BDOS DDEL ADD A,A RET FEXIST: CALL PUA LD IX,HOT INC HL LD A,(HL) DEC A LD (IX+HODISKL-HOL),A DEC HL CALL XFIRST EX DE,HL FEXIST1: CALL XNEXT RET C RET Z LD A,(HL) CP 010 JR NC,FEXIST1 CALL CMPUZIV JR NZ,FEXIST1 INC DE CALL CMPSUB DEC DE JR NZ,FEXIST1 XOR A INC A RET FREN: CALL PUA PUSH HL LD HL,CUSR1 CALL FATRIB LD HL,CFCB2 PUSH HL LD DE,CFCB1+010 LD BC,010 LDIR LD A,(CUSR1) CALL STUSER LD DE,CFCB1 ; LD A,(DE) ; DEC A ; CALL STDSK BDOS DREN POP DE POP HL ADD A,A PUSH AF CALL CPYFTR LD HL,CUSR2 CALL FATRIB POP AF RET GENFCB: CALL PUAL CALL GETIXIY PUSH HL LD HL,CUSR1 PUSH HL LD E,L LD D,H INC DE LD BC,CFCBK-CUSR1-1 LD (HL),0 LDIR POP DE POP HL PUSH DE LDI LD A,(IX+HODISKL-HOL) INC A LD (DE),A INC DE LD BC,8+3 CALL CLDIR LD DE,CUSR2 POP HL LD A,(IY+HOUSERL-HOL) CP 010 JR C,GENFCB1 LD A,(HL) GENFCB1: LD (DE),A INC HL INC DE LD A,(IY+HODISKL-HOL) INC A LD (DE),A INC HL INC DE LD C,8+3 CLDIR: PUSH AF CLDIR1: LD A,(HL) AND 07F LD (DE),A INC HL INC DE DEC BC LD A,B OR C JR NZ,CLDIR1 POP AF RET CLRFTR: CALL PUAL PUSH HL POP IY CLRFTR1: RES 7,(IY+9) ; RES 7,(IY+0A) RET CPYFTR: CALL PUAL PUSH HL POP IX PUSH DE POP IY CALL CLRFTR1 BIT 7,(IX+9) JR Z,CPYFTR1 SET 7,(IY+9) CPYFTR1: BIT 7,(IX+0A) RET Z SET 7,(IY+0A) RET FFIRST: CALL PUH CALL GETIX LD HL,CUSR1 LD A,(IX+HOUSERL-HOL) CP 010 JR C,FFIRST1 XOR A FFIRST1: LD (HL),A INC HL LD A,(IX+HODISKL-HOL) INC A LD (HL),A INC HL LD E,L LD D,H INC DE LD BC,0A LD (HL),' ' LDIR CALL XTSTPOC SCF RET Z XOR A LD (FFCNT),A CALL XGETAA CALL GENFCB PUSH HL CALL XMERVYB LD (KAPVYB),HL POP HL OR A RET FNEXT: CALL PUH CALL GETIX CALL XTSTPOC LD C,A FNEXT1: LD HL,FFCNT LD A,(HL) INC (HL) CP C CCF RET C CALL XGETAS JR Z,FNEXT1 CALL GENFCB XOR A RET KBDNUL: CALL PUAL KBDNUL1: CALL KBDTEST RET Z CALL KBDREAD JR KBDNUL1 COMPHS: CALL PUA EX DE,HL LD BC,0808 CALL COMPH RET NZ LD B,0 ADD HL,BC EX DE,HL ADD HL,BC EX DE,HL LD BC,0303 COMPH: PUSH BC PUSH DE PUSH HL COMPH1: LD A,B OR A JR Z,COMPH2 LD A,(HL) CP 020 JR NZ,COMPH4 COMPH2: LD A,C OR A JR Z,COMPH3 LD A,(DE) AND 07F CP 020 COMPH3: POP HL POP DE POP BC RET COMPH4: LD A,(HL) CP '*' JR Z,COMPH7 INC C DEC C JR NZ,COMPH5 COMPH9: LD A,1 OR A JR COMPH3 COMPH5: CP '?' JR Z,COMPH6 LD A,(DE) AND 07F CP (HL) JR NZ,COMPH3 COMPH6: INC HL INC DE DEC B DEC C JR COMPH1 COMPH7: INC HL DEC B COMPH8: CALL COMPH JR Z,COMPH3 INC C DEC C JR Z,COMPH9 INC DE DEC C JR COMPH8 RDBINI: CALL PUA CALL FDOFFD PUSH HL POP IY LD L,(IY+XPZAZ) LD H,(IY+XPZAZ+1) LD A,L AND 07F RRA LD (RDBMPT+1),A LD A,0 RRA LD (RDBMPT),A ADD HL,HL LD A,H LD (RDBMCB),A LD HL,CUSR1 CALL FOTVOR CALL C,FDOFF JP C,PWNEEX XOR A LD (RDBCBL),A LD HL,0 LD (RDBPTR),HL CALL PRACUJEM CALL CRBL CALL FDOFF CALL CLOSEW XOR A RET RDBSCB: CALL PUAL LD HL,RDBCBL CP (HL) RET Z LD (HL),A LD H,A XOR A LD L,A LD (CFCB1+023),A SRL H RR L LD (CFCB1+021),HL CALL FDOFFD LD DE,CBUF BDOS DSDMA LD DE,CFCB1 BDOS DRDIR CALL PRACUJEM CALL CRBL CALL FDOFF JP CLOSEW RDBSOF: CALL PUAL LD D,C LD E,H LD A,H AND 03F LD H,A LD (RDBPTR),HL EX DE,HL ADD HL,HL ADD HL,HL LD A,H JP RDBSCB RDBGOF: PUSH AF LD HL,(RDBPTR) LD A,(RDBCBL) LD C,A XOR A SRL C RRA SRL C RRA OR H LD H,A POP AF RET RDBREAD: PUSH HL PUSH DE LD DE,CBUF LD HL,(RDBPTR) ADD HL,DE LD A,(HL) POP DE POP HL RET RDBNEXT: PUSH BC PUSH HL LD HL,(RDBMPT) LD BC,(RDBPTR) INC BC BIT 6,B JR NZ,RDBNEXT1 RDBNEXT6: OR A SBC HL,BC JR Z,RDBNEXT2 RDBNEXT4: LD (RDBPTR),BC OR A RDBNEXT5: POP HL POP BC RET RDBNEXT2: PUSH AF LD HL,RDBMCB LD A,(RDBCBL) CP (HL) JR Z,RDBNEXT3 RDBNEXT8: POP AF JR RDBNEXT4 RDBNEXT3: POP AF SCF JR RDBNEXT5 RDBNEXT1: PUSH AF LD A,H OR L JR NZ,RDBNEXT7 LD HL,RDBMCB LD A,(RDBCBL) INC A CP (HL) JR Z,RDBNEXT3 RDBNEXT7: LD A,(RDBCBL) INC A CALL RDBSCB LD B,0 JR RDBNEXT8 RDBPREV: PUSH HL LD HL,(RDBPTR) DEC HL BIT 7,H JR NZ,RDBPREV1 RDBPREV3: LD (RDBPTR),HL POP HL OR A RET RDBPREV1: PUSH AF LD A,(RDBCBL) OR A JR Z,RDBPREV2 DEC A CALL RDBSCB LD HL,03FFF POP AF JR RDBPREV3 RDBPREV2: POP AF SCF POP HL RET COMPOF: LD A,C EXX CP C EXX RET NZ LD A,H EXX CP H EXX RET NZ LD A,L EXX CP L EXX RET COMPW: CALL COMPOF RET Z RET C EXX PUSH BC PUSH HL ADD HL,DE JR NC,COMPW1 INC C COMPW1: CALL COMPOF POP HL POP BC EXX CCF RET NC XOR A RET SCANW: PUSH AF SCANW2: CALL COMPW JR NZ,SCANW1 POP AF JP KBDNUL SCANW1: CALL WIEW1 EXX JR C,SCANW4 SCF ADC HL,DE JR NC,SCANW3 INC C SCANW3: EXX CALL CGNEXT JR SCANW2 SCANW4: SBC HL,DE JR NC,SCANW5 DEC C SCANW5: EXX CALL CGPREV JR SCANW2 RDPTST: PUSH IY LD IY,RDBMCB LD A,C RLC H RLA RLC H RLA RRC H RRC H CP (IY+0) JR NZ,RDPTST1 LD A,H AND 03F CP (IY+2) JR NZ,RDPTST1 LD A,L CP (IY+1) RDPTST1: POP IY RET KODCNV: PUSH BC LD BC,(HOKOD) LD B,C INC B DJNZ KODCNV1 KODCNV2: POP BC RET KODCNV1: DJNZ KODCNV3 AND 07F JR KODCNV2 KODCNV3: DJNZ KODCNV4 CALL LATTOKOI JR KODCNV2 KODCNV4: CALL KAMTOKOI JR KODCNV2 CNVKOD: PUSH BC LD BC,(HOKOD) LD B,C INC B DJNZ CNVKOD1 CNVKOD2: POP BC RET CNVKOD1: DJNZ CNVKOD3 AND 07F JR CNVKOD2 CNVKOD3: DJNZ CNVKOD4 CALL KOITOLAT JR CNVKOD2 CNVKOD4: CALL KOITOKAM JR CNVKOD2 PUTCNV: PUSH AF PUSH BC CALL KODCNV LD C,A CALL WHEREX CP 050 LD A,C CALL NZ,PUTCHAR CALL Z,SETCHAR POP BC POP AF RET OLDIR: PUSH AF OLDIR1: LD A,(HL) OR A JR Z,OLDIR2 LD (DE),A INC HL INC DE JR OLDIR1 OLDIR2: POP AF RET CLRALL: CALL PUAL CALL GETMAX LD DE,0101 EX DE,HL CALL SETWIN CALL FARPAN JP CLRSCR