; L]NGRAD.ASM ; Anders Franz`n <5258> ; Stockholm november 1985 ; Programmet m|jligg|r l{sandet av fil som har ; rader som {r l{ngre {n 120 tecken. Det g}r ; ocks} bra att skriva LOAD PROGNAMN och l{sa ; in ett program som har f|r l}nga rader. ORG 251:0 ; Placera initieringsrutinen i ; en kassettbuffert, rutinen ; beh|vs ju bara en g}ng. START LD A,192 LD (253:113),A ; Markera DOS-buffertarna 3-5 LD (253:129),A ; som upptagna LD (253:145),A LD HL,(254:10) LD (L11),HL ; Spara gamla enheter LD HL,(253:58) ; Adress till flexskivehopptabell LD A,(HL) ; Tag f|rsta byten i tabellen LD DE,JP1 ; Plats f|r ny hopptabell LD BC,27 ; Hopptabellen best}r av 27 bytes LDIR ; Kopiera flexskivehopptabell LD HL,3:164 LD C,27 LDIR ; Kopiera kassetthopptabell LD HL,INLINE LD (JP1+10),HL ; Ny INLINE-rutin till hopptabellerna LD (JP2+10),HL LD HL,OPEN ; Ny OPEN-rutin f|r flexskiva LD (JP1+1),HL LD HL,L1 ; Pekar p} flexl{nkar CP 195 ; Finns flexskiveenhet? JRZ S2 ; Ja, hoppa LD HL,INLINE LD (254:39),HL ; S{nk stacken LD HL,L10 ; Pekar p} kassettl{nkar S2 LD (254:10),HL ; L{gg nya enhetsl{nkarna i enhetslistan JP 0:198 ; Hoppa till ROM och g|r NEW ORG 248:0 ; Ny INLINE-rutin f|r att klara l}nga rader INLINE EX DE,HL ; DE pekar dit text skall placeras PUSH IX ; Spara IX p} stacken LD IX,4 ADD IX,SP ; IX pekar p} v{rdet efter IX p} stacken I1 LD L,(IX+0) LD H,(IX+1) INC IX INC IX AND A SBC HL,DE ; [r det adressen dit texten skall placeras? JRNZ I1 ; Nej, leta vidare (hittar alltid!) LD DE,BUFFER LD (IX-2),E ; L{gg ner ny adress till rad i stacken LD (IX-1),D POP IX ; ]terst{ll IX LD (IX+13),1 LD L,(IX+10) LD H,(IX+11) ; Aktuell position i buffert LD C,255 ; Max antal tecken att l{sa in I2 LD A,(HL) CP 3 JRZ EOT ; Hoppa om bufferten slut CP 9 JRZ TAB ; Hoppa om AND A SCF RETZ ; Retur om EOF LD A,186 ; ERR 58 RETM ; Retur om otill}tet tecken LD A,(HL) LD B,0 LDI JPPO 9:233 ; ERR 20 om f|r m}nga tecken inl{sta CP 13 JRNZ I2 ; Forts{tt om inte LD (IX+10),L ; Spara ny position i buffert LD (IX+11),H RET EOT PUSH BC PUSH DE CALL 8:153 ; L{s in ny buffert POP DE POP BC JR I2 TAB INC HL LD B,(HL) ; Antalet space INC HL LD A,C SUB B JPC 9:233 ; Hoppa om f|r l}ng rad JPZ 9:233 LD C,A LD A,32 T1 LD (DE),A ; L{gg ner space INC DE DJNZ T1 ; Upprepa JR I2 ; Ny OPEN-rutin f|r att klara UNSAVE, KILL och NAME p} flexskiva. OPEN LD HL,17 ADD HL,SP PUSH AF LD A,(HL) ; A = h|ga byten i returadressen CP 96 JRC OPEN1 ; Hoppa om ej anrop fr}n DOS CP 113 JRNC OPEN1 ; Hoppa om ej anrop fr}n DOS LD L,(IX+3) LD H,(IX+4) ; Tag adress till hopptabell DEC HL LD A,(HL) ; Tag sista tecknet i enhetsnamnet LD HL,253:58 ; Peka p} adress till DOS-JP LD (IX+3),L ; Byt ut den gamla hopptabellen mot ny LD (IX+4),H DEC HL LD (HL),A ; Spara sista tecknet i enhetsnamnet OPEN1 POP AF LD HL,(253:58) ; Adress till flexskivehopptabell JP (HL) ; Hoppa till ordinarie OPEN-rutinen L1 DEFW L2,' ',JP1 L2 DEFW L3,'DR0',JP1 L3 DEFW L4,'DR1',JP1 L4 DEFW L5,'DR2',JP1 L5 DEFW L6,'DR3',JP1 L6 DEFW L7,'DR4',JP1 L7 DEFW L8,'DR5',JP1 L8 DEFW L9,'DR6',JP1 L9 DEFW L10,'DR7',JP1 L10 DEFW L11,' ',JP2 L11 DEFW 0,'CAS',JP2 JP1 DEFS 27 JP2 DEFS 27 BUFFER DEFS 256 SLUT EQU $