1 REM Ins{nd av J|rgen Westman <5074> 1989-08-31 19.25.34 (KERMIT) ; TED8UFD ; TEXT-EDITOR 8/8 ; Anders Franz`n <5258> ; Stockholm april 1985 ; Uppdaterad juli 1985 ; [ndrad f|r UFD 830-850 drive 1989-08-31 <5074> J.Westman ; Visning av ufd drive = 4 ; Val av drive typ = D + 0,1,2 eller 3 ; 0 = 830 ; 1 = 832 ; 2 = 838 ; 3 = 850 TITLE UFDLIB 830-50 BUFF2 EQU 254:224 ORG 248:0 DOS-buffert fyra DEFM "4 LIB" MEL DEFM " " 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,5 CPIR Siffra 0-4 ? JRZ LIBD3 Ja, hoppa LD C,5 CPIR Shift + siffra ? jr z,libd21 and 223 cp 'D' ret nz call 2 ld hl,libd9+1 ld c,4 cpir RETNZ Nej, fel ld hl,drvtab-48 ld e,a ld d,b add hl,de ld a,(hl) call droff dec hl ld (hl),a jr libd1 libd21 XOR A Filstorlek visas LIBD3 LD (SFLG),A Spara flagga LD E,C Vald drive CALL LIB Visa LIB JRZ LIBD1 Hoppa om okey LD HL,LIBD6 LD BC,LIBD8-LIBD6 BIT 7,A JRNZ 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." LIBD8 DEFM "FEL P] SKIVAN." LIBD9 DEFM '43210' DEFM '$#"!=' drvtab DB 12 DB 8 DB 16 DB 4 ; 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 C,A CALL DRVSEL Selektera drive RET NZ LD A,C ADD 48 G|r ASCII LD (LIB20),A L{gg i textrad LD DE,(BITMAP) H{mta bitmap LD D,0 CALL LIBL[S L{s sektor RETNZ Felkod >0 LD HL,245:0 Inl{st sektor LD C,L Antal bytes i cluster map LIB1 LD A,(HL) Tag byte INC HL INC C AND A Inneh}llet = 0 ? JRNZ LIB1 Nej, forts{tt DEC C Justera r{knaren LIB2 LD A,(HL) INC HL INC C AND A Inneh}llet = 0 ? JRZ LIB2 Ja, forts{tt LD A,C LD (CLUBYTE),A Spara antal cluster bytes i map PUSH DE Spara bitmap sektor CALL SEKTFREE LD (TSEKT),HL Totalt antal sektorer POP DE DEC DE Peka p} map CALL LIBL[S L{s sektor RETNZ Felkod >0 CALL SEKTFREE LD (LSEKT),HL Lediga sektorer CALL LIBSCNT R{kna och s{tt antal anv{nda lib sektorer LD DE,0 Sp}r 0 sektor 0 CALL LIBL[S L{s sektor RETNZ Felkod > 0 LD HL,LIB19 LD BC,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 LD C,B Nollst{ll om inte CR eller LF 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,(UFDLIB) L{s f|rsta LIB sektor till DE LD B,1 Fil p} ny rad LIB9 CALL LIBL[S L{s sektor RETNZ Felkod > 0 PUSH DE Spara sektor LD HL,245:4 Biblioteket f|rsta eventuella filnamn LIB10 LD A,(254:7) AND A CTRL-C ? LD A,0 JPNZ 0:18 Ja, stopp LD A,(HL) AND A Finns fil ? JRZ LIB17 Nej, hoppa INC A JRZ LIB17 DJNZ LIB12 Raden ej full CALL 7:66 Skriv CR+LF LD A,(1:216) CP 40 40-tknsk{rm ? LD A,(SFLG) 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 filnamnpos 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,(SFLG) Ska filstorlek AND A visas ? JRNZ LIB17 Nej, hoppa PUSH BC R{knare PUSH HL Spara filnamnpos DEC HL LD D,(HL) L{ngd DEC HL LD E,(HL) EX DE,HL -> HL LIB16 LD A,5 5 teckens utfyllnad CALL SKRTALFI Skriv storlek LD HL,MEL Mellanslag LD C,1 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 CP 4 Sektor slut ? JRNZ LIB10 Ja, tag ny POP DE Sektor-nummer INC DE N{sta sektor LD HL,LIBSEKTS DEC (HL) JPNZ LIB9 Nej, l{s n{sta CALL 7:66 Skriv CR+LF CALL 7:66 En g}ng till LD HL,(LSEKT) CALL SKRIVTAL Skriv lediga LD HL,LIB23 LD C,LIB24-LIB23 CALL 0:11 Skriv " av " LD HL,(TSEKT) 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 SEKTFREE LD HL,245:0 Inl{st sektor LD E,L LD D,L DE <-- noll LD A,(CLUBYTE) LD C,A Antal bytes SEKTF LD B,8 ]tta bitar SEKTF1 RR (HL) Testa bit JRC SEKTF2 Upptagen INC DE \ka r{knare SEKTF2 DJNZ SEKTF1 Repetera INC HL N{sta byte DEC C Slut ? JRNZ SEKTF Nej, upprepa EX DE,HL HL inneh}ller antal tomma sektorer PUSH HL CALL DROFF E {r DR offset LD A,(253:1) AND 11100b LD E,A ADD HL,DE Peka p} cluster storlek LD A,(HL) AND 111111b Maska bort addressering POP HL SEKTF3 RET Z ADD HL,HL DEC A JR SEKTF3 LIBSCNT LD HL,245:255 Sista ev anv{nda lib + 1 LD B,17 Max antal anv{nda lib + 1 LIBSC1 DEC HL DEC B LD A,(HL) AND A JR Z,LIBSC1 Inget d{r, backa ett steg LD A,B LD (LIBSEKTS),A RET DRVSEL LD HL,16 LD (UFDLIB),HL PUSH AF LD A,L LD (LIBSEKTS),A POP AF CP 4 Kolla om UFD vald JR Z,DRVUFD CALL DROFF ADD E Add offset DRVSEL1 LD (253:1),A V{lj drive LD HL,BITMAP S{tt bitmap till 15, alla utom 830 LD (HL),15 AND 11100b Maska fram drive bas CP 12 Kolla om MOX drive JR NZ,DRVSEL2 Nej bitmap {r 15 LD (HL),7 S{tt till 7 f|r 830 DRVSEL2 XOR A Flagga f|r succe RET DRVUFD LD HL,606Dh L{s UFD offset CALL PTRVAL LD A,D Kolla om n}got offset OR E JR NZ,DRVUFD1 LD A,128 Skivan ej klar OR A RET DRVUFD1 LD (UFDLIB),DE INC HL LD A,(HL) A inneh}ller UFD drive JR DRVSEL1 DROFF LD HL,606Bh L{s DR offset PTRVAL LD E,(HL) INC HL LD D,(HL) EX DE,HL HL pekar p} v{rde LD E,(HL) INC HL LD D,(HL) DE inneh}ller eventuell v{rde RET 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 XOR A Skriv utan utfyllnad SKRTALFI PUSH AF Spara antal tecken 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 HL pekar p} str{ng POP AF Tillbaks med l{ngd AND A Nollst{ll flaggor PUSH HL Spara str{ng PUSH BC Spara l{ngd SUB C Tecken att fylla ut med JR C,SKRT1 Str{ng l{ngre {n givet JR Z,SKRT1 Noll l{ngd LD C,A LD HL,MEL CALL 0:11 Skriv ut SKRT1 POP BC POP HL CALL 0:11 Skriv ut str{ng RET CLUBYTE DS 1 TSEKT DS 2 LSEKT DS 2 SFLG DS 1 BITMAP DS 1 LIBSEKTS DS 1 UFDLIB DS 2 LIBEND EQU $