; ; ===================================== ; InGrafik.TXT Bo Engborg 851231 20.58 ; ===================================== ; PGMSTRT ORG 63232 JP BLOAD JP PRLOAD ; ALLHEAPA LD A,D OR E RET Z ; Noll bytes LD (ANTAL),DE ; Spara f|r }terst{llande LD A,(ALLHEAP) CP 205 JP Z,ALLHEAP ; Cs11273 JP ALLHEAP-9 ; Cs9913 ; NOHEAP LD BC,(ANTAL) LD HL,(HEAP) AND A SBC HL,BC ; Minska LD (HEAP),HL RET ; PRLOAD CALL LOAD INC B CALL PLOAD1 ; L{s in fil CALL NOHEAP RET ; PLOAD1 PUSH BC ; Antal rader i B LD HL,(MBUFFW) LD A,(HL) CP 80 LD A,14 ; Kod stor text JR NZ,PLOAD1A LD A,20 ; ]terst{ll stor text PLOAD1A LD (PRMOD),A ; Spara LD A,13 LD BC,119 CPIR PUSH HL PUSH IX LD HL,PRTXT LD A,1 LD B,127 CALL FIL\PPN ; Prep PR: POP IX POP HL POP BC ; HL-->Text som skall skrivas DEC B ; PLOAD3 PUSH IX LD IX,FILBESK PLOAD3A PUSH BC LD (IX+15),1 ; Radr{knare LD DE,TXTBUF1 LD A,(PRMOD) LD (DE),A INC DE XOR A LD (PRMOD+1),A ; Grafik off PLOAD4 LD A,(HL) INC HL CP 13 JP Z,PPRINT AND 127 CP 8 JR C,PLOAD4A CP 24 JR C,PLOAD4B CP 32 JR NC,PLOAD4C PLOAD4D LD A,32 JR PLOAD4C PLOAD4A LD A,0 LD (PRMOD+1),A ; Grafik off LD A,32 JR PLOAD4C PLOAD4B CP 17 JR C,PLOAD4D LD A,1 LD (PRMOD+1),A ; Grafik on LD A,32 PLOAD4C LD C,A LD A,(PRMOD+1) DEC A LD A,C JR NZ,PLOAD4E ; Ej grafmod CP 64 JR NC,PLOAD4F SET 7,A JR PLOAD4E PLOAD4F CP 96 JR C,PLOAD4E ADD A,96 ; PLOAD4E LD (DE),A INC DE INC (IX+15) JR PLOAD4 ; PPRINT LD (DE),A INC DE INC (IX+15) LD A,10 LD (DE),A INC DE INC (IX+15) LD B,0 LD C,(IX+15) PUSH HL LD HL,TXTBUF1 LD DE,PRINTFIL CALL FILCONTR POP HL POP BC DJNZ PLOAD3A CALL GETFIL2 ; Closefil POP IX RET ; INSTR[NG LD B,69 LD C,11110010B ; E$ CALL FIND RET NC ; Ej funnen? RST 16 DEFB 128+21 ; Hittar ej filen ; ; BLOAD CALL LOAD CALL BLOAD3 CALL NOHEAP RET ; LOAD CALL INSTR[NG PUSH IX CALL GETFIL LD B,(IX+15) DEC B POP IX RET ; BLOAD3 PUSH BC LD HL,(MBUFFW) LD A,(HL) ; Antal tecken CP 80 LD C,3 JR NZ,bload1a LD C,4 bload1a IN A,(C) ; Byt radl{ngd CALL FORMFILL LD A,13 LD BC,85 CPIR ; R{kna f|rbi f|rsta raden ,Data POP BC ; Antal rader JR BLOAD1 ; BLOAD4 PUSH BC CALL CRLF POP BC BLOAD1 PUSH BC PUSH HL LD BC,85 LD A,13 CPIR AND A LD HL,85 SBC HL,BC PUSH HL POP BC POP HL CALL VIDEOW LDIR POP BC DJNZ BLOAD4 RET ; ; ; ===================================== ; OPEN,PREPARE,CLOSE ; HL-->filnamn avsluta med CR ; ===================================== ; ; GETFIL XOR A LD B,127 CALL FIL\PPN LD (MBUFFW),HL LD (BUFADR1),HL ; GETFIL1 LD HL,(BUFADR1) LD BC,119 PUSH HL LD DE,INPUTFIL CALL FILCONTR POP HL JR C,getfil1a LD BC,0 LD A,13 CPIR LD (BUFADR1),HL INC (IX+15) JR GETFIL1 getfil1a AND A JR Z,GETFIL2 ; Slut p} filen POP IX LD (ERROR),A ; Felkod JP FELKOD ; Felkod i A (Basic) ; GETFIL2 LD DE,CLOSEF1 LD (IX+5),0 CALL FILCONTR RET ; ; ; FIL\PPN LD IX,FILBESK ; HL-->filnamn+cr LD (IX+15),0 ; R{knare antal rader LD (IX+2),B PUSH AF LD DE,OPENCMD CALL FILCONTR POP AF DEC A RET Z ; Kod f|r prepare ingen allokering LD HL,DOSBUF0+4 ; 245*256+5=storlek LD DE,0 ; R{knare FIL\PP1 LD A,(HL) INC HL INC A LD C,(HL) INC HL INC C ADD A,C JP Z,ALLHEAPA ; DE=antal sektorer LD A,C AND 31 INC A ADD A,D LD D,A JR FIL\PP1 ; ; ; ; FILCONTR PUSH HL ; Rutinadress i DE LD HL,FELKOD EX (SP),HL LD (RUNSTACK),SP PUSH HL LD HL,feljmp PUSH AF XOR A LD (MIY14),A ; Run Mode LD (MIY14+1),A ; Notrace LD (MIY30),HL POP AF LD HL,filctr1 EX (SP),HL PUSH DE RET filctr1 POP HL RET ; Inga fel feljmp DEFB 4 DEFB 0 DEFB 1 DEFB 145 ; Basic-return FELKOD LD A,(MIY34) LD (ERROR),A LD SP,(RUNSTACK) RST 16 ; Felrutin ERROR DEFB 128 ; ; FIND LD HL,(VAROT) LD A,H OR L SCF RET Z ; Ingen variabellista finns PUSH IX LD IX,(VAROT) FIND1 LD L,(IX+2) LD H,(IX+3) LD A,(IX+1) CP B JR NZ,FIND2 LD A,(IX) CP C JR NZ,FIND2 LD C,(IX+8) LD B,(IX+9) LD L,(IX+6) LD H,(IX+7) JR FOUND FIND2 PUSH HL POP IX LD A,L OR H SCF JR Z,NOFOUND JR FIND1 FOUND AND A NOFOUND POP IX RET ; ; ; ; ===================================== ; VARIABLER I RAMAREA ; ===================================== ; ; VASTRT1 DEFB 255 BUFADR1 DEFS 2 FILBESK DEFS 16 ; Filbeskrivning FILNR DEFS 1 L[NGD DEFW 0 ANTAL DEFW 1 ; Antal bytes i filen vid prep. PRMOD DEFW 0 ; Prmod MBUFFW DEFS 2 ; Adress till buffert PRTXT DEFM "PR:" DEFB 13 VAEND1 DEFB 255 ; ; VARIABELEND ; ===================================== PGMEND DEFB 255 ; ; ; ===================================== ; KONSTANTER :::::------> ; ===================================== ; ; _____________________________________ TXTBUF1 EQU 65088 ; Inmatningsbuffert WRILIN EQU 11 ; Writeline DOSBUF0 EQU 62720 ; Dosbuf noll (245: ALLHEAP EQU 13172 ; Allokera antal bytes i DE p} HEAP CLOSEF1 EQU 2192 OPENCMD EQU 62 ; HL-->filnamn ; Fixa IX-reg 3 f|rsta bytes CRLF EQU 1858 ; CrLf VIDEOW EQU 659 ; Bildadress enl 65011,12 RADBRED EQU 590 ; 40/80 tkn MIY14 EQU 65060 ; IY+14 MIY30 EQU 65076 MIY34 EQU 65080 RUNSTACK EQU 65078 HEAP EQU 65056 ; Ledigt f|r tolken vid exekverbasic VAROT EQU 65065 ; Variabelrot TXTBUF3 EQU 65208 ; Radcompilebuffert FORMFILL EQU 630 ; CHR$(12) INPUTFIL EQU 2195 ; Input BC=antal tecken,HL->>txtarea PRINTFIL EQU 2198 ; HL-->txt,BC=antal BKONST21 EQU 32722 ; Felmeddelande start KONST1 EQU 37+128 KONST2 EQU 35+128 ; ; ===================================== ; KONSTANTER END ; ===================================== ; ---->>>>>> ; END