; TEXT-EDITOR 8/8 ; Anders Franz`n <5258> ; Stockholm april 1985 ; Uppdaterad juli 1985 ; Konverterad till FD8,DOS 3.0 ; Bo Engborg 851020 18.20 ; BUFF3 EQU 254:224 ORG 248:0 DOS-buffert fyra DEFM "4 CAT FD8 " 13 tkn JP LIBD1 LIBD1 LD HL,LIBD5 LD C,LIBD6-LIBD5 CALL CUX Skriv drivefr}ga LIBD2 CALL 0:2 H{mta tangent LD HL,LIBD9 LD BC,8 CPIR Siffra 0-7 ? JRZ LIBD3 Ja, hoppa LD C,8 CPIR Shift + siffra ? RETNZ Nej, fel XOR A Filstorlek visas LIBD3 LD (255:220),A Spara flagga LD E,C Vald drive CALL LIB Visa LIB JRZ LIBD1 Hoppa om okey LD HL,LIBD6 LD BC,LIBD7-LIBD6 BIT 7,A JRNZ LIBD4 LD HL,LIBD7 LD C,LIBD8-LIBD7 CP 16 JRZ LIBD4 LD HL,LIBD8 LD C,LIBD9-LIBD8 LIBD4 CALL CUX Skriv feltext JR LIBD2 Upprepa LIBD5 DEFM "\NSKAD DRIVE ?" LIBD6 DEFM "SKIVAN EJ KLAR." LIBD7 DEFM "SKIVAN D]LIGT " DEFM "FORMATERAD." LIBD8 DEFM "FEL P] SKIVAN." LIBD9 DEFM '76543210' DEFM '/&%$#"!=' ; LIB ; Subrutin som visar skivans inneh}ll ; i den drive som anges av E-registret. ; Z-flaggan s{tts om det gick bra. ; Om det inte gick bra finns felkoden ; fr}n DOS i register A. ; LIBL[S l{ser en sektor p} skivan. LIBL[S PUSH DE PUSH BC PUSH HL CALL 96:102 L{s sektor POP HL POP BC POP DE LD A,(253:21) AND A Felkod > 0 ? RET LIB LD A,E Drive-nummer AND 7 Maska bort fel LD (253:1),A Selektera drive ADD 48 G|r ASCII LD (LIB20),A L{gg i textrad LD DE,0:99 Sp}r 0,sektor CALL LIBL[S L{s sektor RETNZ Felkod >0 LD HL,245:0 Inl{st sektor LD E,L LD D,L DE <-- noll LD B,160 Antal bytes LIB1 LD A,(HL) Tag byte INC HL AND A Inneh}llet = 0 ? JRNZ LIB2 Nej, hoppa PUSH HL LD HL,32 ADD HL,DE \ka antalet EX DE,HL sektorer med 32 POP HL LIB2 DJNZ LIB1 Upprepa LD (255:200),DE Ant sektorer LD DE,0:98 Sp}r 0 sektor CALL LIBL[S L{s sektor RETNZ Felkod > 0 LD HL,245:0 Inl{st sektor LD E,L LD D,L DE <-- noll LD C,160 Antal byte LIB3 LD B,8 ]tta bitar LIB4 RR (HL) Testa bit JRC LIB5 Upptagen INC DE \ka r{knare INC DE INC DE INC DE LIB5 DJNZ LIB4 Repetera INC HL N{sta byte DEC C Slut ? JRNZ LIB3 Nej, upprepa LD (255:202),DE Lediga sekt LD HL,245:239 Kopiera vilka LD DE,255:204 sektorer i LD C,16 biblioteket LDIR som {r anv{nda LD DE,73 DE <-- noll 0,9 CALL LIBL[S L{s sektor RETNZ Felkod > 0 LD HL,LIB19 LD C,LIB21-LIB19 T|m sk{rm, CALL 0:11 skriv "Drive:x" LD HL,LIB21 LD C,LIB22-LIB21 CALL 0:11 Skriv "Volym:" LD HL,245:3 LD BC,8 Max 8 tecken CALL 0:11 Skriv volymnamn LD A,'.' LD (DE),A INC DE LD HL,245:11 Extension LD BC,3 CALL 0:11 LIB8 CALL 7:66 Skriv CR+LF LD DE,0 Sp}r 0 sektor 0 LIB9 LD B,1 Fil p} ny rad PUSH DE LD HL,255:204 LD D,0 ADD HL,DE Sl} i tabell LD A,E CP 8 JR NC,LIB9A LD A,16 LD (MODER),A LD A,(HL) CP 2 JP C,LIB18 JR LIB9B LIB9A LD A,0 LD (MODER),A LD A,(HL) [r sektorn CP 1 anv{nd ? JPC LIB18 Nej, tag n{sta LIB9B LD D,0 LD A,E SLA E SLA E SLA E LD HL,128 AND 3 ADD HL,DE EX DE,HL LD H,0 LD L,A ADD HL,DE EX DE,HL CALL LIBL[S L{s sektor POP DE RETNZ Felkod > 0 PUSH DE PUSH BC EX DE,HL PUSH HL CALL 7:66 LD HL,TEXTSC LD BC,12 CALL 0:11 POP HL CALL 24:98 LD A,(MODER) LD H,245 LD L,A Biblioteket LD D,252 LD E,A Kassettbuffer 2 PUSH DE PUSH HL LD B,0 LD C,A LD HL,256 AND A SBC HL,BC AND A PUSH HL POP BC POP HL LDIR bibliotekssektor POP HL Filbeskrivning POP BC R{knaren LIB10 LD A,(254:7) AND A CTRL-C ? LD A,0 JPNZ 0:18 Ja, stopp INC HL LD A,(HL) LD E,A DEC HL LD A,(HL) OR E JPZ LIB17 Nej, hoppa INC A JPZ LIB17 DJNZ LIB12 Raden ej full CALL 7:66 Skriv CR+LF LD A,(1:216) CP 40 40-tknsk{rm ? LD A,(255:220) JRNZ LIB11 Nej,hoppa LD B,2 Tv} filnamn/rad AND A Filstorlek ? JRZ LIB12 Ja, hoppa LD B,3 Tre filnamn/rad JR LIB12 LIB11 LD B,4 Fyra filnamn/rad AND A Filstorlek ? JRZ LIB12 Ja, hoppa LD B,5 Fem filnamn/rad LIB12 PUSH BC Spara r{knare PUSH HL Spara beskrivn LD DE,4 ADD HL,DE Peka p} filnamn LD BC,8 CALL 0:11 Skriv namn PUSH HL LD HL,LIB22 LD C,1 Obs att B=0 CALL 0:11 Skriv punkt POP HL LD C,3 CALL 0:11 Skriv extension INC (IY-34) \ka mark|rkolumn POP HL Filbeskrivning POP BC R{knare LD A,(255:220) Ska filstorlek AND A visas ? JRNZ LIB17 Nej, hoppa PUSH HL Spara filbeskr LD D,(HL) Sp}r segmrecord INC HL LD E,(HL) CALL LIBL[S L{s segmrecord POP HL Filbeskrivning POP DE ]terst{ll stack RETNZ Felkod > 0 PUSH DE Spara sektor PUSH BC Spara r{knare PUSH HL Spara filbeskr LD DE,245:4 Segmbeskrivning LD HL,0 R{knare f|r LD B,L filstorleken LIB13 LD A,(DE) INC A Fler segment ? JRZ LIB14 Nej, hoppa INC DE Skippa sp}radr LD A,(DE) INC DE AND 31 Maska fram antal INC A sektorer i segm LD C,A ADD HL,BC \ka r{knare JR LIB13 N{sta segment LIB14 AND A SLA L RL H SLA L RL H LD A,H AND A Tal > 255 ? JRNZ LIB16 Ja, hoppa LD A,L CP 100 Tal >= 100 ? JRNC LIB16 Ja, hoppa PUSH HL Spara talet LD HL,LIB25 Mellanslag LD BC,2 CP 10 Tal < 10 ? JRC LIB15 Ja, hoppa DEC C LIB15 CALL 0:11 Skriv space POP HL ]terst{ll tal LIB16 CALL SKRIVTAX Skriv storlek LD HL,LIB25 Mellanslag LD C,3 Obs att B=0 CALL 0:11 Skriv space POP HL Filbeskrivning POP BC R{knare LIB17 LD A,L ADD 16 N{sta fil i LD L,A biblioteket AND A Sektor slut ? JPNZ LIB10 Ja, tag ny LIB18 POP DE Sektor-nummer PUSH DE JR C,LIB18A BIT 0,E JR Z,LIB18A LD HL,TEXTCR LD BC,17 CALL 0:11 Skriv tryck ret CALL 0:2 Getch LD HL,LIB21 LD BC,1 CALL 0:11 LIB18A POP DE INC DE LD A,E CP 16 Sektorer slut ? JP C,LIB9 Nej, l{s n{sta CALL 7:66 Skriv CR+LF CALL 7:66 En g}ng till LD HL,(255:202) CALL SKRIVTAX Skriv lediga LD HL,LIB23 LD C,LIB24-LIB23 CALL 0:11 Skriv " av " LD HL,(255:200) CALL SKRIVTAX Skriv totala LD HL,LIB24 LD C,LIB25-LIB24 CALL 0:11 XOR A Felkod noll RET LIB19 DEFB 12,27,61,32+3,32+0 DEFM "LIB",13,10 DEFM "=====" DEFB 27,61,32+7,32+0 DEFM "Drive: " LIB20 DEFM "x" LIB21 DEFM 13,10,"Volym: " LIB22 DEFM "." LIB23 DEFM " av " LIB24 DEFM " sektorer kvar.",10,13 LIB25 DEFM " " CUX LD B,0 PUSH HL PUSH BC LD C,8 LD HL,CUX1 CALL 0:11 POP BC POP HL CALL 0:11 RET CUX1 DEFB 7,27,61,32+23,32+0 DEFM "* " SKRIVTAX LD DE,BUFF3 PUSH DE LD A,(24:96) Kolla checksumma CP 175 PUSH AF CALLZ 24:96 \vers{tt till POP AF ASCII CALLNZ 24:98 EX DE,HL POP DE AND A Ber{kna l{ngd SBC HL,DE p} str{ngen LD C,L LD B,H EX DE,HL CALL 0:11 Skriv ut str{ng RET MODER DEFS 6 TEXTCR DEFM 13,10,"Tryck -Return- " TEXTSC DEFM 13,10,"Libsector " LIBEND EQU $ END