Beiträge von Jan1980

    Hallo.


    Vielen Dank für die Antworten ! Ich hab mir das alles natürlich durchgelesen und es mit meiner Literatur "zurück verfolgt"...


    Hier mal der funktionierende Code:



    Den Source hab ich natürlich assembliert mit MASM und dann mit dem Linker eine EXE-file draus gemacht. Comset.exe hat 847 bytes.


    Ich musste zuerst das directive ".model" von tiny auf small setzen. "Tiny" bedeutet, dass sich alles innerhalb eines Segments abspielt. Bei small werden die Segmente jeweils in einem 64kb Bereich geführt. Sehr wahrscheinlich ist deswegen eine EXE-file mit dem gleichen Funktionsumfang wie eine COM-file immer größer.


    Dann wurde ja weiter oben schon von dxl geschrieben, dass das Datensegment nicht richtig initialisiert ist. Genau so war es. Ich dachte, mit assume sei das erledigt. Dem war es nicht so. Wie Martin bereits sagte, es kann ja mehrere Datensegmente in dem Programm geben.

    Dem zu Folge muß ein Pointer auf das jeweilige, benötigte Datensegment gesetzt werden. Das geschieht über das DS Register.


    Über die Funktion 09 im Interrupt 21h möchte ich den Textstring darstellen. Offset bedeutet, dass er bei der Abfrage vom Anfang des Datensegments zu dem angegebenen Label mit dem dementsprechenden Text springt, bzw. diesen darstellt.


    Sinniger ist dieses winzige Programm natürlich als COM-file. Das wird es letzten Endes auch werden. Aber es geht ja um das Lernen und den Spaß am Vintage-computing... :)


    Gruß Jan

    Mal eine kleine Frage: Warum hast Du das nicht im passenden Forum Assembler gepostet ?

    Ja, gute Frage. Wenn möglich, bitte verschieben ! Danke !


    Ich bin auf der Arbeit und kann jetzt nicht mehr nach schauen. Aber ich habe mir überlegt, das „end start“ direkt nach dem Code Segment zu setzen und nicht erst ganz am Ende. Evtl ist das ja des Rätsels Lösung ?!


    Gruss Jan

    Initialisiert ist es ja. Der Text erscheint ja, allerdings davor Datenmüll.. Ich habe festgestellt, dass es schwierig ist, im Netz Beispiel Sources im Bereich x86 Vintage computing zu finden. Wenn man nach x86 codes sucht, ist das sehr breit gefächert, da es zum einen viele verschiedene Assembler gibt und zum anderen die Technik ja quasi noch aktuell ist..

    Das macht es schwieriger, als zB beim C64 oder so... Man muß sich quasi durch alte Bücher durcharbeiten.. Ich muß nachher nochmal ein bißchen blättern... :)



    Gruß Jan

    Nachdem ich jetzt das COM-Port Problem bei meinem Cordata PPC gelöst hatte, wollte ich mir mit Microsoft MacroAssembler 5.0 ein paar Zeilen Code schreiben, um die Com-Ports zu konfigurieren und anschließend das ganze mit einer schicken Rückmeldung quittieren. Ich weiß, dass das auch mit dem MODE Befehl geht. Aber es geht mir ja um das Lernen des Assemblers. Wichtig dabei war mir, dieses Mal den Stack zu definieren und das Programm somit als lauffähige EXE Datei zu erstellen. Außerdem würde ich gerne den Text bzw. die spätere Rückmeldung in das Datensegment auslagern. Für das Extrasegment hab ich keine Verwendung. Hier mal der Code:



    Das Programm funktioniert, also die COM-Ports werden sauber konfiguriert. Aber anstatt nur "Das ist ein Text..." kommen da erst schätzungsweise 7-8 Zeilen Datenmüll und erst dann der gewünschte Text.


    Wie rufe ich aus dem Code Segment gezielt meine Bytes im Datensegment auf, um sauber nur meinen Text dar zu stellen ?



    Vielen Dank !


    Gruß Jan

    Kurze Info. Das Problem ist mittlerweile gelöst. Auf dem Mainboard ist ein Jumper, mit dem COM1 als DTE oder DCE eingestellt werden kann. Dieser war natürlich falsch.

    Davon wusste ich vorher nichts. Ich hab mühsam die französische Anleitung übersetzt.. :)


    Gruß Jan

    Wenn bei WS 4.0 der Terminal Installer dabei ist, wär das auch gut. Dann würde ich das gerne mal probieren.

    Das DSK Image lade ich heut Abend hoch, wenn ich zuhause bin.


    Vielen Dank !


    Gruss Jan

    Ich habe:


    - Intel Pong-Konsole

    - Atari VCS heavy sixer NTSC

    - Atari VCS heavy sixer PAL

    - Atari VCS woody 4 switcher

    - Atari 7800

    - NES (nur wegen Tetris - ich liebe es ! :) )

    - NES mini

    - Playstation 1

    - Nintendo DS


    Meine Frau hat:


    - Nintendo Wii

    - Playstation 2

    - Playstation 3

    - Playstation 4 mit VR Gedöhns und so

    - 2 Gameboy´s (das erste Modell)

    - 1 Gameboy Color



    Gruß Jan

    Hallo.


    Ich suche Wordstar 2.2 angepasst auf das VT100 Terminal. Meins ist irgendwo auf einem DSK Image, da komm ich momentan (noch) nicht dran (siehe Nachbarthread). Kann mir jemand die files als normale, ausführbare Dateien schicken ? Evtl. noch supercalc, falls möglich... :)


    Vielen Dank !


    Gruß Jan1

    Vielen Dank für die Antwort ! Ja, ich nutze in Teraterm auch gelegentlich den Transfer via CON: mit der Wartezeit von 1ms. So hab ich xmodem überhaupt erst auf den Imsai gebracht..


    Ich bin normalerweise kein Freund von Emulatoren. Aus der Antwort lese ich auch raus, dass es da auch nicht die eierlegende Wollmilchsau gibt.


    Von dem Gedanken, einen eigenen Floppycontroller zu bauen, komme ich nicht mehr weg. Dann könnte ich gemütlich die dsk Images auf ne SD Karte ziehen und am RC2014 weiter verarbeiten. Das will ich jetzt mal etwas erforschen. In Eagle hab ich ein klein wenig Erfahrung, allerdings überhaupt keine Erfahrung, was die Entwicklung einer solche Floppycontrollerkarte angeht.

    Als Controller-Chip habe ich mich für den TMS2797 entschieden. Dieser braucht nur 5V Spannung, ist softwarekompatibel zum FD179X, unterstützt das IBM 3740 und das IBM 34 Format und hat den Dataseparator bereits integriert. Zudem unterstützt er auch doppelseitige Disketten.

    Was das Interfacing zwischen Controller und Floppy selber angeht, sollte das kein Problem sein, man braucht halt ein paar hexinverter 7406. Wo ich mich noch einarbeiten muß, ist die Adressierung.

    Letzten Endes soll es eine Karte sein mit einem 50pol 8" Floppy Anschluß. Da kommt dann eine Adapterkarte dran (die ich ja bereits habe) und daran kommt dann das Lotharek.

    Vor der Programmierung eines reinen Floppy-BIOS bzw. einer Firmware hab ich keine "Angst". Was mir etwas Kopfzerbrechen macht, ist, dass man das alles mit der CF card unter einen Hut kriegt...


    Gruß Jan

    Hallo.


    Ich habe 3 CP/M Rechner.


    1. Den Imsai 8080 mit 8"sssd Doppelfloppy und serieller Anbindung an den Haupt-PC.

    2. Den Kaypro II.

    3. Den RC2014, meine Probier-und Bastelbude.


    Zum Datentransfer nutze ich Xmodem, das funktioniert soweit ganz gut. Wenn ich mehrere Dateien auf einen Schlag senden will, dann mache ich am PC eine ZIP-Datei und entpacke die am Ziel-Rechner. Die Baudrate vom RC2014 beträgt ab Werk 115200 Baud, es handelt sich um eine synchrone SIO Karte, die Baudrate bezieht sich also auf die Taktfrequenz. Mit 115200 Baud kommen Imsai, Kaypro und auch das Xmodem Protokoll nicht klar, außerdem auch keine alten Terminals. Stellt man die Taktfrequent so ein, dass die Baudrate 19200 Baud beträgt, dann tuckert der RC2014 mit 1,22 MHZ vor sich hin, anstatt mit 8 MHZ. Also hab ich das Teil gemoddet, dass er mit 8MHZ läuft und gleichtzeitig 19200 Baud hat. Die 2. Systemclock machts möglich..

    Soweit so gut. Normale Dateien kann ich also kreuz und quer zwischen den Geräten übertragen, wie ich möchte.


    Mein Problem sind aber DSK-Images. Da freut man sich, dass man die gesuchte Software gefunden hat und dann ist das so ein "doofes" DSK Images. Als mein Imsai und meine Doppelfloppy noch offen waren, hat das kein Problem dargestellt. Ich hatte ein gotek mit einer Adapterplatte als Laufwerk B: dran und konnte einfach die Daten kopieren. Verständlicherweise möchte ich den Imsai 8080 zwitgemäß und als zusammengebautes System nutzen. Also muß eine andere Lösung her. Also wie kriege ich an meinem Main-PC DSK-Images geöffnet und kann dann bequem via Teraterm bzw. xmodem den Kram zum Zielrechner rüber schaukeln ?


    Irgendwie hab ich mir eingeredet, den RC2014 als "Brückenrechner" zwischen Main-PC und Imsai nutzen zu wollen/müssen. Wegen der korrigierten Baudrate und den 2 seriellen Anschlüssen ist das ja ohne Probleme möglich. So kann ich die SW am RC2014 testen, und was gut ist, schiebe ich am Imsai auf ne 8" Diskette.. Außerdem könnte ich den RC2014 als "Entwicklerplattform" nutzen, also am Haupt-PC, allerdings dann via Terminal an einem reellen CP/M Rechner in Assembler programmieren. Mein 8085 Simulator braucht 10 Minuten für die Ausführung eines Codes, während der Imsai nur 2/10 Sekunden dafür braucht. Wordstar und Macroassembler oder der "normale" Assembler würden da genügen.


    1. Idee: Ich nutze am Main-PC einen CP/M Emulator, in den ich DSK Images mounten kann. Dann kopieren ich den Kram einfach via Xmodem zum RC2014. Welcher Emulator wäre da gut ?


    2. Idee: Ich kaufe/baue mir einen Floppycontroller für den RC2014, der IBM 3740 Format unterstützt. Dann kann ich am RC2014 ein Image von der SD-Karte des Lothareks lesen und einfach rüberkopieren. Oder aber, ich schließe den Lotharek Floppyemulator als Laufwerk A: und ein richtiges 8"SSSD Laufwerk als Laufwerk B: an. Dann könnte ich fertige Floppydisks direkt erstellen ohne eine serielle Datenübertragung. Ich habe eh noch kein Gehäuse für den RC2014. Evtl. würde ich dann ein Gehäuse bauen mit allem intergriert.


    Die große Frage ist, welchen Floppycontroller nehme ich ?! Ich habe keine fertige Karte gefunden, die IBM 3740 Format unterstützt. Einen einzelnen FD1771 Controller hätte ich noch da... da müsste ich evtl. was bauen...weiß aber noch nicht wie... :)


    Wie macht ihr das mit diesen DSK Images ?



    Vielen Dank !


    Gruß Jan

    Hat evtl jemand Interesse Assembler für eine neue 32 Bit RISC CPU zu lernen?


    Kollege entwickelt da gerade was.

    Interessant wäre es auf jeden Fall. Aber ich persönlich möchte mich eher auf Intel 8080, 8086 und MOS 6502 konzentrieren. Mein Ziel ist es, an allen Geräten in meinem Bestand was auf Prozessorebene machen zu können...

    Evtl. wäre es besser, wenn du dafür einen eigenen Thread aufmachst. Evtl. interessieren sich Leute dafür, die sich nicht für den x86 interessieren und in Folge dessen diesen Thread erst gar nicht öffnen ?!


    Gruß Jan

    Die Probleme sind gelöst. Ich schreibe die Auflösung, falls selber mal jemand in der Situation sein sollte.


    1. Ein Logikchip auf der Karte war defekt. Dadurch hat sich der "Bildschirmspeicher" nach ein paar Sekunden in einen anderen Bereich verschoben.


    2.Den Mod von s100 Computers musste ich anwenden, dass ich den Speicherbereich doppelt belegen kann trotz fehlender PHANTOM-Leitung. Hier der Link:


    http://www.s100computers.com/H…older/SSM/VDB-1/VDB-1.htm


    3. Ich hatte einen, aus Unwissenheit resultierenden :D , Fehler gemacht. Der IMSAI kann natürlich 64kb adressieren. Ich habe 60kb RAM drin, außerdem ein 2kb Eprom mit fast allen BIOS Routinen (um das eigentliche Bios auf der Diskette aus zu dünnen) und ein 2kb Eprom mit meinem Monitor-Programm.

    Der Gedankengang war, final eine 58k Version von CP/M zu verwenden und den Bildschirmspeicher der Grafikkarte oberhalb von CP/M ab zu legen. Aber obwohl es nur eine 58k Version war, macht sich CP/M trotzdem bis zum Ende breit. Oberhalb des BIOS folgt im Speicher der Puffer für die Disk-directories. Die Einträge sah ich dann auf dem CRT, der an der Grafikkarte angeschlossen ist. Bei einer 56k Version von CP/M passiert das gleiche.

    Also musste ich die Grafikkarte in den oberen TPA-Bereich legen. Also vor CCP. Das ist jetzt an der Adresse 0D000h.


    Es funktioniert jetzt alles einwandfrei. Zum Spaß hab ich noch ein kleines "Speichertestprogramm" geschrieben. Auch aus dem Grund, weil nach einschalten des Rechners nur Datenmüll auf dem CRT zu sehen ist. Das Programm schreibt den Bildschirm voll mit "@" (Ascii 40h). Anschließend zieht es von jeder Speicherstelle 20h ab, was Space ergibt, es löscht also den Bildschirm. Dann überprüft es, ob an jeder Speicherstelle ein 20h steht. Falls nicht, schreibt es ein "E" für Error und stoppt an der Stelle... Wenn alles OK ist, schreibt es oben links "1k Video RAM ok..." und kehrt zu CP/M zurück..




    Gruß Jan

    Hallo.


    Mein Imsai 8080 mit 64kb RAM läuft die ganze Zeit via Terminal (Hazeltine Esprit) ohne irgendwelche Probleme.

    An diesem Terminal bin ich natürlich nicht in der Lage, Grafik dar zu stellen. Jetzt hab ich hier aber noch eine Grafikkarte rumliegen. Eine Solid State Music VB1C. Diese kann 64 Spalten x 16 Zeilen oder 32 Spalten x 16 Zeilen auf einem Composite Monitor darstellen. Wie wir alle wissen, hat der Ascii-Zeichensatz 7 Bit (0-6) . Bei dieser Grafikkarte wird das 8. Bit (Bit 7) dazu genutzt, den Grafikmodus ein bzw auszuschalten. Ist also Bit 7=1, dann kann man mit den untersten 6 Bit ein Grafikzeichen in 2x3 Pixel definieren. Ist Bit 7=0, dann wird über die untersten 7 Bits (Bit 0-6) das dementsprechende Ascii-Zeichen ausgegeben.

    Die Karte ist keine "Terminal-Ersatzkarte", die man über einen Port ansprechen würde, sondern eine über den Speicherbereich adressierbare Karte. Sie hat 1kb Speicher on board. Jetzt bin ich in der glücklichen/unglücklichen Lage, dass mein Imsai bereits einen Speicherausbau von 64kb hat und über einen 16Bit Adressbus ist natürlich nicht mehr zu erreichen. Also habe ich den Speicherbereich, auf den die Karte gejumpert ist, zwangsweise zweimal vergeben, was ja zu Problemen führen muss.. Trotzdem habe ich es probiert. Der Composite-Monitor ist natürlich voller Speichermüll. Mit den Toggle switches hab ich 31h an den Speicherstart der Karte geschickt. Oben links kam ne "1", also wie es sein soll..

    Nach dem Booten von CP/M ist er nach ein paar DIR Befehlen abgestürzt. Ich war nicht mehr in der Lage am Terminal etwas ein zu geben.

    Daraufhin habe ich aus meiner Speicherkarte den Chip an der dementsprechenden Speicherstelle entfernt, dass dieser eben nicht doppelt belegt ist. Auch das war ohne Erfolg. Die nächste Idee war einfach mal die Speicherchips an der Karte zu entfernen. Dann hatte ich am Composite-Monitor natürlich kein Bild mehr.

    Normalerweise benutze ich eine CP/M 60kb Version. Ich hab eine 56kB Version erstellt, dass zwischen dem CP/M BIOS, welches von der Diskette geladen wird und meinen Eproms, die bei F000h beginnen, definitiv genug Platz ist. Also um zu vermeiden, dass CP/M irgendwelche weiteren Daten ablegen will, die dann mit der Grafikkarte in Konflikt kommen, was dann zu einem Absturz kommen könnte. Auch das hat nichts gebracht. Bei s100-computers auf der Webseite steht ein "MOD" zu der Karte. Man soll an einem Chip 2 Beinchen hochbiegen und einen Chip ziehen. Auch das hab ich probiert. Ich kam dann irgendwann mal soweit, dass ich MBASIC laden konnte. Die Karte war an EC00h adressiert, also 60416 dezimal. Ich hab in MBASIC mehrmals Poke 60416,49 eingegeben, was eine "1" oben links in der Ecke darstellen sollte. Er hat die "1" bei dem selben Poke immer an einer anderen Stelle ausgegeben und irgendwann ist er abgestürzt.

    Vielleicht hat einer von euch eine Idee, wie ich die Karte sauber einbinden kann ??


    Jetzt ist es ja so, beim S100-Bus gibt es die PHANTOM Leitung an Pin67. Ist diese aktiv, darf das device den Speicher überlappen. Diese Leitung ist aber bei der Karte nicht belegt... Evtl. hat da jemand eine Idee für eine Bastellösung ?! Ich hab jetzt mal noch auf Verdacht neue RAM-Chips und neue HEX-Buffer bestellt..



    Vielen Dank !


    Gruß Jan

    Vielen Dank nochmal für die Antworten. So langsam wird mir einiges klarer. Ich bleibe am Ball. Das mit den Hardware-Interrupts ist auch sehr interessant, da hab ich mich mal durch die Schaltpläne geschlagen.


    Im Grunde muß ich mir ja über die Stelle der Segmente keine Gedanken machen, das macht ja der Assembler ?! Aber, wenn er eh das Programm immer an einer anderen Stelle ablegt, dann wäre ja debugging schwierig, oder verstehe ich das falsch ? Und warum brauche ich dann den org Befehl, wenn es keine Rolle spielt ? COM-Files beginnen doch normal immer bei 0100h, aber in welchem Segment ?! :)


    Ich hab mal zum Probieren ein kleines "Hello VZEKC" Programm geschrieben...



    In dem Code ist kein Stack definiert, was man bei einer COM-file anscheinend nicht zwingend braucht. Als Texteditor habe ich den Nortoncommander benutzt. Anschließend mit MASM assembliert und mit dem Linker aus der Object-Datei eine EXE-Datei erstellt. Dabei gab es natürlich den Fehler, dass der Stack fehlt. Aus der EXE-Datei habe ich dann mit exe2bin eine COM-File erstellt. Und diese funktioniert ! :)


    Momentan bin ich ein Buch am lesen "Mapping the IBM PC and PCjr", das macht einen ganz guten Eindruck. Außerdem sammele ich Informationen, mit welchen Routinen bzw. Interrupts ich am Besten was erledigen kann..



    Gruß Jan

    Interessant wäre ja erstmal zu wissen, welchen VC20 er überhaupt hat. Vielleicht hat er ja noch das alte Modell mit dem 2pol "Netzteil"-Anschluß. Da gibt es keine Probleme mit dem "Netzteil". Das ist ja nur ein reiner Trafo. Was soll daran kaputt gehen ?!


    Wie kann ich das erkennen, ob das ein 2pol Netzteil Anschluss ist ?

    An der Seite, wo auch der Netzschalter ist. Ist da eine viereckige Buchse mit 2 Pins oder ist da eine runde DIN-Buchse ?


    Gruß Jan

    Interessant wäre ja erstmal zu wissen, welchen VC20 er überhaupt hat. Vielleicht hat er ja noch das alte Modell mit dem 2pol "Netzteil"-Anschluß. Da gibt es keine Probleme mit dem "Netzteil". Das ist ja nur ein reiner Trafo. Was soll daran kaputt gehen ?!


    Gruß Jan

    Ja klar, auch ! Deswegen sagte ich ja komplett original. Mit der Seriennummer müsste er das 326298 oder schon das KU Board drin haben. Mit dem guten alten SID von 1982, wo man das Rauschen in Giana Sisters noch richtig hört am Anfang.. :) Wichtig ist halt, dass er so ist, wie er damals "vom Band" kam.


    Die Seitenansicht der Joystickports wäre interessant. Da müsste dann um die Powerbuchse noch ein quadratischer Ausschnitt sein. Und Bilder vom Board wären auch interessant ! Doch vorsicht, die hinteren Haltnasen brechen sehr schnell ab beim Öffnen des Gehäuses !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


    Gruß Jan

    Ja der Grundig BGC36 ist ein toller Monitor. Den habe ich auch... leider fehl meinem aber die SCART Zusatzkarte. Er hat wie bei Dir auch eine Scartbuchse verbaut, aber da mußt wohl noch eine Zusatzkarte rein, damit man diesen Anschluß nutzen kann. Kann mich auch irren, aber ich bekomme darüber leider keinerlei Anzeige. Den habe ich damals (Anno Zopf irgendwie um 1980) zusammen mit meinem IBM 5155 Portable PC gekauft.


    Beide Geräte funktionieren noch.

    Vielen Dank für die Info ! Ich habe auch diesen Monitor und wollte mal die Scart Buchse nutzen, was nicht ging. Da er normalerweise nur via 9pol Buchse verbunden ist und auch einwandfrei funktioniert, wollte ich iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiirrrrrrgendwann mal nach dem Scart-Problem schauen.... Aber das hat sich dann wohl erledigt.. :)


    Gruß Jan

    Genau dieses Laufwerk ist in meinem IBM AT verbaut. Da es einwandfrei funktioniert, hatte ich nie mit einem anderen Laufwerk probiert. Aber ich gehe jetzt einfach mal davon aus, dass jedes Laufwerk funktionieren würde !


    Gruß Jan

    Der IBM 5170 funktioniert mit 1.44mb Disketten. Allerdings lässt sich das mit den originalen Installationsdisketten nicht einstellen. Dazu brauchst du das Programm Gsetup ! Damit geht das 100%ig.

    Ich habe bei meinem 5170 ein 5.25“ 1.2mb laufwerk als Laufwerk A: am Ende der Strippe, und in der Mitte ein 3.5“ 1.44mb Laufwerk. Das funktioniert seit Jahren einwandfrei.

    Bei IBM darfst du das Laufwerk A: nicht als 0 jumpern, sondern auf 1 wegen dem twisted cable. Lw B: dementsprechend auf 2 anstatt auf 1 wie bei anderen Rechnern.


    Gruss Jan

    Also hat man das vor allem gemacht, um Programme kompatibel zu machen, egal wie die Ausbaustufe des Rechners war ?! Das war ja bei CP/M ein riesen Problem. Im Grunde musste man die Equals anpassen im Listing und das Programm individuell auf das eigene System konfigurieren und assemblieren ?! Sehe ich das richtig ?

    Und mit dieser Segmentgeschichte ist es also egal, ob 64kb oder 640kb Hauptspeicher insgesamt da sind, das OS sucht den passenden Speicherbereich. Vorrausgesetzt das Programm passt in den Speicher, versteht sich. Dennoch verstehe ich den Aufbau (noch) nicht.

    Wie arbeitet ein assmbliertes Programm mit Sprüngen (zB bei Schleifen oder Subroutines), wenn die Adressen nicht 100% klar sind ?



    Gruß Jan

    Es geht mir ja nicht nur um das Parken der Platte. Unterm Strich gehts mir ja eher darum, wie so etwas programmiert wird. Hintergründe erblicken :)

    Trotzdem danke für das Tool !


    Ja, das war natürlich der riesen Vorteil des 68000ers.... eine vollends lineare Adressierung. Vielleicht komme ich irgendwann auch mal dazu.. Aber momentan will ich mal in die Welt des 8088 schnuppern...



    Vielen Dank !


    Gruß Jan

    Hallo.


    Ich beschäftige mich seit 2-3 Jahren mit Assemblerprogrammierung am MOS 6502 und Intel 8080. Meine Programme sind natürlich nichts weltbewegendes, aber ich habe schon das ein oder andere Tool programmiert, das mir persönlich, bei meinen Projekten weitergeholfen hat. Ohne Assemblerkenntnisse hätte ich auch niemals meinen Imsai 8080 sauber zum Laufen gekriegt, versteht sich. Das ist ja noch "Computer pur".

    Um irgendwelche Spiele und Demos zu programmieren, fehlt mir zum einen die Zeit und zum anderen hab ich da auch überhaupt keine Ideen. Dazu muß man eine künstlerische und eine technische Ader haben. Ich würde mich eher als "technisch kalt" bezeichnen. Ohne Ideen für irgendwelche Grafiken, Spiele-Ideen oder dergleichen.. Natürlich hab ich am C64 schon mit den Rasterinterrupts gespielt und den ein oder anderen Lauftext unten, mit stehender Überschrift oben und SID-Sound Untermalung Code gebastelt. Aber das war es künstlerisch dann auch schon.

    Zwischendurch hab ich dann mal mit Z80 Assembler angefangen, aber da find ich irgendwie nicht hin. Ich habe da auch nur einen Vintage-Rechner, den Kaypro II, da. Und wenn ich da dringend was bräuchte, könnte ich das auch in 8080 Assembler tippen. Das ist ja schließlich kompatibel.

    Da ich auch Fan der Marke mit dem Nadelstreifenanzug und der Bügelfaltenhose bin, würde ich jetzt gerne mal was an meinem IBM 5160 machen, also im X86 Assembler. Bzw. auch für meinen IBM 5170 und den Cordata PPC...


    Die Kenntnisse beim 8080 machen es mir vielleicht ein bißchen leichter beim Erlernen des x86 Assemblers bzw. der Mnemonics. Allerdings ist das "Außenrum" natürlich anders.


    1. Da wäre der Speicher. Bisher hatte ich meine 64kb, also von 0000h bis FFFFh. Linear adressierbar. Beim IBM mit seinen 640kb RAM hab ich 16 Bit Register, aber hardwareseitig einen 20 Bit Adressbus (also bis 1 MB). Natürlich kann man mit 16 Bit keine 20 Bit linear adressieren. Deswegen gibt es die Segmente und in denen die Offsetadresse. 1 MB sind hardwareseitig adressierbar, 64kb sind über 16 Bit Register adressierbar. Jetzt könnte man meinen, man teilt einfach 1MB durch 16. Dann hat man 16 Segmente á 64 kb, was 1 MB ergäbe. Und ein Segment würde direkt nach dem anderen beginnen. Das würde normalem Bankswitching entsprechen, wie es bei anderen Rechnern der Fall ist. So "einfach" ist das aber beim 8088 nicht.


    (Ich will künftig jetzt 8088 schreiben anstatt x86, weil ab 80386 das Problem wegen der 32 Bit breiten Register nicht mehr besteht).


    Es ist nicht so einfach, weil in den Segmenten eine Überlappung sein kann. Ein neues Segment darf frühestens 16 Bytes nach dem letzten beginnen. Das würde ja bedeuten, dass Byte 17 von Segment 1 exakt die gleiche Speicherstelle ist wie Byte 00 von Segment 2. Oder sehe ich das falsch ? Vielleicht kann mir das jemand genauer erklären ?!


    2. Eine COM-file hat max 64kb, läuft also immer innerhalb eines Segmentes. Eine EXE-Datei kann im Prinzip den kompletten Speicher nutzen. Deswegen muß im Assembler (in meinem Fall MASM 5.0) allerdings mehr definiert werden, zB der Stack. Beim 6502 ist der Stack automatisch auf Page 1. Beim 8080 definiere ich den Stack über das Stackpointer Register und reserviere dazu genügend bytes am Ende des Programms. Rückwärts, versteht sich. Wo befindet sich der Stack einer COM-file, wenn er nicht explizit definiert wurde. Setzt diesen MASM automatisch am Ende des Programms, so wie ich es im 8080 Assembler manuell mache ?


    3. Ich schreibe ein helloworld-Programm mit dem MASM mit org 0100h. CP/M und DOS Programme beginne immer ab 0100h. Ich lade das Programm, es steht im Speicher. Wenn ich in den Debugger gehe und mit "-d 0100" den Dump anschauen will, steht da nichts. Wie finde ich raus, in welchem Segment das Programm steht ?


    4. "INT"-Anweisungen stehen für System-Calls (8080 Slang) oder Kernal-Routinen (Cevi Slang). Ich schiebe also die gewollten Daten in die dementsprechenden Register und führe die Int(errupt) Funktion aus. Der Name INTerrupt wahrscheinlich deswegen, weil er das Hauptprogramm kurz verlässt, es also unterbricht, diese "Unterbrechungsroutine" wird ausgeführt und dann springt er wieder zurück ins Hauptprogramm. Der XT hat weniger "Kernalfunktionen" als zB der AT oder der XT286. Man hat zB nicht die Funktion "Festplatte parken" beim XT. Dann gibt es neben den "Kernalroutinen" auch noch die INT-Routinen von MS-DOS. Dabei handelt es sich quasi um eine Erweiterung der "Kernalroutinen" eine Ebende höher..

    Die große Frage ist, wie greife ich zB auf die Funktionen des Festplattencontrollers zu ? Das XT Bios, oder genauer gesagt die Firmware im ROM, hat keine Funktion bzw. keinen INT, um einen Seek in Richtung Festplatte zu schicken. Ich müsste diesen Seek direkt am Festplattencontroller aufrufen, um zB die heads zum parken in die landing zone zu fahren. Damit könnt ich mir ein kleines Festplattenparkprogramm, 100% angepasst auf meine Platte, schreiben.. Wie geht man da vor ?


    5. Vom 8080 kenne ich die Portadressierung, vom 6502 den Weg der Speicheradressierung.. Wenn ich beim zB 8080 eine "1" aus der Seriellen Schnittstelle COM1 an Port 22h ausgeben will, dann schreibe ich einfach:


    Code
        org 0100h        ; Programmstart 0100h
        mvi a,31h        ; 31h (Ascii-Code für Ziffer "1") in den Akkumulator
        out 22h          ; Akku-Inhalt an Port 22h ausgeben
        ret              ; Return from Subroutine  


    Wie man das beim 8088 über eine "Kernalroutine" macht, das weiß ich. Direkt über einen Port hab ich nicht probiert. Aber was hat das mit diesen IRQs (interrupt requests) zu tun ? Warum liegen die COM-Schnittstellen zB auf IRQ3 und IRQ4 ?



    Vielleicht kann mir jemand helfen ?!



    Vielen Dank !!!!


    Gruß Jan

    Als Velomobilfahrer kenne ich auch die andere Ecke : der Preis stimmt in etwa, sie werden in der Szene jedoch zurecht verachtet, da am C5 alles falsch gemacht wurde was man falsch machen kann. Nicht mal die Sitzposition is einstellbar.


    Aber diese C5 sind sehr bastlerfreundlich : https://www.youtube.com/watch?v=WlMh9SOPvGk

    Mein Kumpel hier hat so ein Sinclair Fahrzeug. Ich bin des öfteren mal bei ihm, aber es ist in der Garage im hintersten Ecken verstaut. Hab es also noch nie live gesehen. Er sagt das gleiche wie jdreesen. An dem Dingern wurde alles falsch gemacht, was man falsch machen kann.. Als Akku dient nur eine normale 12V Autobatterie. Damit kommt man natürlich nicht weit..


    Gruß Jan

    Hallo,


    Ich bin auf der Suche nach einer Atari 810 Floppy in gutem Zustand. Am Liebsten wäre mir das Modell mit der "Scheunentor"-Mechanik.

    Vielleicht hat ja jemand was zum Verkauf ?!


    Vielen Dank !


    Gruß Jan

    hmm, diese story mit der Lämmerklappe in Irland war doch schon mal da, wenn ich nicht irre so vor einem Jahr?

    :grübel:

    Moment mal, genau das gleiche hatte ich oben beim Lesen auch gedacht ! Natürlich gab es diese Story schonmal, ich glaube in der Bucht ?!



    Ich würde von den goldenen grundsätzlich die Finger weg lassen ! Ich möchte dem Verkäufer jetzt nichts unterstellen..... aber da hat sich schon so mancher die Säcke vollgemacht...


    Gruß Jan

    Jan1980 Speicherriegel kann ich auch gerne für dich testen.

    Ok, das wäre super. Es waren 4 Riegel drin und ich hatte mal noch 2 nachgekauft. Der Rechner ist komplett tot. Netzteil wurde unter Last getestet, Prozessor probeweise erneuert, ein paar Chips, die heiß wurden erneuert. Ich habe irgendwo gelesen, dass der P70 etwas zickig ist, wenn der Speicher nicht original ist. Speicherriegel mit den gleichen Teilenummern hatte ich bis dato keine gefunden. Aber wenn ich wüsste, dass der Speicher schonmal ok ist, oder auch nicht, wüsste ich da, wo ich dran bin...


    Vielen Dank !


    Gruß Jan

    Hallo.


    Ich habe hier an meinem Cordata PPC zwei Com-Ports. COM1 ist on board und COM2 ist auf meiner AST Sixppack-Plus Speichererweiterung. Mit Checkit kann ich bei beiden COM-Ports einen loopback Test machen mit einem Draht zwischen Pin 2 und 3.


    Ich habe beide Ports mit MODE sauber konfiguriert auf 9600 Baud, 8 Datenbits, 1 Stopbit, keine Parität. Anschließend hatte ich mit "copy autoexec.bat com1:" versucht, die autoexec.bat in Terraterm auf meinem Hauptrechner dar zu stellen. Es gab einen Schreibfehler. Um das ganze DOS-Gedöhns aus zu schließen, hab ich dann eine kleine Routine im Debugger geschrieben.


    Code
        mov ax,00E3        ; AH=INT Funktion 00 ; AL=9600 Baud, 8Bit, 1 Stop-Bit, keine Parität
        mov dx,0000        ; Serial-Port 00=COM1
        int 14             ; Int 14, COM-Port konfigurieren
        mov ax,0131        ; AH=INT Funktion 01 ; AL=ASCII Zeichen 31 = "1"
        int 14             ; Int 14, Zeichen ausgeben
        int 3              ; Programmende

    Nach Aufruf des Programms mit g=100 passiert nichts. Daraufhin hatte ich den Rechner via COM 2 mit meinem Hauptrechner verbunden und den Code dementsprechend abgeändert.


    Code
        mov ax,00E3        ; AH=INT Funktion 00 ; AL=9600 Baud, 8Bit, 1 Stop-Bit, keine Parität
        mov dx,0001        ; Serial-Port 01=COM2
        int 14             ; Int 14, COM-Port konfigurieren
        mov ax,0131        ; AH=INT Funktion 01 ; AL=ASCII Zeichen 31 = "1"
        int 14             ; Int 14, Zeichen ausgeben
        int 3              ; Programmende

    Und siehe da, nach dem Starten des Programms erscheint eine 1 in Terraterm am Hauptrechner.


    Daraufhin hatte ich dann in MS-DOS wieder probiert, die autoexec.bat zu übertragen, auch das funktioniert. Jetzt frage ich mich natürlich, warum COM2 sauber funktioniert und COM1 nicht, obwohl der Loopback-Test in Checkit einwandfrei funktioniert hat.


    COM 1 liegt auf IRQ 4

    COM 2 liegt auf IRQ 3


    Vielleicht hat ja jemand von euch eine Idee ?!



    Vielen Dank !


    Gruß Jan