; TEXT-EDITOR 8/8 ; Anders Franz`n <5258> ; Stockholm april 1985 ; Uppdaterad juli 1985 BUFF2 EQU 254:224 ORG 248:0 DOS-buffert fyra DEFM "4 LIB " 13 tkn JP LIBD1 LIBD1 LD HL,LIBD5 LD C,LIBD6-LIBD5 CALL CUR 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:212),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 CUR 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:32*7 Sp}r 0 sektor 7 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,8 ADD HL,DE \ka antalet EX DE,HL sektorer med 8 POP HL LIB2 DJNZ LIB1 Upprepa LD (255:200),DE Ant sektorer LD DE,0:32*6 Sp}r 0 sektor 6 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 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,8 biblioteket LDIR som {r anv{nda LD E,C DE <-- noll LD D,C Sp}r 0 sektor 0 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,245:135 LD BC,120:0 Max 120 tecken LIB6 LD A,(HL) INC HL CP 10 Volymnamn slut ? JRZ LIB7 Ja, hoppa CP 13 JRZ LIB7 Ja, hoppa CP 32 Finns volymnamn? JRC LIB8 Nej, hoppa CP 128 JRNC LIB8 Nej, hoppa INC C \ka r{knare DJNZ LIB6 Upprepa om fler LIB7 LD A,C AND A Fanns volymnamn? JRZ LIB8 Nej, hoppa LD B,0 PUSH BC BC=l{ngd p} text LD HL,LIB21 LD C,LIB22-LIB21 CALL 0:11 Skriv "Volym:" POP BC LD HL,245:135 CALL 0:11 Skriv volymnamn LIB8 CALL 7:66 Skriv CR+LF LD DE,2:0 Sp}r 2 sektor 0 LD B,1 Fil p} ny rad LIB9 PUSH DE Spara sektor-nr LD HL,255:204 SRL E Dela E med 32 SRL E SRL E SRL E SRL E LD D,0 ADD HL,DE Sl} i tabell LD A,(HL) [r sektorn CP 2 anv{nd ? JPC LIB18 Nej, tag n{sta POP DE CALL LIBL[S L{s sektor RETNZ Felkod > 0 PUSH DE Spara sektor-nr PUSH BC Spara r{knare LD HL,245:16 Biblioteket LD DE,252:16 Kassettbuffer 2 LD BC,240 PUSH DE Kopiera denna 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 LD A,(HL) AND A Finns fil ? 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:212) 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:212) Ska filstorlek AND A visas ? JRNZ LIB17 Nej, hoppa PUSH HL Spara filbeskr LD D,(HL) Sp}r segmrecord INC HL LD A,(HL) AND 224 Ta bort status LD E,A Sektor*32 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 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 SKRIVTAL 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 LD A,E ADD 32 N{sta sektor LD E,A p} sp}r tv} AND A Sektorer slut ? JPNZ LIB9 Nej, l{s n{sta CALL 7:66 Skriv CR+LF CALL 7:66 En g}ng till LD HL,(255:202) CALL SKRIVTAL Skriv lediga LD HL,LIB23 LD C,LIB24-LIB23 CALL 0:11 Skriv " av " LD HL,(255:200) CALL SKRIVTAL 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 " " CUR LD B,0 PUSH HL PUSH BC LD C,8 LD HL,CUR1 CALL 0:11 POP BC POP HL CALL 0:11 RET CUR1 DEFB 7,27,61,32+23,32+0 DEFM "* " SKRIVTAL LD DE,BUFF2 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 LIBEND EQU $