ACTION! - Simple PRINT Runtime
ACTION! - Simple PRINT Runtime
von Erhard » Sa 27. Jul 2013, 15:45
Hi,
ich habe mich mal an einer kleinen Runtime für PRINT versucht.
Sie enthält
PRINT
PRINTE
PRINTB
PRINTBE
PRINTC
PRINTCE
ACTION-Programme, die nur diese externen Befehle verwenden, kommen dann ohne Modul und ohne die große Runtime aus.
- Code: Alles auswählen
;**************************************
;* EPRINT03.ACT *
;* *
;* Simple PRINT runtime, V0.3 *
;* *
;* (c) 2013 Erhard Puetz *
;* www.atari-central.de *
;* *
;**************************************
MODULE
BYTE ARRAY EOL=[1 155]
PROC PRINT=*(BYTE ARRAY S)
[$18 ;CLC
$85$A0 ;STA $A0 ;Do not print
$69$01 ;ADC #$01 ;lenght byte
$8D$344 ;STA $344
$86$A1 ;STX $A1
$69$00 ;ADC #$00
$8E$345 ;STX $345
$A0$00 ;LDY #0
$B1$A0 ;LDA ($A0),Y
$8D$348 ;STA $348
$8C$349 ;STY $349
$A9$0B ;LDA #$0B ;BPUT via CIO
$8D$342 ;STA $342
$98 ;TYA
$AA ;TAX
$20$E456];JSR $E456
RETURN
PROC PRINTE=*(BYTE ARRAY S)
[$20 PRINT] ;A,X enthalten die schon
;die Adresse des Arrays
PRINT(EOL)
RETURN
PROC PRINTB=*(BYTE N)
[$A2$00] ;LDX #$00
PROC PRINTC=*(CARD N)
[$85$D4 ;STA $D4 Lo-Byte f. IFP
$86$D5 ;STX $D5 Hi-Byte
$20$D9AA ;JSR IFP
$20$D8E6 ;JSR FASC
$A0$FF ;LDY #$FF
$C8 ;INY
$B1$F3 ;LDA ($F3),Y
$99$0551 ;STA $0551,Y
$10$F8 ;BPL -8
$29$7F ;AND #$7F
$99$0551 ;STA $0551,Y
$C8 ;INY
$8C$0550 ;STY $550
$A9$50 ;LDA #$50
$A2$05 ;LDX #$05
$20PRINT];JSR PRINT
RETURN
PROC PRINTBE=*(BYTE N)
[$A2$00] ;LDA #$00
PROC PRINTCE=*(CARD N)
[$20PRINTC] ;JSR PRINTC
PRINT(EOL)
RETURN
;END
Wer möchte kann die ja mal testen, aber ohne Gewähr.
Viele Grüße
Erhard
Re: ACTION! - Simple PRINT Runtime
von Jac » Mo 29. Jul 2013, 03:14
Tipp:
$86$A1 ;STX $A1
$69$00 ;ADC #$00
$8E$345 ;STX $345
=>
TXA
STA $A1
ADC #$00
STA $345
sonst stimmt der Übertrag nicht.
PROC PRINTBE=*(BYTE N)
[$A2$00] ;LDA #$00
Sollte wohl LDX #$00 heißen (HI Byte), Opcode sieht OK aus
ACTION! - Simple PRINT Runtime
von Erhard » So 11. Aug 2013, 21:22
Hi,
bin gerade aus dem Urlaub zurück ...
Jac hat geschrieben:$86$A1 ;STX $A1
$69$00 ;ADC #$00
$8E$345 ;STX $345
wie bin ich dann auf _das_ schmale Brett gekommen ... ????
Ist ja klar, daß ADC nur für den Akku geht.
Ich schau mir das die Tage noch mal an, spätestens auf der Fujiama.
Viele Grüße
Erhard
ACTION! - Simple PRINT Runtime
von Erhard » Mo 12. Aug 2013, 12:19
Hi,
hier eine korrigierte Version:
- Code: Alles auswählen
;**************************************
;* EPRINT04.ACT *
;* *
;* Simple PRINT runtime, V0.4 *
;* *
;* The runtime file will be named *
;* EPRINT.LIB so that the INCLUDE may *
;* always refer to the same filename *
;* *
;* (c) 2013 Erhard Puetz *
;* www.atari-central.de *
;* *
;**************************************
MODULE
BYTE ARRAY EOL=[1 155]
PROC PRINT=*(BYTE ARRAY S)
[$18 ;CLC
$85$A0 ;STA $A0 ;Do not print
$69$01 ;ADC #$01 ;lenght byte
$8D$344 ;STA $344
$86$A1 ;STX $A1
$8A ;TXA
$69$00 ;ADC #$00
$8D$345 ;STA $345
$A0$00 ;LDY #0 ;Get&set length
$B1$A0 ;LDA ($A0),Y
$8D$348 ;STA $348
$8C$349 ;STY $349
$A9$0B ;LDA #$0B ;BPUT via CIO
$8D$342 ;STA $342
$A2$00 ;LDX #$00 ;CH #0
$20$E456];JSR CIOV
RETURN
PROC PRINTE=*(BYTE ARRAY S)
[$20 PRINT] ;A,X enthalten die schon
;die Adresse des Arrays
PRINT(EOL)
RETURN
PROC PRINTB=*(BYTE N)
[$A2$00] ;LDX #$00
PROC PRINTC=*(CARD N)
[$85$D4 ;STA $D4 Lo-Byte f. IFP
$86$D5 ;STX $D5 Hi-Byte
$20$D9AA ;JSR IFP
$20$D8E6 ;JSR FASC
$A0$FF ;LDY #$FF
$C8 ;INY
$B1$F3 ;LDA ($F3),Y
$99$0551 ;STA $0551,Y
$10$F8 ;BPL -8
$29$7F ;AND #$7F
$99$0551 ;STA $0551,Y
$C8 ;INY
$8C$0550 ;STY $550
$A9$50 ;LDA #$50
$A2$05 ;LDX #$05
$20PRINT];JSR PRINT
RETURN
PROC PRINTBE=*(BYTE N)
[$A2$00] ;LDX #$00
PROC PRINTCE=*(CARD N)
[$20PRINTC] ;JSR PRINTC
PRINT(EOL)
RETURN
;END
Viele Grüße
Erhard
Re: ACTION! - Simple PRINT Runtime
von atarineuling » Mi 4. Sep 2013, 12:54
Hallo, dazu hätte ich bitte mal Info.
Muss dieses Modul gleich am Anfang von meinem Programm stehen oder kann ich die Prints vom Actions-Modul verwenden und später dein Modul als Runtime nutzen ?
Danke.
Re: ACTION! - Simple PRINT Runtime
von eda70 » Mi 4. Sep 2013, 14:44
Man kann die Prints aus dem Modul nutzen.
Wenn man nur Print (in GR. 0 - gehen auch andere STufen? ) braucht, kann man diese verkürzte Runtime nehmen, statt einer langen/kompletten
Re: ACTION! - Simple PRINT Runtime
von atarineuling » Mi 4. Sep 2013, 14:56
Hallo, danke.
Wenn ich jetzt dein Modul vor meiner "proc main()" setze und dein Prints benutze und dann compiliere, muss
beim Testen des Programmes dein Modul als Runtime auf Disk sein oder ist es jetzt in dem Code mit eingebunden und die COM läuft komplett alleine ohne Runtime auf Disk und ohne Action-Modul ?
Vielleicht verwechsele ich es ja jetzt mit dem Action-Modul.
Danke.
- Code: Alles auswählen
MODULE
BYTE ARRAY EOL=[1 155]
PROC PRINT=*(BYTE ARRAY S)
[$18 ;CLC
$85$A0 ;STA $A0 ;Do not print
$69$01 ;ADC #$01 ;lenght byte
$8D$344 ;STA $344
$86$A1 ;STX $A1
$8A ;TXA
$69$00 ;ADC #$00
$8D$345 ;STA $345
$A0$00 ;LDY #0 ;Get&set length
$B1$A0 ;LDA ($A0),Y
$8D$348 ;STA $348
$8C$349 ;STY $349
$A9$0B ;LDA #$0B ;BPUT via CIO
$8D$342 ;STA $342
$A2$00 ;LDX #$00 ;CH #0
$20$E456];JSR CIOV
RETURN
PROC PRINTE=*(BYTE ARRAY S)
[$20 PRINT] ;A,X enthalten die schon
;die Adresse des Arrays
PRINT(EOL)
RETURN
PROC PRINTB=*(BYTE N)
[$A2$00] ;LDX #$00
PROC PRINTC=*(CARD N)
[$85$D4 ;STA $D4 Lo-Byte f. IFP
$86$D5 ;STX $D5 Hi-Byte
$20$D9AA ;JSR IFP
$20$D8E6 ;JSR FASC
$A0$FF ;LDY #$FF
$C8 ;INY
$B1$F3 ;LDA ($F3),Y
$99$0551 ;STA $0551,Y
$10$F8 ;BPL -8
$29$7F ;AND #$7F
$99$0551 ;STA $0551,Y
$C8 ;INY
$8C$0550 ;STY $550
$A9$50 ;LDA #$50
$A2$05 ;LDX #$05
$20PRINT];JSR PRINT
RETURN
PROC PRINTBE=*(BYTE N)
[$A2$00] ;LDX #$00
PROC PRINTCE=*(CARD N)
[$20PRINTC] ;JSR PRINTC
PRINT(EOL)
RETURN
proc main ()
print("test")
return
Re: ACTION! - Simple PRINT Runtime
von eda70 » Mi 4. Sep 2013, 15:06
Es ist Erhards Mini-Lib.
Nein, es muss keine weitere runtime benutzt werden.
Die notwendigen runtime-Teile hast du ja in dein Programm eingefügt.
Wenn du das Programm kompilierst, das Kompilat speicherst, sollte es stand-alone lauffähig sein.
Wenn du die runtime auslagern willst, speicherst du diese Teile in einer eigenen *.ACT-Datei (bspw. RT.ACT)
diese fügst du dann mit INCLUDE "D:RT.ACT" in dein Programm ein.
Re: ACTION! - Simple PRINT Runtime
von atarineuling » Mi 4. Sep 2013, 16:26
Ja danke.
Gruss
ACTION! - Simple PRINT Runtime
von Erhard » Do 5. Sep 2013, 08:10
Hi,
wenn Du die Simple PRINT Runtime auf Disk unter z.B. EPRINT.LIB abspeicherst und dann in Deinem Programm per
INCLUDE "D:EPRINT.LIB"
einbindest und dann Dein Programm kompilierst, dann ist sie natürlich mit im Binärfile drin.
Dann solltest Du noch folgende grundsätzliche Empfehlungen von mir beachten:
- (D)ein ACTION! Programm sollte immer die Speicherstellen $80-$FF löschen
- (D)ein ACTION! Programm sollte im Quellcode mit einem RTS beginnen (MODULE ... BYTE RTS=[$60] ...)
- die INIT-Adresse muß in eine RUN-Adresse umgewandelt werden
Viele Grüße
Erhard