PICGEN ASM;------------------------------------ ;Bilderzeugung f}r EDIPIC und DIASHOW ; ;verschieblich: 0000 03F6 0017 ; ;reassembliert: 23.04.92 ;KC85/3-Bilder: 25.04.92 ;HIRES-Bilder: 09.12.93 ;Fehlertexte: 11.12.93 ; ;PICGEN.ASM ` ML-Soft ;------------------------------------ CRT EQU 0 WAIT EQU 14H INTB EQU 16H INLIN EQU 17H ERRM EQU 19H AHEX EQU 1CH OSTR EQU 23H OCHR EQU 24H CRLF EQU 2CH SAVE EQU 36H ; LF EQU 0AH CLS EQU 0CH CR EQU 0DH ESC EQU 1BH ; ORG 0 ;Aufruf aus anderen Programmen ;z.B. BASIC: ; CALL IRMON PUSH AF CALL UREL DW START-2-$ CALL IRMOF POP AF RET ;------- DW 7F7FH DB 'PICGEN',1 START: LD A,(7FFFH) PUSH AF LD A,(IX+1) PUSH AF ;3x LD A,(COLOR) ;merken PUSH AF LD A,ESC CALL PV1 DB CRT LD A,'1' BIT 2,(IX+1) JR Z,PIC1 INC A ;Anzeige wie PIC1: CALL PV1 ;Zugriff DB CRT LD HL,0 LD (WINON),HL LD HL,2028H LD (WINLG),HL LD A,7 ;schwarz LD (COLOR),A ;wei~ LD A,CLS CALL PV1 DB CRT CALL PV1 DB OSTR DB LF DB ' DAS PROGRAMM DIENT ' DB 'ZUM ABSPEICHERN VON' DB LF,19H,LF DB ' BILDERN, WELCHE SIC' DB 'H IM IRM DES NICHT' DB LF,19H,LF DB ' ANGEZEIGTEN BILDES ' DB 'BEFINDEN. ES IST' DB LF,19H,LF DB ' NUR AUF DEM KC85/4 ' DB 'EINSETZBAR UND' DB LF,19H,LF DB ' DIENT ZUR SCHNELLEN' DB ' GEWINNUNG VON' DB LF,19H,LF DB ' BILDERN FUER "EDIPI' DB 'C" ODER "DIASHOW".' DB LF,19H,LF DB ' ES WERDEN NUR UNKOM' DB 'PRIMIERTE DATEIEN' DB LF,19H,LF DB ' AUSGEGEBEN.' DB LF,19H,LF DB ' (1)-TAPE (2)-DISK',0 CALL UREL DW INKEY-2-$ PUSH AF CALL PV1 DB OSTR DB LF,19H,LF DB ' BILD VOM KC85/3-(1)' DB ' KC85/4-(2)',0 CALL UREL DW INKEY-2-$ LD C,0 ;Kennbyte LD A,2 ;2 Adressen LD (ARGN),A LD HL,7FFFH ;Aadr LD (ARG1),HL LD HL,0A800H ;Eadr LD (ARG2),HL JR Z,KC3 SET 2,C ;KC85/4 CALL PV1 DB OSTR DB LF,19H,LF DB ' (1)-PIXEL (2)-COLOR',0 CALL UREL DW INKEY-2-$ JR NZ,AUFL SET 0,C ;Pixel AUFL: CALL PV1 DB OSTR DB LF,19H,LF DB ' (1)-NORMAL (2)-HIRES' DB 0 CALL UREL DW INKEY-2-$ JR Z,KC3P SET 3,C ;HIRES LD HL,8000H LD (ARG1),HL ;ohne Kennbyte JR KC3P KC3: CALL PV1 DB OSTR DB LF,19H,LF DB ' (1)-PIXEL (2)-PIXEL' DB ' & COLOR',0 CALL UREL DW INKEY-2-$ SET 0,C ;Pixel JR Z,KC3P LD HL,0B200H ;Eadr LD (ARG2),HL RES 0,C ;Pixel & Farbe KC3P: LD A,C LD (7FFFH),A ;Kennbyte CALL PV1 DB OSTR DB LF,19H,LF DB ' NAME :________',0 LD A,'P' BIT 3,C JR Z,NAM1 LD A,'H' NAM1: CALL PV1 DB OCHR LD A,'I' CALL PV1 DB OCHR LD A,'C' BIT 2,C JR Z,NAM2 LD A,'P' BIT 0,C JR NZ,NAM2 LD A,'F' NAM2: CALL PV1 DB OCHR LD A,7 ;Spalte LD (CURSO),A CALL PV1 DB INLIN LD HL,7 ADD HL,DE LD DE,ARG4 ;Dateiname LD BC,12 LDIR CALL PV1 DB OSTR DB LF,' (1)-Start ' DB '(2)-Abbruch',0 CALL UREL DW INKEY-2-$ JR Z,PICS POP AF JR ENDE ;-> Abbruch PICS: CALL PV1 DB OSTR DB CR,LF,LF,' ',ESC,0 LD A,'3' ;Zugriff Bild 1 BIT 0,(IX+1) JR Z,PIC2 INC A ;Zugriff Bild 0 PIC2: CALL PV1 DB CRT LD A,(7FFFH) BIT 2,A JR Z,SAV1 ;KC85/3 BIT 0,A JR NZ,SAV1 ;Pixel CALL PV1 DB OSTR DB ESC,'9',0;Farbe ein SAV1: LD HL,ARG4 ;Dateiname POP AF JR NZ,DISK LD DE,STBT LD A,(DE) OR 3 ;Zeichen u. LD (DE),A ;Farbe aus! CALL PV1 DB SAVE LD HL,STBT LD A,M AND 0FCH LD M,A ENDE: POP AF LD (COLOR),A POP AF LD (IX+1),A OUT 84H,A POP AF LD (7FFFH),A LD A,ESC CALL PV1 DB CRT LD A,'1' BIT 2,(IX+1) JR Z,PIC4 INC A ;Anzeige wie PIC4: CALL PV1 ;Zugriff DB CRT LD A,CLS CALL PV1 DB CRT RET DISK: LD E,12 LD BC,83F3H NAMOUT: OUTI INC B INC B DEC E JR NZ,NAMOUT LD HL,ARGN ;Adressen LD DE,0B0BH LD B,91H DOUT: LD C,0F2H OUTI ;Daten INC B INC B DEC E JR NZ,DOUT LD A,D ;Steuerbyte PUSH DE CALL UREL DW STEUER-2-$ POP DE JR NZ,ERROR BIT 3,D ;open? JR Z,DNEXT LD HL,(ARG1) ;Aadr DNEXT: PUSH HL LD DE,(ARG2) ;Eadr AND A SBC HL,DE POP HL LD B,81H LD DE,0380H JR C,DOUT ;weiter! LD A,43H ;close CALL UREL DW STEUER-2-$ END1: JR ENDE ERROR: LD A,ESC CALL PV1 DB CRT LD A,'1' BIT 0,(IX+1) JR Z,PIC3 ;Zugriff wie INC A ;Anzeige PIC3: CALL PV1 DB CRT LD BC,83F1H IN A,(C) CP 20H ;DEP ab 2.0? JR NC,ERRTX;ja LD BC,81F3H IN A,(C) ;Fehlernummer CALL PV1 DB AHEX CALL PV1 DB ERRM ERRW: CALL PV1 DB INTB JR END1 ERRTX: LD BC,00F1H;Fehlertext ERRT1: IN A,(C) INC B AND A JR Z,ERRW ;00=Ende CALL PV1 DB OCHR JR ERRT1 ;--------------- ;Unterprogramme: INKEY: CALL PV1 DB OSTR DB ' ? _',8,0 CALL PV1 DB INTB CP '1' JR Z,CHR ;Z=1 CP '2' JR NZ,INKEY OR A ;Z=0 CHR: PUSH AF CALL PV1 DB OCHR ;Anzeige POP AF RET STEUER: LD BC,80F3H OUT (C),A READY: PUSH BC LD A,1 CALL PV1 DB WAIT POP BC IN A,(C) ;fertig? BIT 0,A JR NZ,READY BIT 7,A ;Fehler? RET ;------- ARGN EQU 0B781H ARG1 EQU 0B782H ARG2 EQU 0B784H ARG4 EQU 0B788H WINON EQU 0B79CH WINLG EQU 0B79EH CURSO EQU 0B7A0H STBT EQU 0B7A2H COLOR EQU 0B7A3H PV1 EQU 0F003H UREL EQU 0F00FH IRMON EQU 0F018H IRMOF EQU 0F01BH  Ā@Āt(Āp6ĀnTop of Text: End of Text: StLOR EQU 0B7A3H PV1 EQU 0F003H UREL EQU 0F00FH IRMON EQU 0F018H IRMOF EQU 0F01BH  Ā@Āt(Āp6ĀnTop of Text: End of Text: St