;SORD m.5, obsluha disketove jednotky z nastavby modulu CP/M (nekompatibilni s FD-5) ;=================================================================================== ;Neprilis okomentovany zdrojovy text (on by se totiz do EDTASMu uz jinak nevesel) ; ;(C) 1991-2001, LZR Soft, Kladno, Czech Republic ; ;BASIC-F UPRAVENY PRO WD2797B ;BASIC-W;5 ; 17-APR-92 ; 18:27 ;Napsal Roman Stec (C) ROS, 24-NOV-91 .RADIX 16T ORG 1FF1 DI SUM EQU 1B FD525 EQU 0 IFT FD525 CMD EQU 80 DON EQU 10 DOF EQU 40 ELSE CMD EQU 78 DON EQU 01 DOF EQU 00 ENDC TRK EQU CMD+1 SCT EQU CMD+2 DTA EQU CMD+3 DRV EQU CMD+4 FNDATA EQU 73D1 ORG 73D2 SECALB DS 1 SECTRK DS 1 ADRBUF DS 2 ADRBIT DS 2 DIRALB DS 1 DRIVER DS 1 PROHID DS 1 TRACK DS 1 SECTOR DS 1 SIDE DS 1 POCSEC DS 1 POCDIR DS 1 NUMALB DS 1 FLAG DS 1 SECFYZ DS 1 HEADR DS 2 INFO DS 1 PUTGET DS 1 COUNT DS 1 COUNT1 DS 1 LENGHT DS 2 ADRHLA DS 2 CISHLA DS 1 ORG 2021 DB 'W' IFF SUM ORG 2040 DB 0,0,0 ENDC ORG 204A DW INIDSK ORG 2685 CALL READY RET C LD DE,0F401 CALL 13DD LD A,5 LD (73CB),A LD DE,BOOT JP 45E4 PRESUN LD DE,73F3 PRESU1 LD BC,9 PUSH DE LDIR LD A,3F LD (DE),A POP HL RET Z26A8 IFF Z26A8=26A8 .PRINTX <>26A8 ENDC ORG 26AD DW INIDSK ORG 27E8 DW ERR130 ORG 2822 DW FX DW ERR130 ORG 2834 DW ERR130 ORG 56C6 DW REGV ORG 56C9 DW REGI ORG 56CC DW REGO ORG 5D07 DW 5936 ORG 5D17 DW 5C75 ORG 5D1D DW 59E8 ORG 5DF2 DW READY ORG 5DFF DB 0,0,0 ORG 5E74 DW READY ORG 60D3 DW PRTPRT ORG 60E2 DM 'PRT' DW 6137 ;FREE DB 00 ;FREE FUNGUJ PUSH AF CALL READY LD A,23T JP C,ERRA POP AF JP FUNKCE Z60F5 IFF Z60F5=60F5 .PRINTX <>60F5 ENDC ORG 610B DB 10 DW 73CE DB 'FD',0 DW OPEN,CLOSE,PRINT,PUT,INPUT,GET,5EE5,6146 ORG 67AC RET ORG 6A39 DW XSKIP CALL ZESKIP ORG 6A4D FIND LD HL,XFIND ZESKIP CALL 5D41 CALL NAMEXT LD HL,UVCR JP 5D41 NAMEXT RST 08 SET 1,(HL) LD HL,7120 PUSH HL INC HL LD B,9 CALL 5D43 CALL 6B1C POP HL LD B,(HL) LD HL,PRIP CALL TYPE LD B,3 JP 5D43 TYPE PUSH HL HLE LD A,(HL) INC HL CP B JR Z,NAL INC A JR Z,NAL INC HL INC HL INC HL JR HLE NAL EX (SP),HL POP HL RET UVCR DB '"',0D FUNKCE LD C,DTA LD HL,(ADRBUF) LD B,0A DI OUT (CMD),A DJNZ $ RET Z6A99 IFF Z6A99=6A99 .PRINTX <>6A99 ENDC ;PUVODNI RUTINY ORG 44ED REG2 RST 20 CCF RET C PUSH DE CP 0CE JR NZ,REG3 RST 28 REG3 RST 20 CP 0CE POP DE SCF RET Z JP 56A4 BOOT DB 6,'*BOOT*' Z4506 IFF Z4506=4506 .PRINTX <>4506 ENDC ORG 517B INPUT CALL TINP INP1 CALL VYZVED RET C OR A RET Z DEC B LD (HL),A INC HL CP 0D RET Z INC B DJNZ INP1 OR A RET Z518F IFF Z518F=518F .PRINTX <>518F ENDC ORG 536B XFIND DB 'Find ' UVOZ DB '"',0 XSKIP DB 'Skip "',0 Z5379 IFF Z5379=5379 .PRINTX <>5379 ENDC ORG 5DA6 JP KILD SETREA LD B,88 DB 21 SETWRT LD B,0A8 LD A,(SECFYZ) OUT (SCT),A LD A,(SIDE) SLA A OR B RET KEY CALL 8AC RET C CP 20 JR NZ,KE2 KE3 CALL 8AC JR C,KE3 KE2 CP 0D RET PRAZDN DB 0E5,3F Z5DCC IFF Z5DCC=5DCC .PRINTX <>5DCC ENDC ORG 6121 SPC LD HL,(ADRBIT) LD B,20 LD D,0 SPA3 PUSH BC LD B,8 LD A,(HL) SPA2 RRCA JR C,SPA1 INC D SPA1 DJNZ SPA2 INC HL POP BC DJNZ SPA3 RET Z6137 IFF Z6137=6137 .PRINTX <>6137 ENDC ORG 615C REGO DI LD (73F0),SP LD SP,726A PUSH HL PUSH DE PUSH BC PUSH AF JR REG4 REGI DI LD (73F0),SP LD SP,7262 POP AF POP BC POP DE POP HL REG4 LD SP,(73F0) EI RET CIN LD HL,INFO BIT 6,(HL) LD A,160T CALL NZ,308E LD HL,RESET LD (7025),HL CALL READY CALL C,OPN3 CALL C,3080 RET NEXT CALL RESECT RET C CALL DALSI OR A RET Z619F IFF Z619F=619F .PRINTX <>619F ENDC ORG 67AD HLAVIC LD HL,FLAG LD (HL),1 LD HL,7121 CALL PRESUN LD (HEADR),HL CALL HLEDEJ JR C,OPN2 OR A RET OPEN LD E,A OPN0 LD A,(INFO) RLCA JR C,OPN1 LD HL,7121 INC (HL) DEC (HL) LD A,132T SCF RET Z LD A,(708E) AND 3 SET 6,A LD (INFO),A XOR A LD (CISHLA),A OPN1 LD HL,DATA PUSH DE LD DE,PUTGET LD BC,7 LDIR POP DE LD A,8 CALL PRIKAZ LD HL,(511A) OR A SBC HL,DE JR Z,OPNINP LD HL,(511C) OR A SBC HL,DE JR Z,OPNOUT LD A,105T OPN2 SCF OPN3 PUSH AF CALL CLS6 POP AF RET OPNINP LD A,(7120) BIT 2,A JR Z,OI1 LD A,40 LD (FNDATA),A OI1 CALL HLAVIC RET C LD A,170T JR NZ,OPN2 LD A,(INFO) RLCA JR NC,OI3 OI2 LD C,1 CALL HLE7 OR A LD A,152T JR NZ,OPN2 PUSH HL PUSH DE LD DE,0F ADD HL,DE LD A,(HL) AND 3F LD HL,CISHLA CP (HL) POP DE POP HL JR NZ,OI2 OI3 DEC HL LD DE,7140 LD BC,20 PUSH DE PUSH BC LDIR POP BC POP HL LD DE,7120 PUSH DE LDIR LD A,(CISHLA) OR A CALL Z,6A4D POP DE LD A,(DE) CALL 48D2 LD C,A LD A,(FNDATA) AND C LD A,106T NAOPN2 JR Z,OPN2 LD A,(7140) BIT 3,A LD A,0 JR Z,OI4 INC A OI4 JR OO3 OPNOUT XOR A LD HL,FLAG LD (HL),A IN A,(CMD) BIT 6,A JP NZ,KIL1 CALL CREATE CALL HLEDEJ RET C LD HL,INFO BIT 7,(HL) JR NZ,OO1 CALL HLAVIC RET C LD A,172T JR Z,NAOPN2 CALL SPC LD HL,(712C) PUSH DE CALL DELKA POP AF CP L LD A,154T JP C,OPN2 OO1 CALL MISTO OR A LD A,155T JP NZ,OPN2 LD A,(7120) BIT 2,A LD A,0C JR NZ,OO2 LD A,08 OO2 LD BC,20 LD HL,7120 LD DE,7140 LDIR LD HL,0 LD (7151),HL OO3 LD HL,INFO OR (HL) LD (HL),A SET 7,(HL) RET DOBUFF PUSH AF CALL TEST LD DE,310A CALL Z,OPN0 JR C,DOB5 LD A,(COUNT) OR A JR NZ,DOB1 INC A LD (COUNT),A CALL VOLNO JR C,DOB4 PUSH AF LD D,0 CALL SETBIT CALL BLOK LD HL,(ADRHLA) POP AF LD (HL),A INC HL LD (ADRHLA),HL DOB1 LD A,(PUTGET) CALL PRICTI POP AF LD (HL),A LD HL,(LENGHT) INC HL LD (LENGHT),HL LD A,E INC A CP 80 LD (PUTGET),A JR Z,DOB3 DOB2 OR A RET DOB3 CALL WRSECT RET C CALL DALSI CALL NAPLN RET NC XOR A LD (HL),A LD HL,COUNT1 DEC (HL) JR NZ,DOB2 CALL CLS1 JR DOB2 DOB4 LD A,154T DOB5 POP HL RET ZBUFF CALL TEST LD A,4 LD D,22 CALL Z,OPEN RET C LD A,(COUNT) OR A JR NZ,ZBU1 INC A LD (COUNT),A LD HL,(ADRHLA) LD A,(HL) INC HL LD (ADRHLA),HL LD (NUMALB),A CALL BLOK ZBU1 LD A,(PUTGET) OR A PUSH AF CALL Z,NEXT JR C,DOB5 POP AF CALL PRICTI LD B,(HL) LD A,(7140) BIT 2,A JR Z,ZBU2 LD HL,(714C) DEC HL LD A,L OR H LD (714C),HL LD A,152T SCF RET Z ZBU2 INC E LD A,E CP 80 LD (PUTGET),A LD A,B JR NZ,ZBU3 CALL NAPLN LD A,B RET NC XOR A LD (HL),A LD HL,COUNT1 DEC (HL) LD A,B JR NZ,ZBU3 PUSH BC CALL CLS1 LD HL,CISHLA INC (HL) POP AF ZBU3 OR A RET NAPLN XOR A LD (PUTGET),A LD A,(SECALB) LD HL,COUNT INC (HL) CP (HL) RET SYSVAR DB 18T,58T DW 7751,760D DB 2,DON,0 SYSKON DATA DB 0,0,15T DW 0000,7151 Z69BD IFF Z69BD=69BD .PRINTX <>69BD ENDC ORG 6BF3 PRTPRT LD A,(705A) LD E,A TIS1 LD A,(HL) INC HL OR A RET Z CP 0D JR Z,TIS4 CP 20 JR NC,TIS2 LD C,A LD A,(7094) BIT 1,A LD A,C JR NZ,TIS3 TIS2 CALL 1799 TIS3 CALL 1784 DEC B JR NZ,TIS1 LD A,D OR A RET TIS4 CALL 1799 DEC B OR A RET REGV LD B,04 REG1 PUSH BC PUSH HL LD E,(HL) INC HL LD D,(HL) CALL REG2 POP HL LD (HL),E INC HL LD (HL),D INC HL POP BC DJNZ REG1 RET INIDSK LD HL,SYSVAR LD DE,SECALB LD BC,SYSKON-SYSVAR LDIR RET RESET CALL OPN2 LD HL,26A8 LD (7025),HL JP (HL) TEST LD HL,INFO BIT 7,(HL) SET 7,(HL) RET TINP LD A,(INFO) BIT 3,A LD E,A RET Z JR ERR TOUT LD A,(INFO) LD E,A BIT 3,A RET NZ ERR CALL 3060 DELKA LD A,80 CALL DEL LD A,(SECALB) DEL CALL 151 OR A RET Z INC HL RET CREATE LD HL,(ADRBIT) PUSH HL LD BC,20 CALL 860 POP HL LD A,(DIRALB) LD B,A LD A,0FF CRE1 SLA A DJNZ CRE1 CPL LD (HL),A RET DALSI LD A,(SECTOR) INC A LD B,A LD A,(SECTRK) CP B LD A,B JR NC,DAL1 LD A,59 CALL PRIKAZ IN A,(TRK) LD (TRACK),A LD A,1 DAL1 LD (SECTOR),A JR STR BLOK LD A,(NUMALB) LD L,A LD A,(SECALB) CALL 1441 LD A,(SECTRK) CALL 151 INC A LD (SECTOR),A LD A,L INC A LD (TRACK),A LD A,(SECTOR) STR LD (SECFYZ),A LD HL,SIDE XOR A LD (HL),A LD A,(SECFYZ) LD B,A LD A,(SECTRK) SRL A CP B JR NC,SEEK INC (HL) SEEK LD A,(TRACK) OUT (DTA),A LD A,18 PRIKAZ LD B,0A OUT (CMD),A DJNZ $ PRI2 IN A,(CMD) BIT 0,A JR NZ,PRI2 AND 98 RET Z SCF RET NADISK CALL FUNGUJ NAD1 IN A,(CMD) RRCA JR NC,NAD2 RRCA JR NC,NAD1 OUTI JR NAD1 NAD2 IN A,(CMD) EI OR A JR NZ,ERRHAN LD A,80 CP B RET Z LD A,8 ERRHAN LD B,A LD A,207T BIT 2,B RET NZ DEC A BIT 3,B RET NZ DEC A BIT 4,B RET NZ LD A,214T OR A RET ZDISKU CALL FUNGUJ ZDI1 IN A,(CMD) RRCA JR NC,NAD2 RRCA JR NC,ZDI1 INI JR ZDI1 RESECT LD E,5 RES1 CALL SETREA CALL ZDISKU RET Z DEC E JR NZ,RES1 RES2 SCF RET WRSECT LD E,5 WRS1 CALL SETWRT CALL NADISK RET Z DEC E JR NZ,WRS1 JR RES2 VYZVED PUSH HL PUSH BC PUSH DE CALL ZBUFF OBNOV POP DE POP BC POP HL RET ULOZ PUSH HL PUSH BC PUSH DE CALL DOBUFF JR OBNOV MISTO LD HL,FLAG LD (HL),1 LD HL,PRAZDN LD (HEADR),HL HLEDEJ XOR A LD (NUMALB),A CALL BLOK LD A,(DIRALB) LD (POCDIR),A HLE3 LD A,(SECALB) LD (POCSEC),A HLE2 CALL RESECT RET C LD A,(FLAG) OR A JR Z,HLE4 DEC A JR Z,HLE5 CALL SEZNAM RET Z HLE6 CALL DALSI LD HL,POCSEC DEC (HL) JR NZ,HLE2 INC HL DEC (HL) JR NZ,HLE3 LD A,1 OR A RET HLE4 CALL BITMAP JR HLE6 HLE5 LD C,0 HLE7 CALL CMP RET NC JR HLE6 CMP LD A,C OR A JR NZ,POR1 LD B,4 LD DE,(HEADR) LD HL,(ADRBUF) INC HL HLE1 PUSH DE CALL 1765 POP DE LD A,0 RET NC POR1 PUSH DE LD DE,20 ADD HL,DE POP DE DJNZ HLE1 SCF RET BITMAP LD HL,(ADRBUF) LD B,4 BI1 INC HL LD A,0E5 CP (HL) JR Z,BI5 BI2 LD DE,10 ADD HL,DE LD D,0 PUSH BC LD B,0F BI3 LD A,(HL) INC HL CALL SETBIT DJNZ BI3 POP BC BI4 DJNZ BI1 RET BI5 LD DE,1F ADD HL,DE JR BI4 SETBIT LD C,A SRL A SRL A SRL A LD E,A LD A,C AND 07 INC A PUSH BC LD B,A LD A,80 SB1 RLCA DJNZ SB1 PUSH HL LD HL,(ADRBIT) ADD HL,DE OR (HL) LD (HL),A POP HL POP BC RET VOLNO LD HL,(ADRBIT) LD E,0 VOL3 LD B,8 LD C,0 LD A,(HL) VOL2 RRCA JR NC,VOL1 INC C DJNZ VOL2 INC HL INC E LD A,E CP 20 JR C,VOL3 SCF RET VOL1 SLA E SLA E SLA E LD A,C ADD A,E OR A LD (NUMALB),A RET SEZNAM LD HL,(ADRBUF) LD B,4 SEZ2 PUSH BC PUSH HL INC HL LD A,(HL) DEC HL CP 0E5 JR Z,SEZ1 PUSH HL LD DE,10 ADD HL,DE LD A,(HL) AND 7F POP HL JR NZ,SEZ1 LD BC,0A LD DE,7120 LDIR LD HL,UVOZ CALL 6A50 SEZ1 CALL KEY POP HL POP BC RET Z LD DE,20 ADD HL,DE DJNZ SEZ2 OR A RET PRICTI LD D,0 LD E,A LD HL,(ADRBUF) ADD HL,DE RET CLOSE LD HL,INFO RES 6,(HL) CLS1 LD HL,INFO BIT 3,(HL) PUSH HL JR Z,CLS5 BIT 2,(HL) JR Z,CLS2 LD HL,(LENGHT) INC HL LD (714C),HL CLS2 LD A,(PUTGET) OR A CALL NZ,WRSECT LD HL,CISHLA LD A,(HL) INC (HL) OR A JR NZ,CLS22 LD HL,PROHID LD A,0C0 AND (HL) CLS22 LD (7150),A CALL MISTO EX DE,HL DEC DE LD HL,(ADRHLA) LD A,60 CLS3 CP L JR Z,CLS4 LD (HL),0 INC HL JR CLS3 CLS4 LD HL,7140 LD BC,20 LDIR CALL WRSECT CLS5 POP HL BIT 6,(HL) JR NZ,CLS7 CLS6 XOR A CALL PRIKAZ LD A,DOF OUT (DRV),A XOR A LD (INFO),A RET CLS7 RES 7,(HL) RET PRINT CALL TOUT PRIN1 LD A,(HL) INC HL OR A RET Z LD C,A CALL ULOZ RET C DEC B LD A,C CP 0D RET Z INC B DJNZ PRIN1 OR A RET PUT CALL TOUT PT1 BIT 0,E LD A,(HL) JR Z,PT2 RST 18 PT2 CALL ULOZ RET C INC HL DJNZ PT1 RET GET CALL TINP LD A,(708E) AND 2 OR E LD E,A GT1 CALL VYZVED RET C BIT 1,E JR NZ,GT4 BIT 0,E JR Z,GT3 RST 10 GT2 INC HL DJNZ GT1 OR A RET GT3 LD (HL),A JR GT2 GT4 BIT 0,E LD D,A JR Z,GT6 RST 18 GT5 CP D LD A,18T SCF RET NZ OR A JR GT2 GT6 LD A,(HL) JR GT5 SECFRE XOR A LD (FLAG),A CALL CREATE CALL HLEDEJ RET C CALL SPC LD L,D LD A,(SECALB) CALL 1441 EX DE,HL CALL 25FD LD HL,XFREE JP 5D41 FX CALL CIN LD HL,FLAG LD (HL),2 CALL HLEDEJ CALL NZ,SECFRE ERASTP CALL OPN3 RET NC DB 21 ;falesne LD - zakryje LD A,... a je kratsi nez JR ERRA ERR130 LD A,130T ERRA JP 308E KILD IN A,(CMD) BIT 6,A KIL1 LD A,202T JR NZ,KIL2 CALL CIN CALL HLAVIC LD A,170T KIL2 CALL NZ,OPN2 JR C,ERRA PUSH HL LD DE,7121 CALL PRESU1 POP HL PUSH HL LD BC,000F ADD HL,BC BIT 7,(HL) POP HL LD A,182T JR NZ,KIL2 KIL3 LD (HL),0E5 CALL WRSECT JR C,ERASTP CALL HLAVIC JR C,ERRA JR NZ,ERASTP JR KIL3 READY LD A,(DRIVER) OUT (DRV),A PUSH BC LD BC,0000 REA1 IN A,(CMD) RLCA JR NC,REA2 DEC BC LD A,B OR C JR NZ,REA1 LD A,DOF OUT (DRV),A SCF REA2 POP BC RET DB 0,0 ;FREE BYTE FOR USE XFREE DB ' sectors free',0D PRIP DB 0,'CMI',1,'CM',0,2,'MCN',3,'MC',0,4,'DAT',8,'VM',0,20,'BI',0,40,'FC',0,60,'BG',0,64,'LSG',78,'SC',0,80,'BF',0,82,'BFS' DB 84,'LSF',0A1,'EXT',0FF,'???' Z6FFE IFF Z6FFE=6FFE .PRINTX <>6FFE ENDC ORG 6FFE DEFB 2 DEFB SUM END