Printer vom ZX81 mit ASM proggen ?

ZX-Team Forum
Antworten
funkheld
User
Beiträge: 193
Registriert: 16.11.2010, 18:20

Printer vom ZX81 mit ASM proggen ?

Beitrag von funkheld » 18.11.2017, 19:49

Hallo, guten Tag.

Mit welchen ASM-Befehlen kann man bitte den Printer vom ZX81 ansteuern ?
In dem Printerheftchen (PDF) steht das nicht drin.

Danke.
Gruss

Benutzeravatar
tofro
User
Beiträge: 868
Registriert: 14.06.2012, 16:45

Re: Printer vom ZX81 mit ASM proggen ?

Beitrag von tofro » 18.11.2017, 20:34

Im englischen Handbuch steht was drin - Aber das willst du vielleicht gar nicht wissen - Es ist nämlich nicht ganz simpel:

http://www.zx81.nl/dload/pdf/Printer-Instructions.pdf

Programm 6 ist ein Machinencode-Programm für die Druckeransteuerung. Das musst du dir aber erst disassemblieren.

Tobias
"On two occasions I have been asked, 'Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?' ... I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question."

Benutzeravatar
PokeMon
User
Beiträge: 4568
Registriert: 31.08.2011, 23:41

Re: Printer vom ZX81 mit ASM proggen ?

Beitrag von PokeMon » 18.11.2017, 21:50

Ich würde die ROM Routine nutzen.
Für Text ist das recht einfach, da wird der Printer Buffer gefüllt und die Zeile gedruckt wenn entweder ein NEWLINE kommt ($76) oder die Zeile voll ist (32 Zeichen). Also einfach ein CALL $0851 und das zu druckende Zeichen in Register A.

Code: Alles auswählen

; --------------------------
; THE 'LPRINT-CH' SUBROUTINE
; --------------------------
; This routine sends a character to the ZX-Printer placing the code for the
; character in the Printer Buffer.
; Note. PR-CC contains the low byte of the buffer address. The high order byte 
; is always constant. 


;; LPRINT-CH
L0851:  CP      $76             ; compare to NEWLINE.
        JR      Z,L0871         ; forward if so to COPY-BUFF

        LD      C,A             ; take a copy of the character in C.
        LD      A,($4038)       ; fetch print location from PR_CC
        AND     $7F             ; ignore bit 7 to form true position.
        CP      $5C             ; compare to 33rd location

        LD      L,A             ; form low-order byte.
        LD      H,$40           ; the high-order byte is fixed.

        CALL    Z,L0871         ; routine COPY-BUFF to send full buffer to 
                                ; the printer if first 32 bytes full.
                                ; (this will reset HL to start.)

        LD      (HL),C          ; place character at location.
        INC     L               ; increment - will not cross a 256 boundary.
        LD      (IY+$38),L      ; update system variable PR_CC
                                ; automatically resetting bit 7 to show that
                                ; the buffer is not empty.
        RET                     ; return.

Wer seinen Computer ehrt, lebt nicht verkehrt.

funkheld
User
Beiträge: 193
Registriert: 16.11.2010, 18:20

Re: Printer vom ZX81 mit ASM proggen ?

Beitrag von funkheld » 18.11.2017, 22:01

Danke für die Info.

Gruss

Benutzeravatar
PokeMon
User
Beiträge: 4568
Registriert: 31.08.2011, 23:41

Re: Printer vom ZX81 mit ASM proggen ?

Beitrag von PokeMon » 18.11.2017, 22:30

Danke für den Link, dieses Manual kannte ich noch gar nicht. 8)
Wer seinen Computer ehrt, lebt nicht verkehrt.

funkheld
User
Beiträge: 193
Registriert: 16.11.2010, 18:20

Re: Printer vom ZX81 mit ASM proggen ?

Beitrag von funkheld » 18.11.2017, 23:04

Wenn ich etwas drucken möchte "AB" und $76 (NEWLINE) eingebe , muss da vorher der Printerbuffer leer sein?
Druckt er sonst alles mit, was vorher drin war ?

Danke.
Gruss

Benutzeravatar
PokeMon
User
Beiträge: 4568
Registriert: 31.08.2011, 23:41

Re: Printer vom ZX81 mit ASM proggen ?

Beitrag von PokeMon » 18.11.2017, 23:26

Wenn da was drin war, ja.
Die Routine ergänzt ja nur den Printerbuffer.
Sehr gut möglich, dass dieser Puffer auch vom Bildschirm (normalen PRINT) beeinflusst wird.
Zumindest gibt es da einen Pointer, der sich die Position merkt und der könnte identisch sein mit der nächsten PRINT Koordinate (z.B. PRINT , oder PRINT ;). Im Zweifel den Buffer vor der Benutzung selbst löschen (32 Leerzeichen reinsetzen).
Wer seinen Computer ehrt, lebt nicht verkehrt.

funkheld
User
Beiträge: 193
Registriert: 16.11.2010, 18:20

Re: Printer vom ZX81 mit ASM proggen ?

Beitrag von funkheld » 19.11.2017, 09:00

Danke.

Ascii-Nummer vom Leerzeichen reinsetzen oder das Byte mit null füllen ?

Gruss

Benutzeravatar
Paul
User
Beiträge: 2577
Registriert: 10.03.2010, 12:01
Wohnort: Germanys west end

Re: Printer vom ZX81 mit ASM proggen ?

Beitrag von Paul » 19.11.2017, 09:24

Beim ZX81 ist beides gleich.
Theoretisch ist zwischen Theorie und Praxis kein Unterschied.
Praktisch allerdings wohl.

bokje
User
Beiträge: 66
Registriert: 02.05.2015, 15:38

Re: Printer vom ZX81 mit ASM proggen ?

Beitrag von bokje » 19.11.2017, 10:10

Routine $08E2 hilft da vielleicht :)

funkheld
User
Beiträge: 193
Registriert: 16.11.2010, 18:20

Re: Printer vom ZX81 mit ASM proggen ?

Beitrag von funkheld » 19.11.2017, 10:15

Es geht jetzt mit TFORTH wunderbar.

Habe 2 ASM-Dateien in Code umgewandelt, LPCLR Printerbuffer löschen und LPPRINT Byte in Register A
und dann CALL 0851h.

LPPRINT :

Code: Alles auswählen

	 push hl
	push de  	
	ld a, c
	CALL 0851h
	pop de
	pop hl
	
	.end
LPCLR :

Code: Alles auswählen

		push hl
		push de  	

L08E2: 	LD      HL,405Ch        ; address fixed end of PRBUFF
		LD      (HL),76h        ; place a newline at last position.
       		LD      B,20h           ; prepare to blank 32 preceding characters. 

;; PRB-BYTES
L08E9:  	DEC     HL              ; decrement address - could be DEC L.
        	LD      (HL),00h        ; place a zero byte.
        	DJNZ    L08E9           ; loop for all thirty-two to PRB-BYTES

      	 	LD      A,L             ; fetch character print position.
       	 	SET     7,A             ; signal the printer buffer is clear.
        	LD      (4038h),A       ; update one-byte system variable PR_CC
        
		pop de
	   	pop hl
	
	  	 .end


TForth-Programm :

Code: Alles auswählen

CODE LPCLR
 229 C, 213 C, 33 C, 92 C, 64 C, 54 C, 118 C, 6 C, 32 C, 43 C,
 54 C, 0 C, 16 C, 251 C, 125 C, 203 C, 255 C, 50 C, 56 C, 64 C,
 209 C, 225 C,
NEXT

CODE LPPRINT
 229 C, 213 C, 121 C, 205 C, 81 C, 8 C, 209 C, 225 C,
NEXT

HEX
: TESTP LPCLR 90 45 DO I LPPRINT LOOP 76 LPPRINT ;
DECIMAL

Gruss
Dateianhänge
test.jpg
test.jpg (2.79 KiB) 355 mal betrachtet
Bild2.jpg
Bild2.jpg (66.77 KiB) 359 mal betrachtet
Zuletzt geändert von funkheld am 19.11.2017, 10:54, insgesamt 1-mal geändert.

funkheld
User
Beiträge: 193
Registriert: 16.11.2010, 18:20

Re: Printer vom ZX81 mit ASM proggen ?

Beitrag von funkheld » 19.11.2017, 10:54

Es werden ja vom Sytem immer 8 Zeilen untereinander gedruckt.

Jetzt muss ich noch rausfinden, wie man nur ein Zeile druckt um Grafiken zu drucken Linie für Linie .

Gruss

Benutzeravatar
PokeMon
User
Beiträge: 4568
Registriert: 31.08.2011, 23:41

Re: Printer vom ZX81 mit ASM proggen ?

Beitrag von PokeMon » 19.11.2017, 17:31

Um den Druckerpuffer zu löschen gibt es auch eine fertige Routine im ROM.
CALL $08E2

Code: Alles auswählen

; -------------------------------------
; THE 'CLEAR PRINTER BUFFER' SUBROUTINE
; -------------------------------------
; This subroutine sets 32 bytes of the printer buffer to zero (space) and
; the 33rd character is set to a NEWLINE.

;; CLEAR-PRB
L08E2:  LD      HL,$405C        ; address fixed end of PRBUFF
        LD      (HL),$76        ; place a newline at last position.
        LD      B,$20           ; prepare to blank 32 preceding characters. 

;; PRB-BYTES
L08E9:  DEC     HL              ; decrement address - could be DEC L.
        LD      (HL),$00        ; place a zero byte.
        DJNZ    L08E9           ; loop for all thirty-two to PRB-BYTES

        LD      A,L             ; fetch character print position.
        SET     7,A             ; signal the printer buffer is clear.
        LD      ($4038),A       ; update one-byte system variable PR_CC
        RET                     ; return.
Wer seinen Computer ehrt, lebt nicht verkehrt.

funkheld
User
Beiträge: 193
Registriert: 16.11.2010, 18:20

Re: Printer vom ZX81 mit ASM proggen ?

Beitrag von funkheld » 19.11.2017, 17:34

Vielen Dank.

Gruss

Benutzeravatar
PokeMon
User
Beiträge: 4568
Registriert: 31.08.2011, 23:41

Re: Printer vom ZX81 mit ASM proggen ?

Beitrag von PokeMon » 19.11.2017, 17:39

funkheld hat geschrieben:
19.11.2017, 10:54
Jetzt muss ich noch rausfinden, wie man nur ein Zeile druckt um Grafiken zu drucken Linie für Linie .
Welches HRG nutzt Du denn ? Das von Matthias Swatosch ?
Da gibt es ja den HCOPY Befehl, der den Grafikschirm automatisch an den Drucker sendet:

http://www.swatosch.de/zx81/doku-ge.pdf

Bildschirmfoto 2017-11-19 um 17.38.02.png
Bildschirmfoto 2017-11-19 um 17.38.02.png (121.5 KiB) 316 mal betrachtet
Wer seinen Computer ehrt, lebt nicht verkehrt.

funkheld
User
Beiträge: 193
Registriert: 16.11.2010, 18:20

Re: Printer vom ZX81 mit ASM proggen ?

Beitrag von funkheld » 19.11.2017, 20:51

Ja danke.
Das hatte ich schon.

Mich interessiert wie ein Grafikbildschirm Zeile für Zeile ausgedruckt wird.
Ich finde den HRG-Sourcecode nicht.

Gruss

Benutzeravatar
PokeMon
User
Beiträge: 4568
Registriert: 31.08.2011, 23:41

Re: Printer vom ZX81 mit ASM proggen ?

Beitrag von PokeMon » 19.11.2017, 22:35

Siehe die Doku oben.

D7 (Bit 7) bei OUT $FB ist das Pixel Bit. Der Drucker druckt Pixelweise (jedes einzeln). D7=1 ist ein gedrucktes Pixel. Vorher muss man fragen, ob der Drucker bereit ist. Das Drucken erfolgt auch nur im FAST Mode weil sonst das Timing schwierig ist. Um 8 Pixel zu drucken, muss man also 8 OUT Befehle an den Printer senden.


Hier ist die vollständige ROM Routine:

Code: Alles auswählen

; --------------------------
; THE 'COPY' COMMAND ROUTINE
; --------------------------
; The full character-mapped screen is copied to the ZX-Printer.
; All twenty-four text/graphic lines are printed.

;; COPY
L0869:  LD      D,$16           ; prepare to copy twenty four text lines.
        LD      HL,($400C)      ; set HL to start of display file from D_FILE.
        INC     HL              ; 
        JR      L0876           ; forward to COPY*D

; ---

; A single character-mapped printer buffer is copied to the ZX-Printer.

;; COPY-BUFF
L0871:  LD      D,$01           ; prepare to copy a single text line.
        LD      HL,$403C        ; set HL to start of printer buffer PRBUFF.

; both paths converge here.

;; COPY*D
L0876:  CALL    L02E7           ; routine SET-FAST

        PUSH    BC              ; *** preserve BC throughout.
                                ; a pending character may be present 
                                ; in C from LPRINT-CH

;; COPY-LOOP
L087A:  PUSH    HL              ; save first character of line pointer. (*)
        XOR     A               ; clear accumulator.
        LD      E,A             ; set pixel line count, range 0-7, to zero.

; this inner loop deals with each horizontal pixel line.

;; COPY-TIME
L087D:  OUT     ($FB),A         ; bit 2 reset starts the printer motor
                                ; with an inactive stylus - bit 7 reset.
        POP     HL              ; pick up first character of line pointer (*)
                                ; on inner loop.

;; COPY-BRK
L0880:  CALL    L0F46           ; routine BREAK-1
        JR      C,L088A         ; forward with no keypress to COPY-CONT

; else A will hold 11111111 0

        RRA                     ; 0111 1111
        OUT     ($FB),A         ; stop ZX printer motor, de-activate stylus.

;; REPORT-D2
L0888:  RST     08H             ; ERROR-1
        DEFB    $0C             ; Error Report: BREAK - CONT repeats

; ---

;; COPY-CONT
L088A:  IN      A,($FB)         ; read from printer port.
        ADD     A,A             ; test bit 6 and 7
        JP      M,L08DE         ; jump forward with no printer to COPY-END

        JR      NC,L0880        ; back if stylus not in position to COPY-BRK

        PUSH    HL              ; save first character of line pointer (*)
        PUSH    DE              ; ** preserve character line and pixel line.

        LD      A,D             ; text line count to A?
        CP      $02             ; sets carry if last line.
        SBC     A,A             ; now $FF if last line else zero.

; now cleverly prepare a printer control mask setting bit 2 (later moved to 1)
; of D to slow printer for the last two pixel lines ( E = 6 and 7)

        AND     E               ; and with pixel line offset 0-7
        RLCA                    ; shift to left.
        AND     E               ; and again.
        LD      D,A             ; store control mask in D.

;; COPY-NEXT
L089C:  LD      C,(HL)          ; load character from screen or buffer.
        LD      A,C             ; save a copy in C for later inverse test.
        INC     HL              ; update pointer for next time.
        CP      $76             ; is character a NEWLINE ?
        JR      Z,L08C7         ; forward, if so, to COPY-N/L

        PUSH    HL              ; * else preserve the character pointer.

        SLA     A               ; (?) multiply by two
        ADD     A,A             ; multiply by four
        ADD     A,A             ; multiply by eight

        LD      H,$0F           ; load H with half the address of character set.
        RL      H               ; now $1E or $1F (with carry)
        ADD     A,E             ; add byte offset 0-7
        LD      L,A             ; now HL addresses character source byte

        RL      C               ; test character, setting carry if inverse.
        SBC     A,A             ; accumulator now $00 if normal, $FF if inverse.

        XOR     (HL)            ; combine with bit pattern at end or ROM.
        LD      C,A             ; transfer the byte to C.
        LD      B,$08           ; count eight bits to output.

;; COPY-BITS
L08B5:  LD      A,D             ; fetch speed control mask from D.
        RLC     C               ; rotate a bit from output byte to carry.
        RRA                     ; pick up in bit 7, speed bit to bit 1
        LD      H,A             ; store aligned mask in H register.

;; COPY-WAIT
L08BA:  IN      A,($FB)         ; read the printer port
        RRA                     ; test for alignment signal from encoder.
        JR      NC,L08BA        ; loop if not present to COPY-WAIT

        LD      A,H             ; control byte to A.
        OUT     ($FB),A         ; and output to printer port.
        DJNZ    L08B5           ; loop for all eight bits to COPY-BITS

        POP     HL              ; * restore character pointer.
        JR      L089C           ; back for adjacent character line to COPY-NEXT

; ---

; A NEWLINE has been encountered either following a text line or as the 
; first character of the screen or printer line.

;; COPY-N/L
L08C7:  IN      A,($FB)         ; read printer port.
        RRA                     ; wait for encoder signal.
        JR      NC,L08C7        ; loop back if not to COPY-N/L

        LD      A,D             ; transfer speed mask to A.
        RRCA                    ; rotate speed bit to bit 1. 
                                ; bit 7, stylus control is reset.
        OUT     ($FB),A         ; set the printer speed.

        POP     DE              ; ** restore character line and pixel line.
        INC     E               ; increment pixel line 0-7.
        BIT     3,E             ; test if value eight reached.
        JR      Z,L087D         ; back if not to COPY-TIME

; eight pixel lines, a text line have been completed.

        POP     BC              ; lose the now redundant first character 
                                ; pointer
        DEC     D               ; decrease text line count.
        JR      NZ,L087A        ; back if not zero to COPY-LOOP

        LD      A,$04           ; stop the already slowed printer motor.
        OUT     ($FB),A         ; output to printer port.

;; COPY-END
L08DE:  CALL    L0207           ; routine SLOW/FAST
        POP     BC              ; *** restore preserved BC.


COPY ($0869) druckt den kompletten Bildschirmspeicher aus (DFILE).
COPY-BUFF ($0871) druckt eine Bildschirmzeile (z.B. Printer Buffer).
COPY-NEXT ($089C) liest das Grafik Pattern für ein bestimmtes Zeichen aus der Zeichensatztabelle im ROM
COPY-BITS ($08B5) druckt 8 komplette Pixel von einem Zeichen

Die Routinen bauen aufeinander auf, wenn man da was eigenes schreiben will, sollte man beachten dass Control Bits gesetzt werden müssen (siehe Doku) und regelmäßig abgefragt ob der Drucker für das nächste Pixel bereit ist.

Have fun beim Schreiben Deiner eigenen Pixel Routine. :wink:
Wer seinen Computer ehrt, lebt nicht verkehrt.

funkheld
User
Beiträge: 193
Registriert: 16.11.2010, 18:20

Re: Printer vom ZX81 mit ASM proggen ?

Beitrag von funkheld » 20.11.2017, 08:20

Ja danke für die Info.

Mal sehen ob ich als Anfänger den Printer einzelne Pixel entlocken kann.

GRuss

Benutzeravatar
siggi
User
Beiträge: 2163
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, tiefste Werreraa
Kontaktdaten:

Re: Printer vom ZX81 mit ASM proggen ?

Beitrag von siggi » 20.11.2017, 09:28

PokeMon hat geschrieben:
19.11.2017, 22:35

Hier ist die vollständige ROM Routine:

Code: Alles auswählen

; --------------------------
; THE 'COPY' COMMAND ROUTINE
; --------------------------
; The full character-mapped screen is copied to the ZX-Printer.
; All twenty-four text/graphic lines are printed.

;; COPY
L0869:  LD      D,$16           ; prepare to copy twenty four text lines.
        LD      HL,($400C)      ; set HL to start of display file from D_FILE.
        INC     HL              ; 
        JR      L0876           ; forward to COPY*D


COPY ($0869) druckt den kompletten Bildschirmspeicher aus (DFILE).
Nicht ganz! Es werden "nur" die ersten 22 Zeilen zum Drucker geschickt, wie man dem Assemblercode entnehmen kann. Der Kommentar im Listing "prepare to copy twenty four text lines." ist schlicht und einfach falsch.

Gruß
Siggi
Mein ZX81-Web-Server: online seit 2007
http://zx81-siggi.endoftheinternet.org/index.html

funkheld
User
Beiträge: 193
Registriert: 16.11.2010, 18:20

Re: Printer vom ZX81 mit ASM proggen ?

Beitrag von funkheld » 20.11.2017, 12:34

Ein Teil mit den Pixel funktioniert schon.

Wieviel Pixel kommen beim Printer in eine Linie?
Macht er am Ende einen automatischen Zeilenumbruch(Linienumbruch)?

Danke.
Gruss

Benutzeravatar
Paul
User
Beiträge: 2577
Registriert: 10.03.2010, 12:01
Wohnort: Germanys west end

Re: Printer vom ZX81 mit ASM proggen ?

Beitrag von Paul » 20.11.2017, 12:37

32 mal 8 sind 256.
Den Umbruch einfach mal ausprobieren.
Mir fällt nichts ein was der Drucker sonst machen soll.
Liebe Grüße Paul
Theoretisch ist zwischen Theorie und Praxis kein Unterschied.
Praktisch allerdings wohl.

funkheld
User
Beiträge: 193
Registriert: 16.11.2010, 18:20

Re: Printer vom ZX81 mit ASM proggen ?

Beitrag von funkheld » 20.11.2017, 15:59

Hallo, guten Tag.

Ich schreibe mit den Programm 255 Pixel an den Printer.
Die Zeile vom Print ist nur ca 1/4 Voll.
Woran liegt das ?
Wie heisst evtl der Befehl vom Printer den er mir zurückschicken kann,
das 1 Pixel fertig gedruckt ist ?

Danke.
Gruss

Code: Alles auswählen

format zx81
;labelusenumeric
;LISTOFF
        MEMAVL     =   MEM_48K
        STARTMODE  EQU SLOW_MODE
        DFILETYPE  EQu AUTO
        STARTUPMSG EQU 'PEBISOFT PRINTER'

        include 'd:\zx81\SINCL-ZX\ZX81.INC'
;LISTON
        AUTOLINE 10
        
        REM _asm

label100:
        ld l,0
label1:
        ld a,128
        out ($fb),a
        inc l
        ld a,l
        cp 255
        jp nz,label1

        ld a,4
        out ($fb),a
        RST $10
        RET
        END _asm

AUTORUN:
        RAND USR #label100

        include 'd:\zx81\SINCL-ZX\ZX81DISP.INC'
VARS_ADDR:

WORKSPACE:
assert ($-MEMST)<MEMAVL

Benutzeravatar
tofro
User
Beiträge: 868
Registriert: 14.06.2012, 16:45

Re: Printer vom ZX81 mit ASM proggen ?

Beitrag von tofro » 20.11.2017, 18:39

Du wartest nach dem Drucken eines Pixels nicht, bis der Drucker ein Pixel weiter gehoppelt ist. Dadurch werden wahrscheinlich einige deiner Pixel einfach übereinander gedruckt. - Schau' dir mal COPY_WAIT in Pauls Beispiel oben an.

Tobias.
"On two occasions I have been asked, 'Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?' ... I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question."

Benutzeravatar
PokeMon
User
Beiträge: 4568
Registriert: 31.08.2011, 23:41

Re: Printer vom ZX81 mit ASM proggen ?

Beitrag von PokeMon » 20.11.2017, 19:13

Genau, Du musst das hier einbauen und die Schleife wartet, bis der Drucker für das nächste Pixel bereit ist. Dieses einfach Modell hat eben keinen Buffer.

Code: Alles auswählen

;; COPY-WAIT
L08BA:  IN      A,($FB)         ; read the printer port
        RRA                     ; test for alignment signal from encoder.
        JR      NC,L08BA        ; loop if not present to COPY-WAIT
Wer seinen Computer ehrt, lebt nicht verkehrt.

funkheld
User
Beiträge: 193
Registriert: 16.11.2010, 18:20

Re: Printer vom ZX81 mit ASM proggen ?

Beitrag von funkheld » 20.11.2017, 20:01

Danke mit dem Wait und dem Fastmode am Anfang des Codes funktioniert es.
Am Ende wird wieder auf Slowmode umgeschaltet.

Code: Alles auswählen

format zx81
;labelusenumeric
;LISTOFF
        MEMAVL     =   MEM_48K
        STARTMODE  EQU SLOW_MODE
        DFILETYPE  EQu AUTO
        STARTUPMSG EQU 'PEBISOFT PRINTER'

        include 'd:\zx81\SINCL-ZX\ZX81.INC'
;LISTON
        AUTOLINE 10
        
        REM _asm

label100:
        call $f23
        ld l,0
        
label1:
        ld a,128
        out ($fb),a

label2:
        IN  A,($FB)
        RRA
        JR  NC,label2
        
        inc l
        ld a,l
        cp 128
        jp nz,label1

        ld a,4
        out ($fb),a
        
        call $f2b
        RST $10
        RET
        END _asm

AUTORUN:
        RAND USR #label100

        include 'd:\zx81\SINCL-ZX\ZX81DISP.INC'
VARS_ADDR:

WORKSPACE:
assert ($-MEMST)<MEMAVL

Antworten