CIOV ohne OS

Moderator: Rockford

Antworten
Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

CIOV ohne OS

Beitrag von Dr. Irata »

Hallöle in die Runde.

Caverns Of Eris startet bei $1000 - für uDOS sollte das reichen.
Ich nutze RAM unter ROM und alles funktioniert... jetzt möchte ich aber auch einen HighScore von Diskette laden und abspeichern.

Also im Prinzip OS wieder einschalten und alles geht... insbesondere die CIOV wird zwingend benötigt.
Allerdings möchte ich das ROM aus lassen und dennoch abspeichern... was tun??
Reicht die Routine der CIOV? Gibt es dazu einen Source Code? Hat jemand noch ein bessere, smartere Lösung??

Grüße

Peter

Erhard
Beiträge: 555
Registriert: 04.11.2021 15:52
Has thanked: 52 times
Been thanked: 111 times
Kontaktdaten:

CIOV ohne OS

Beitrag von Erhard »

Hi,

ohne OS keine CIO. Und die CIO einzeln zu implementieren lohnt sich m.E. nicht weil viel zu lang und verzweigt.

Die Spiele, die ich so kenne und die einen HighScore abspeichern sind (oder sollten sein) Spiele, die eine eigene Diskette benötigen.

Damit kann man das Spiel dann aber nicht in eine Sammlung einfügen, wo mehrere Spiele auf einem Datenträger (Gamedisk) sind.

Dann reserviert man einfach ein paar Sektoren irgendwo für den HighScore und liest und schreibt dies einfach per SIO.

Allerdings hat man ohne OS auch keine SIO ... außer man bindet eine eigene ein.

CU, Erhard

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: CIOV ohne OS

Beitrag von Dr. Irata »

Hallo Erhard,
vielen Dank für die Nachricht.
Ich hatte natürlich gehofft, dass man diesen Teil des OS extrahieren kann - geht sicherlich auch, ist aber natürlich komplex.
Gruß
Peter

Benutzeravatar
DjayBee
Beiträge: 624
Registriert: 17.08.2021 04:02
Has thanked: 384 times
Been thanked: 175 times
Kontaktdaten:

Re: CIOV ohne OS

Beitrag von DjayBee »

CIO alleine reicht dir auch nicht weil das OS im ROM darüber keine Disketten ansprechen kann. Du brauchst dann auch noch ein DOS.

Such dir unbenutzte Sektoren und geh über SIO. Das geht mit dem ROM alleine und hat auch wenige zusätzliche Anforderungen. Nur in der ZeroPage musst du aufpassen, dass es keine Überlappungen gibt.

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: CIOV ohne OS

Beitrag von Dr. Irata »

Ja, das DOS brauche ich dafür zunächst und daher starte ich mein Programm auch bei $1000, damit davor noch das uDOS passt. Dann brauche ich theoretisch nur den Part vom OS, der schreiben und lesen kann - also die CIOV.
Oder halt wie du sagtest ohne DOS direkt freie Sektoren beschreiben.... damit kenne ich mich leider gar nicht aus.

Ich schalte ja das ROM ab und nutze das RAM darunter... am liebsten würde ich es halt komplett aus lassen und eine eigene CIOV-Routine, die durchaus abgespeckt ist und tatsächlich nur ein paar Bytes in eine Highscore-Datei schreiben bzw. lesen kann... das wäre so die Idealvorstellung.

Also wer da richtig firm ist und das kann...

Peter

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: CIOV ohne OS

Beitrag von Dr. Irata »

im Moment habe ich dafür folgende Routinen:

Code: Alles auswählen

.proc OpenFile
			ldx #1*$10				; Kanal auswählen
			lda #$03			; Kommado für Kanal öffnen
			sta ICCOM,x			; CIO Kommando ablegen
		
			lda #<Dateiname			; Dateiname holen
			sta ICBAL,x			; und CIO übergeben
			lda #>Dateiname
			sta ICBAH,x
		
			lda OpenRW			; Lesen / Schreiben
			sta ICAUX1,x			; CIO Kommando ablegen
		
			jsr CIOV
			rts
	.endp
	
	
	.proc WriteFile
			ldx #1*$10				; Kanal auswählen
			lda execrw			; Kommado für screiben lesen
			sta ICCOM,x			; CIO Kommando ablegen

			lda #<hs1			; Daten, die übertragen/geladen werden sollen
			sta ICBAL,x
			lda #>hs1
			sta ICBAH,x
		
			lda #$12			; es werden 12 Bytes übertragen
			sta ICBLL,x
			lda #$00
			sta ICBLH,x
		
			jsr CIOV
			rts        	
	.endp
	
	.proc CloseFile
			ldx #1*$10				; Kanal auswählen
			lda #$0c			; Kommado für Kanal schließen
			sta ICCOM,x			; CIO Kommando ablegen

			jsr CIOV
			rts
	.endp






Ich brauche also "nur" die CIOV - und da wohl auch nur eine abgespeckte Routine...

Erhard
Beiträge: 555
Registriert: 04.11.2021 15:52
Has thanked: 52 times
Been thanked: 111 times
Kontaktdaten:

CIOV ohne OS

Beitrag von Erhard »

Du würdest Dich wundern, was diese paar Zeilen CIO-Aufruf alles nach sich ziehen ...

Kreuz und quer durchs DOS zur Ermittlung der zu bearbeitenden Sektoren und jeder gelesene oder geschriebene Sektor wieder via SIO im OS.

Dietrich
Beiträge: 74
Registriert: 20.09.2021 20:59
Has thanked: 8 times
Been thanked: 34 times
Kontaktdaten:

Re: CIOV ohne OS

Beitrag von Dietrich »

Also, wenn du Dateien lesen und schreiben willst, brauchst du ein DOS, das CIO und das SIO.
- Ein DOS hast du bereits (uDOS).
- Das CIO kannst du weglassen, indem du die Routinen des D-Handlers direkt aufrufst (Open, Close, Read, Write). Wie das geht, steht z.B. im Profibuch Kapitel 2.15 (Gerätetreiber).
- Dann fehlt noch das SIO. Dafür nimmst du am besten eine fertige SIO-Highspeed-Routine aus dem Internet (HIAS hat glaube ich eine veröffentlicht). uDOS musst du allerdings dann noch patchen (nach Laden der SIO-Highspeed-Routine), damit dieses statt des SIO die SIO-Highspeed-Routine aufruft.

Das ist alles recht kompliziert. Einfacher geht's, wenn du nur wenige Daten hast, die du direkt in Disk-Sektoren liest bzw. schreibst. Dann genügt eine SIO-Highspeed-Routine, die du einfach direkt aufrufst. Mit einem Aufruf gibst du den
gewünschten Disk-Sektor, eine Speicheradresse und den Schreib-/Lesebefehl im Device Control Block ($301-$30B) vor, womit 1 Disksektor (128 bzw. 256 Bytes) gelesen bzw. geschrieben wird.

Einziger Haken: Du musst Sektoren nehmen, die auf deiner Disk vom DOS nicht benutzt sind. Wenn deine Disk/ATR das Standard-Atari-DOS-Format hat (genau 707 bzw. 1009 freie Sektoren nach Formatieren), kannst du einfach Sektor 720 nehmen, der wird vom DOS nicht benutzt. In Single/Medium Density passen da 128 Byte rein, bei Double Density 256 Byte. Für ein "paar Bytes" sollte das reichen.

Benutzeravatar
DjayBee
Beiträge: 624
Registriert: 17.08.2021 04:02
Has thanked: 384 times
Been thanked: 175 times
Kontaktdaten:

Re: CIOV ohne OS

Beitrag von DjayBee »

Direktes Schreiben auf Sektoren ist da deutlich einfacher.
In der Annahme, dass sich in den $6E Bytes hinter deinem High-Score KEINE Daten oder Code befinden, die zur Laufzeit verändert werden, genügt dir (nach dem Aktivieren des ROMs):

Code: Alles auswählen

hs-read
			lda #'R'		; $52, read
			bne doSIO
hs-write
			lda #'W'		; $57, write
doSIO
			sta DCOMND		; SIO-Befehl
			lda #1
			sta DUNIT		; Laufwerk D1
			lda #<hs1		; Daten, die übertragen/geladen werden sollen
			sta DBUFLO
			lda #>hs1
			sta DBUFHI
			lda #<sektor		; Nummer des Sektors für den High-Score
			sta DAUX1
			lda #>sektor
			sta DAUX2
			jsr DISKIV		; nur nötig zur Initialisierung, wenn du in Page $200 rumspielst
			jsr DSKINV		; ruft SIO über den Diskhandler
			bmi fehler
			rts
fehler
			; was auch immer dann passieren soll
			rts
Sollten sich innerhalb der 128 Bytes des Sektors veränderliche Daten befinden, hast du zwei Möglichkeiten:
Entweder du verschiebst den High-Score nach irgendwo, wo das Problem nicht besteht,
Oder du rufst nicht den (vereinfachten) Diskhandler DSKINV auf, sondern die allgemeine SIO-Routine SIOV. Dann kannst du auch einstellen, dass nur $12 Bytes übertragen werden sollen, musst aber einige Parameter im Bereich $30x mehr initialisieren.

Benutzeravatar
LarsImNetz
Beiträge: 152
Registriert: 24.08.2021 18:27
Has thanked: 109 times
Been thanked: 80 times
Kontaktdaten:

Re: CIOV ohne OS

Beitrag von LarsImNetz »

Hi,
eine weitere Idee, bevor Dein Programm gestartet wird, lege mit einem kleinen Hilfsprogramm eine Highscore-Datei an, falls noch keine existiert. Ganz brav über CIOV und schreibfähigem DOS. Sollte die Highscore-Datei schon existieren, einfach stehen lassen.
Dann öffnest Du die Highscore-Datei, die sollte ja jetzt immer existieren, ermittelst den Sektor und dessen Größe (128 oder 256 Bytes) und merkst Dir das.
Jetzt kann Dein Programm normal starten und das OS abklemmen.
Sobald Du die Highscore speichern möchtest, schaltest Du das OS wieder ein, lädst den Sektor direkt, manipulierst die paar Bytes am Anfang und speicherst diesen wieder mit der Routine von DjayBee einfach ohne CIOV. Musst nur dafür sorge tragen, das Du die Größe kennst und evtl. die letzten 3 Bytes nicht überschreibst.
Mag etwas mehr Aufwand sein, aber dafür kann Dein Programm dann auf fast jedem DOS existieren und es sieht so aus, als ob Du mit dem Fileformat zurecht kommst. Danach kann das OS wieder ausgeschaltet werden.
Für DOS 2.5 etc. funktioniert das immer. Bei SpartaDOS bin ich mir nicht so sicher, ob es eine gute Idee ist das RAM unter dem OS zu verwenden. Nutzt SpartaDOS das nicht selbst?
Eine Routine selbst zu erstellen, die das OS und dessen SIO emuliert, ist definitiv zu kompliziert.

Ich nutze für Night Knight aktuell das DOS XE und bügel das nach dem Laden einfach über. Da liegt dann der Screen und die Play-Missile Graphics.
Ein Reset muss dann einen Kaltstart erzwingen. Das sollte niemanden stören.

LG
Lars

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: CIOV ohne OS

Beitrag von Dr. Irata »

Lieben Dank schon mal für die interessanten Feedbacks!
Das klingt alles doch recht kompliziert und für mein aktuelles Programm werde ich das OS/ROM dann jeweils fürs Laden und Speichern kurz einblenden und dann wieder ausblenden. Das wird wohl am wenigsten Stress machen.
Die CIOV habe ich aber bereits extrahiert und bin dabei den Code zu analysieren und auf MADS anzupassen. Ich werde also in der Tat versuchen, eine lauffähige CIOV zu erstellen, die man dann irgendwo in seinem eigenen Programm unterbringen kann und benutzen kann. Dann bleibt das ROM ständig aus und man muss sich keine Gedanken mehr über irgendetwas machen. Der extrahierte Teil hat ca. 550 Bytes - ist also gar nicht mal so lang. Ob da noch etliche zusätzliche Querverweise ins OS stattfinden muss ich wie gesagt noch analysieren. Das wird aber sicherlich ein paar Wochen in Anspruch nehmen - und vielleicht gelingt es mir ja auch nicht eine quasi eigene lauffähige CIOV zu erstelle, aber ich werde es versuchen und wenn es gelingt auch hier posten.
Es mag kompliziert sein, aber ein Hexenwerk ist das nicht... letztlich ist es auch "nur" Code.
Gruß
Peter

slx
Beiträge: 134
Registriert: 18.06.2021 23:16
Has thanked: 93 times
Been thanked: 10 times
Kontaktdaten:

Re: CIOV ohne OS

Beitrag von slx »

xBIOS erlaubt mit weniger Platz als ein DOS Zugriff auf Dateien:
https://atariwiki.org/wiki/Wiki.jsp?page=XBIOS#section-XBIOS-XBIOSOverview

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: CIOV ohne OS

Beitrag von Dr. Irata »

sehr interessant!! Vielen Dank!

Erhard
Beiträge: 555
Registriert: 04.11.2021 15:52
Has thanked: 52 times
Been thanked: 111 times
Kontaktdaten:

CIOV ohne OS

Beitrag von Erhard »

Ich mag XBIOS nicht, weil die verschiedenen Versionen untereinander nicht kompatibel sind.

Das heißt, man kann nicht hergehen und Spiel 1 mit XBIOS 1, Spiel 2 mit XBIOS 2 und Spiel 3 mit XBIOS 3 auf eine Disk packen und die 3 XBIOS Versionen durch _eine: gemeinsam genutzte Version ersetzen. Aber vielleicht sind die Gegebenheiten aus meinen damaligen Versuchen veraltet und sowas geht mittlerweile.

Benutzeravatar
Kveldulfur
Beiträge: 624
Registriert: 17.08.2021 02:32
Has thanked: 237 times
Been thanked: 163 times
Kontaktdaten:

Re: CIOV ohne OS

Beitrag von Kveldulfur »

Hallo!

Mich würde interessieren unter welcher Lizenz XBios läuft. Nicht, dass man da rechtliche Probleme bekommt, wenn man es in seinen Programmen nutzt und verteilt.

Grüße
Janko

Benutzeravatar
DjayBee
Beiträge: 624
Registriert: 17.08.2021 04:02
Has thanked: 384 times
Been thanked: 175 times
Kontaktdaten:

Re: CIOV ohne OS

Beitrag von DjayBee »

Kveldulfur hat geschrieben:
21.01.2023 10:18
Mich würde interessieren unter welcher Lizenz XBios läuft. Nicht, dass man da rechtliche Probleme bekommt, wenn man es in seinen Programmen nutzt und verteilt.
Frag einfach xxl auf AA. Er hat's geschrieben.

Benutzeravatar
Mathy
Beiträge: 1133
Registriert: 18.06.2021 11:13
Wohnort: Heerlen, NL
Has thanked: 449 times
Been thanked: 256 times
Kontaktdaten:

Re: CIOV ohne OS

Beitrag von Mathy »

.
Hallo Leute

Hat xxl nicht absichtlich irgend eine Inkompatibilität eingebaut in XBIOS?

Tschüß

Mathy
Wer oder was hat denn da geblitzt?

Benutzeravatar
CharlieChaplin
Beiträge: 584
Registriert: 18.06.2021 22:59
Has thanked: 115 times
Been thanked: 153 times
Kontaktdaten:

Re: CIOV ohne OS

Beitrag von CharlieChaplin »

Hmmm,
also XBIOS funkt. schon irgendwie mit Floppy-Speeder, aber die meisten Programme scheinen das irgendwie nicht zu nutzen und laden mit 1x SIO. XBIOS scheint nur mit SIO zu laufen, nicht via PBI/ECI bzw. nicht mit Festplatte (und wohl auch nur mit DOS 2.x). Dafür soll es laut XXL aber besonders einfach sein aus XBIOS-Disks dann Carts zu machen...

XXL mag das U1MB nicht und einige seiner Programme enthalten absichtlich Code, so dass sie damit nicht funktionieren. Ob solcher Code auch irgendwo in XBIOS enthalten ist, weiß ich nicht. (Für ein paar dieser bösen Programme sind bei atarionline.pl und Atari Age gepatchte Versionen released worden.) XXL mag auch die 65802 und die 65816/Rapidus nicht besonders, so dass einige seiner Programme absichtlich illegal/undocumented Opcodes enthalten, damit sie damit nicht laufen, wenngleich diese Programme auch problemlos ohne die illegal Opcodes laufen würden (auch da gibt es bei Atari Age ein paar gepatchte Versionen). Nach einer Weile hatte jedoch niemand mehr Lust seine Programme zu patchen, man beließ sie entweder so oder ignorierte sie einfach.

Da XXL dies lange Zeit abstritt, bis es mehrfach via Sourcecode bei AA bewiesen wurde (und er sich sogar in einer Diskussion bei AA oder atarionline selbst verplapperte) und stets äußerte ein Atari mit diesen Erweiterungen sei ja kein Atari mehr, fingen einige Atarianer an, sich über ihn lustig zu machen und von seinem Foto seine Frisur "auszuschneiden" und mit anderen Bildern als Avatar oder ähnliches zu benutzen. Man kann dies bei Pancio gut sehen, hier trägt Spongebob die Frisur von XXL...

Link zur Webpage von XXL (mit Google translate): https://xxl-atari-pl.translate.goog/?_x ... r_pto=wapp

Benutzeravatar
DjayBee
Beiträge: 624
Registriert: 17.08.2021 04:02
Has thanked: 384 times
Been thanked: 175 times
Kontaktdaten:

Re: CIOV ohne OS

Beitrag von DjayBee »

CharlieChaplin hat geschrieben:
22.01.2023 03:07
also XBIOS funkt. schon irgendwie mit Floppy-Speeder, aber die meisten Programme scheinen das irgendwie nicht zu nutzen und laden mit 1x SIO. XBIOS scheint nur mit SIO zu laufen, nicht via PBI/ECI bzw. nicht mit Festplatte (und wohl auch nur mit DOS 2.x). Dafür soll es laut XXL aber besonders einfach sein aus XBIOS-Disks dann Carts zu machen...
So habe ich das auch in Erinnerung und Prince of Persia ist ein Beispiel für Disk-to-Cart.

XXL mag das U1MB nicht und einige seiner Programme enthalten absichtlich Code, so dass sie damit nicht funktionieren. Ob solcher Code auch irgendwo in XBIOS enthalten ist, weiß ich nicht.
Meines Wissens nicht weil er das als privaten Feldzug sieht und XBios primär für andere Leute ist.

XXL mag auch die 65802 und die 65816/Rapidus nicht besonders, so dass einige seiner Programme absichtlich illegal/undocumented Opcodes enthalten, damit sie damit nicht laufen, wenngleich diese Programme auch problemlos ohne die illegal Opcodes laufen würden (auch da gibt es bei Atari Age ein paar gepatchte Versionen).
Nach meinem Verständnis ist er so "paranoid speichersparsam" oder auch "er will es sich und allen beweisen", dass er nicht einsieht, auch nur ein überflüssiges Byte zu verschwenden.
Ob das jetzt sinnvoll ist oder nicht, kann jeder für sich selbst beurteilen. ;)

Da XXL dies lange Zeit abstritt, bis es mehrfach via Sourcecode bei AA bewiesen wurde (und er sich sogar in einer Diskussion bei AA oder atarionline selbst verplapperte)
Das weiß ich nicht, aber seine Privatfehde mit Candle basiert darauf, dass Candle sich über sehr lange Zeit (IIRC Jahre) weigerte, die Inkompatibilitäten von U1MB und ich meine auch Incognito zuzugeben, die I/O-Adressen der Custom Chips teilweis über die komplette Page spiegeln. Das beeinflusst zwar sehr wenige nicht-XXL Programme, es gibt sie aber durchaus, z.B. SynFile+ oder eines der anderen SynX Programme scheint davon betroffen zu sein.

und stets äußerte ein Atari mit diesen Erweiterungen sei ja kein Atari mehr, fingen einige Atarianer an, sich über ihn lustig zu machen und von seinem Foto seine Frisur "auszuschneiden" und mit anderen Bildern als Avatar oder ähnliches zu benutzen. Man kann dies bei Pancio gut sehen, hier trägt Spongebob die Frisur von XXL...
ROFL, das wusste ich noch nicht.

Erhard
Beiträge: 555
Registriert: 04.11.2021 15:52
Has thanked: 52 times
Been thanked: 111 times
Kontaktdaten:

CIOV ohne OS

Beitrag von Erhard »

Hi,

ich bin auch der Meinung, daß ein Atari mit zu vielen bestimmten Erweiterungen nicht mehr wirklich ein A8 ist, aber wer die Erweiterungen haben will möchte sie eben haben.

Ich finde nicht, daß man hergehen sollte, und so erweiterte A8 absichtlich programmtechnisch zu boykottieren, besonders nicht bei PBI-Geräten, die ja von Atari im OS bereits so vorgesehen sind.

Ich finde auch, daß man Leute mit von der Mehrheit abweichender Meinung weder mobben noch deren Leumund beeinträchtigen sollte.

Meinungsvielfalt ist ein wichtiger Bestandteil einer demokratischen Gesellschaft. Ohne Meinungsvielfalt keine Demokratie. Jedem seine Meinung, egal ob von der Mehrheit getragen oder nicht, ob es eine gute Meinung ist oder eine sch**** ähm, weniger gute Meinung.

Antworten

Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 1 Gast