COMMODORE-PLUS4-DEUTSCH-TURBO-ASSEMBLER-v6.0-ANLEITUNG --------------------------------------------------------------------------------------------------- TOOL: TURBO-ASSEMBLER-v6.0 {TAS}, {geeignet auch fuer TURBO-ASSEMBLER-MACRO!} Language: Assembler Extra: none Author: Misel Zivanovic CREDITS: - RAT - {Deutscher Anleitungstext} und CSORY {Konvertierte TAS fuer Commodore Plus/4 Note 0: (C) 08th AUGUST 2026 - www.lived.ch, mzretro.ch Note 1: - RAT - hat eine Textdatei in den fruehen 1990er erstellt die Turbo-Assembler erklaert. Das hier ist eine Revision 1.1 von dieser Textdatei. Diese Revision wird es einfacher machen, alles in andere Sprachen zu uebersetzen/ Note 2: SOWEIT SIEHT ES AUCH SEHR TURBO-ASSEMBLER-MACRO KOMPATIBEL! ALLES DA BIS AUF DIE INSTRUKTIONEN FUER DIE MACROS! ZUSAETZLICHE INFORMATIONEN AB DER LINE 570 --------------------------------------------------------------------------------------------------- REVISION 1.1 --------------------------------------------------------------------------------------------------- 711 |==================================| | TURBO-ASSEMBLER-VERSION-6.0 | |==================================| |Original doc with some grammatical| | error corrections & adaptation | |==================================| Diesmal praesentiere ich einen sehr guten Assembler dieser wurde von CSORY konvertiert und ist sehr gut! Bis auf einen kleinen Fehler: Ist man einmal aus dem Programm ausgestiegen kann man nicht mehr zurueck ins Hauptprogramm. Vorteilhaft an diesem Programm ist jedoch die Kapazitaet die sich auf weit ueber 2000 Zeilen erstreckt (zu mehr hatte ich keinen Bock) weil die Befehle in nur 4 Bytes abgespeichert werden. Ausserdem braucht man hier nicht mit Zeilennummern oder aehnlichen Zeugs zu arbeiten. Man schreibt den Source-Code einfach hin. Dieser wird automatisch formatiert ausgedruckt. Also sehr uebersichtlich. ICH KANN JEDEM DER IN ASSEMBLER PROGRAMMIEREN WILL DIESEN COMPILER NUR GERADEZU AUFZWINGEN WEIL DIES EINER DER BESTEN IST DEN ICH JE AUF DEM PLUS/4 GESEHEN HABE. DEN EINGEBAUTEN KANN MAN JA VERGESSEN. DER QUELLTEXT: =================================================================================================== Der Quelltext wird bei TURBO-ASSEMBLER-v6.0 wie in einer Textverarbeitung geschrieben, d.h. ohne Zeilennummern. 1. Jede Zeile enthaelt hoehstens einen Assemblerbefehl. 2. Vor einem Assemblerbefehl darf in derselben Zeile hoechstens ein Label stehen. 3. Zwischen Befehl und Label muss ein Leerzeichen gelassen werden damit der Computer Befehl und Label trennen kann. 4. Kommentare werden durch ein Semikolon gekennzeichnet, das vor dem Kommentar stehen muss. 5. Ein Label kann auch allein in einer Zeile stehen. =================================================================================================== Beispiel: ===================== *= $1000 ldx #$00 loop txa sta $0c00,x inx cpx #$07 bne loop rts ===================== RECHNUNGEN IM QUELLTEXT / LOW-HIGH-BYTE { < / > } =================================================================================================== TURBO-ASSEMBLER-v6.0 erlaubt die vier Grundrechenarten {+ - * / } Ausserdem kann man das Kleiner- { < } und Groesserzeichen { > } fuers Low- beziehungsweeise das Highbyte verwenden! Beispiel: ===================== *= $1000 sei lda #start sta $0315 cli rts start lda $a5 and #31 cmp #5 beq color cmp #10 beq color exit jmp $ce0e color inc $ff19 jmp exit DIE ERLAUBTEN ZAHLENARTEN: =================================================================================================== Die Zahlenarten werden wie schon im vorherigen Assemblerkurs erklaert durch ein Zeichen hinter LDA # gekennzeichnet. Dazu ein paar Beispiele: LDA #$00 Bleibt so weil das "$" fuer eine hexadezimale Zahl steht. LDA #%00001111 Wird assembliert mit LDA #$0f weil Binaer 00001111, hexadezimal die Zahl $0f ergibt. LDA #255 Wird assembliert mit LDA #$ff {weil dezimal 255 hex. $ff ist}. LDA #"A" Wird mit LDA #$41 assembliert weil $41 der Code des Buchstaben "A" ist. LDA DATA Laedt den Wert der Speicherzelle die im Quelltext mit dem Label "DATA" gekennzeichnet wurde. LDA #4+4 Wird Assembliert mit LDA #$08. BILDSCHIRMAUFBAU =================================================================================================== Der ganze obere Teil ist zum Editieren und die zweitunterste Zeile ist die Kommandozeile in der Fehlermeldungen und Kommandos {daher der Name} dargestellt werden. In der Untersten Zeile finden Sie {von links nach rechts} folgende Anzeigen: x: Zeigt die X-Position innerhalb der aktuellen Zeile. LINE Zeigt an@ in welcher Zeile man gerade Editiert. BOT:$xxxx Zeigt an bis wo der SOURCE-TEXT reicht, d.h. ab da liegt der Quelltext. INSERT: Hier wird mit (INS/DEL und ESC+INST/DEL) CHAR und LINE ein- oder ausgeschaltet, d.h. Einfuegen an/aus. LABELS =================================================================================================== Da TURBO-ASSEMBLER-v6.0 weder mit Zeilennummern {wie in Basic} noch mit Speicheradressen {wie in Assembler} arbeitet, muss dem Computer irgendwie gesagt werden, wo er bei einer Verzweigung oder einem JMP hinspringen soll. Dies geht mit Labels. Labels sind kurze Stichwoerter oder Abkuerzungen, die vor dem Assemblerbefehl stehen. {siehe den letzten Beispiel etwas oben} Diese Labels haben den Vorteil, dass man zwischen den Zeilen noch beliebig Befehle einfuegen kann, ohne auch nur etwas am Label zu aendern. Im eingebauten Assembler muesste man bei jeder einzufuegenden Zeile die Adressen aendern. In Assembler {Machine-Language-Monitor} wuerde das so aussehen: .2000 ldx #$00 .2002 sta $0c00,x .2005 inx .2006 cpx #32 .2008 bne $2005 .200a rts Welche der beiden Programme, die nach der Assemblierung den selben Zweck erfuellen, finden Sie uebersichlicher? DIE BEFEHLE: =================================================================================================== Die Befehle oder besser gesagt die Editierfunktionen werden teils ueber Funktionstasten, zum groesten Teil jedoch ueber die ESC-Funktionen gesteuert: STEUERUNG =================================================================================================== CURSOR = Steuerung RETURN = Naechste Zeile F1 = 20 Zeilen zurueck (falls moeglich). F7 = 20 Zeilen vor F4 = Sprung zur ersten Zeile. F8 = Sprung zur letzten Zeile ESC+Hoch = Springt zur obersten Bildschirmzeile. ESC+Runter = Springt zur untersten Bildschirmzeile. ESC + N = GO TO LINE #xx Springt zur Zeile xx ESC + F = FIND: string/text {Sucht xxxxxx im Source Code} ASSEMBLIEREN =================================================================================================== ESC + 3 = ASSEMBLIEREN/KOMPILIEREN {damit sie ihn in Maschinensprache ablaufen lassen koennen } {auch dazu spaeter mehr } ESC + 4 = PRINT FILE {Listet das assemblierte File {wenn schon geschrieben} mit Speicheradresse, } {Codes, Befehle und speichert es als SEQ Datei auf Diskette {kann dann z.B. } {auch in Texte eingebunden werden - {praktisch fuer mich!} } ESC + 5 = OBJEKT-FILE {Speichert den Assemblierten Source-Code auf Diskette als Programm-File } BEARBEITUNG DES QUELLTEXTES =================================================================================================== ESC + U = LIST LABELS Y/N {Listet alle gebrauchten Labels, um sich bei groesseren Programmen einen } {Ueberblick zu verschaffen. Sind alle gelistet, kommt man durch Tastendruck } {wieder ins Editierprogramm} Suchen und ersetzen --------------------------------------------------------------------------------------------------- ESC + R = REPLACE text BY text {Mit dieser Funktion ist es moeglich Befehle oder Labels durch andere zu } {ersetzen. Nach Eingabe der beiden Texte springt der Cursor zum naehsten } {gefundenen Eintrag } ESC + T = ERSETZEN {Nach aufruf dieser Funktion werden die bei "ESR+R" festgelegten Werte ersetzt } ESC + Y = Wie ESC+T {Nach aufruf dieser Funktion werden die bei "ESR+R" festgelegten Werte ersetzt } --------------------------------------------------------------------------------------------------- BLOECKE --------------------------------------------------------------------------------------------------- ESC + B = BLOCK COMMAND {siehe unten} {nur wenn Block mit ESC+M markiert} WRITE@KILL@COPY WRITE: Schreibt den Block auf Diskette. KILL: Loescht den Block (mit Sicherheitsabfrage) COPY: Kopiert den Block an die Cursorposition --------------------------------------------------------------------------------------------------- EINFUEGEN: --------------------------------------------------------------------------------------------------- ESC + 2 = { Fuegt eine Kommentarzeile ein (";-----------------") } ESC + RET = { Fuegt eine Zeile ein } ESC + = { Schaltet den "ZEILE SHIFT+INST EINFUEGEN"-Modus (INSERT LINE) an oder aus } SHIFT+INST = { Schaltet "Zeichen einfuegen" (INSERT CHAR) ein/aus, je nach Einstellung} } LOESCHEN --------------------------------------------------------------------------------------------------- ESC + DEL = {Loescht die naechste Zeile } ESC + "=" = {Loescht die vorherige Zeile } F6 = {Aktuelle Zeile loeschen } ESC + "/" = {Loescht alles was rechts vom Cursor liegt } --------------------------------------------------------------------------------------------------- MARKIERUNGEN =================================================================================================== ESC + M = SET MARK 0-9,S,E {Setzt eine Markierung in der aktuellen Zeile } ESC + ; = KILL MARK {Loescht eine Markierung } ESC + : = {Zeigt an, welche Markierungen schon benutzt wurden. Sind sie gesetzt, steht } {hier die Zeilennummer } ESC + G = GO TO MARK #xx {Man kann mit "ESC+M" verschiedene Stellen markieren [0-9,S,E - wobei S und E } {einen Block markieren]. Mit dieser Funktion kann man zu einer dieser Marken } {springen } =================================================================================================== FLOPPY-DISK-OPERATIONEN =================================================================================================== ESC + L = LOAD FILE {Einen gespeicherten Quelltext laden } ESC + S = SAVE FILE {Speichert den Quelltext auf Disk ab } ESC + @ = DISK STATUS {Zeigt den Disk-Status } ESC + * = DIRECTORY {Zeigt den Disketteninhalt an } ESC + D = DISK COMMAND {Sendet einen Diskbefehl zum Diskettenlaufwerk } ESC + W = WRITE FILE {Speichert das ganze Programm als Block im SEQ-Format } ESC + E = ENTER FILE {Mit dieser Funktion ist es moeglich einen gespeicherten Block an gewuenschter } {Stelle einzufuegen } ESC+SHIFT S= SAVE filename FROM $1000 TO $2000 {Speichert den Speicherbereich von $???? bis $???? } ESC+SHIFT L= LOAD file name FROM $???? {Laedt ein Programm nach $???? [gut zum konvertieren von Routinen, die beim } {C-64 im Bildschirmspeicher liegen] } =================================================================================================== MIT ARBEITSSPEICHER ARBEITEN =================================================================================================== ESC + I = FILL MEMORY FROM $???? TO $???? WITH $?? {Fuellt den gewaehlten Speicherbereich [vorgegeben wird der fuer Coding zur } {Verfuegung stehende Bereich] von $xxxx bis $yyyy mit dem Wert $zz } {Passen Sie auf, dass Sie nicht mit dem 2.Wert den Source-Code Ueberschreiben } ESC + J = DUMP MEMORY FROM $xxxx to $yyyy {Zeigt einen gewaehlten Speicherbereich auf dem Bildschirm [wie im Monitor } {M ???? ????]. Drueckt man waehrend des Vorgangs SPACE@ wird der Vorgang } {unterbrochen. Drueckt man RUN/STOP wird er beendet } ESC + V = ZEROPAGE MAP {Zeigt eine Null-Seite Uebersicht an ["+" = belegt und "-" = frei] } ESC + 6 = DATA FROM $0000 to $0000 {Holt die Codes von $???? bis $???? in den Source-Text und legt sie dort als ".BYT"} {Werte ab. [.BYT siehe PSEUDO OPCODES] } =================================================================================================== SONSTIGES HILFREICHES =================================================================================================== ESC + "+" = $0000 + $0000 = $0000 {Der Computer berechnet die Summe zweier hexadecimal zahlen fuer Sie } ESC + "-" = $0000 - $0000 = $0000 {Der Computer berechnet die Differenz zweier hexadecimal Zahlen fuer Sie } ESC + K = F2,F3,F5,F6 - SEQUENZ {Die schon angesprochene Tastaturbelegung } ESC + O = Wechselt die Farben [drei Moeglichkeiten] ESC + P = EOR-Code $xx (?) F2 = FUNKTIONSTASTE F2 {Diese Taste ist, wie auch F3,F5 und F6 selbst belegbar [mit ESC+K]. Diese Taste } {ist normal mit dem PSEUDO-Opcode ".WORD" belegt. [dazu spaeter mehr] F3 = FUNKTIONSTASTE F3 {Diese Taste ist mit dem Pseudo-Opcode ".BYT" belegt. [auch diese Taste ist mit } {ESC+K belegbar] } F5 = FUNKTIONSTASTE F5 {Unbedingt vermeiden, da bescheiden belegt !! Koennte zum Absturz fuehren. Am } {besten direkt neu belegen mit ESC + K } ESC + 1 = EXIT TURBOASSEMBLER-v6.0 {Programmende! Sprung ins BASIC. Re-enter TURBO-ASSEMBLER-v6.0 with SYS 1880 } ESC + C = COLD START Y/N {Fuehrt einen Computer-Kaltstart aus, d.h. ein RESET } =================================================================================================== BLOECKE =================================================================================================== Mit TURBO-ASSEMBLER-v6.0 ist es moeglich einen Block zu markieren, den Sie bei Bedarf kopieren, loeschen oder speichern koennen. Somit ist es z.B. moeglich, sich eine Routinen-Bibliothek zu erstellen, da diese gespeicherten Bloecke frei aneinandergereiht werden koennen. Block markieren: Zum markieren des Blockanfang, druecken Sie "ESC+M" und daraufhin die Taste "S", nun ist der Start markiert. Gehen Sie nun auf das Ende des Blocks, den Sie haben wollen und druecken Sie wieder "ESC+M" und nun "E" Nun muesste ein Bereich blau eingefaerbt sein. Dieser Bereich ist Ihr Block. Block kopieren: Gehen Sie mit dem Cursor an die Stelle, an die der Block hinsoll, und druecken Sie "ESC+B", und dann "C" nun wird der Block an der gewuenschten Stelle eingefuegt. Block loeschen: Druecken Sie "ESC+B" nun noch "K" und der Block wird geloescht. Block speichern: Druecken Sie "ESC+B" und dann "W"@ nun geben Sie den Namen ein und der Block wird auf Disk gespeichert. Block laden: Gehen Sie an die Stelle, an der der Block eingefuegt werden soll und druecken Sie "ESC+E" und den Dateinamen. Quelltext als Block: Druecken Sie ESC+W wird das ganze Programm als Block gespeichert. =================================================================================================== PSEUDO-OPCODES: =================================================================================================== Pseudo Opcodes sind eigentlich keine richtigen Assemblerbefehle, aber dennoch wichtig um ein Programm zuschreiben, denn Sie legen einen Text, oder ein Byte oder Aehnliches im Speicher ab. Es war vorher z.B. immer sehr umstaendlich Texte im Speicher abzulegen, weil man immer fuer jeden Buchstaben nachschlagen muesste, wie denn nun der Code dafuer war. Pseudo-Opcodes muessen immer mit dem"." eingeleitet werden, weil der Assembler sie sonst nicht als Opcodes identifizieren kann. .OFFS $xx Es werden an dieser Stelle xx Bytes uebersprungen. .TEXT "text" Legt an dieser Stelle den Text "text" im Speicher ab. .BYTE $xx Legt an dieser Stelle das Byte xx ab. .WORD $xxyy Legt an dieser Stelle im Speicher eine Adresse ab, d.h. $xxyy wird im Speicher in LOW- und HIGHBYTE-Format abgelegt z.B. WORD $2030 .2000 30 20 =================================================================================================== FEHLERMELDUNGEN: =================================================================================================== Haben Sie beim Eingeben eine Zeile falsch eingegeben, wird diese Zeile ROT eingefaerbt. Und in der zweituntersten Bildschirmzeile erscheint eine Fehlermeldung: TOO MANY LABELS: Zuviel Labels [ist bei mir allerdings noch nicht vorgekommen trotz ueber 150 Labels] LABLE NAMES OVERFLOW: Wenn zu viele Labels zu lange Namen haben. [auch noch nicht vorgekommen] LABEL TOO LONG: Label zu lang [auch noch nicht vorgekommen, weil TURBO-ASSEMBLER-v6.0 zu lange Labels kuerzt] ILEGAL MNEMONIC: Unbekannter Befehl. Diese Fehlermeldung tritt auf wenn man z.B. statt "LDA" den Befehl "LDS" ein gibt. ILLEGAL PSEUDO-OP: Wenn man einen Punkt hinschreibt und danach einen unbekannten Befehl. Z.B. statt ".WORD" den Befehl ".WRD" QUATATION MARK MISSION: Es wurde vergessen die Anfuehrungszeichen zu setzen z.B. bei LDA #"a . OPERATOR MISSING: Dieser Fehler tritt auf, wenn man statt "LDA #$10" nur "LDA" eingibt, das heisst, er weiss nicht welchen Wert oder welche Adresse er laden soll. MISSING OPERAND: Wenn Sie vergessen haben die Zahl zu kennzeichnen. Der Computer weiss nicht ob die Zahl eine HEX-, BINAER- oder DEZIMAL-ZAHL ist. [z.B. statt "WORD $10" nur ".WORD 10"] CLOSE BRACKEST: Es wurde versaeumt die Klammern zu schliessen. z.B. bei LDA #(3*2+4 ILLEGAL QUANTITY: Zu lange oder zu grosse Zahlen. [z.B. "LDA#$0111111111111" diese Zahl ist natuerlich nicht Hexadezimal darzustellen"] COMMA EXPECTED: Es wurde ein Komma erwartet. LABLE MISSING: Wenn Sie zu einem Lable springen wollten, das Sie noch gar nicht gesetzt haben. [z.B. "JMP A", wenn "A" nirgendwo steht, wohin soll der Computer dann springen ???] OUT OF MEMORY: Kein Speicherplatz mehr [nie aufgetreten trotz ueber 2000 Zeilen] TOO MANY LINE: Zu viele Zeilen [auch nie aufgetreten] =================================================================================================== ASSEMBLIEREN [ESC + 3] =================================================================================================== Beim Assemblier-Vorgang wird aus dem QUELLTEXT ein lauffaehiges Maschinen-Sprach-Programm, wenn keine Fehler auftreten. Auf dem Bildschirm erscheint folgendes: *************************************** turbo ass. by wolfram roemhild copyright 85 by omikron germany corrected by tronic ***** end of pass 1 first adress : 1000 last adress : 102e ***** end of pass 2 first adress : 1000 last adress : 102e errors : 0 -> press 's' to start or other key to edit *************************************** Der Assemblier-Vorgang wird an der Stelle "ERRORS: Z" abgebrochen, wenn ein Fehler aufgetreten ist. Diese koennen sein: [Anmerkung www.mzretro.ch] - 08.08.2026 ==================================================================================================== [Also ein "ERRORS: Z", habe ich noch nicht gesehen. Ich komme hier also zum Schluss, dass sich ] [diese deutsche Beschreibung auf eine andere [Re]vision von TURBO-ASSEMBLER-v6.0 bezieht! ] [Sieht allerdings alles weitgehend kompatibel! ] ==================================================================================================== DOUBLE DEFINED: Ein Label wurde mehr als einmal verwendet, was ja nicht geht, denn der Computer kann sich ja nicht aussuchen, ob er zu $2000 oder $3000 springen soll. UNDEFINED STATEMENT: Es sollte ein Sprung zu einen Label stattfinden, das noch nicht gesetzt wurde. ILLEGAL QUANTITY: Zu grosser Wert, die nicht in hexadezimaler Form darstellbar sind! [z.B. LDA #$23738122] BRANCH OUT OF RANGE: Es wurde versucht eine Verzweigung durchzufuehren, die weiter als 128 Bytes vom Standort weg ist. [denn Verzweigungen duerfen maximal 128 Bytes nach hinten oder nach vorne gehen! Betrifft nicht JMP oder JSR!] BAD LINE: Eine Zeile wurde schon vom Editierprogramm fuer fehlerhaft gehalten und ROT dargestellt. Ist kein Fehler aufgetreten, kann man durch druecken der Taste "S" das assemblierte Programm direkt starten. Dabei verlaesst man den TURBO-ASSEMBLER-v6.0, und kommt leider nicht wieder zurueck ins Programm, also vorher den QUELLTEXT abspeichern. [Anmerkung www.mzretro.ch] - 08.08.2026 =================================================================================================== [Es ist moeglich wieder zum EDITOR zu kommen wenn man beim TURBO-ASSEMBLER-v6.0 SYS 1880 eingibt! ] [Beim TURBO-ASSEMBLER-MACRO ist es SYS 758 um EDITOR zu starten! ] =================================================================================================== EINGABE VARIANTEN und WIE ES ASSEMBLIERT/KOMPILIERT WIRD! =================================================================================================== QUELLTEXT ASSEMBLIERTER QUELLTEXT LDA #$10 LDA #$10 LDA #"A" LDA #$41 LDA #1 LDA #$01 LDA #$0001 LDA #$01 LDA #%001111 LDA #$80 LDA #3+2 LDA #$05 LDA A LDA $2030 LDA "A" LDA $41 LDA 3+2222 LDA $08B1 LDA $03+2222 LDA $2225 LDA 3*3 LDA $09 LDA #A LDA #$20 LDA A LDA $2030 A .BYT $30 B .BYT $40 Ich hoffe Sie haben es wenigstens einigermassen verstanden, denn es war verdammt viel Arbeit alles herauszufinden. =================================================================================================== -RAT- =================================================================================================== [Anmerkung www.mzretro.ch] - 08.08.2026 =================================================================================================== [JA, WIR HABEN ALLES VERSTANDEN! DEINE BEMUEHUNGEN WERDEN SEHR GESCHAETZT UND ERGEBNISSE WERDEN, ] [WIE MAN SIEHT, AUCH IM JAHR 2026 "GEERNTET" UND VERWENDET! ] [ ] [VIELEN DANK! ] =================================================================================================== LINE 570 =================================================================================================== =================================================================================================== .. ********** ********** ** ** **** ********** ** ** .. .. ********** ********** ** ** **** ********** ** ** .. .. ** ** ** ** ** **** ** ** ** .. .. ********** ********** ** ** **** ********** ** * ** .. .. ** ** ** ** ** **** ** ** *** ** .. .. ** ** ********** **** **** ********** ********* .. .. ** **** ********** ** **** ********** ** ** .. =================================================================================================== =================================================================================================== |||||THIS PART IS NOT AVAILABLE AS A SEPARATE .DOC ON MY WEBSITE WWW.MZRETRO.CH - WWW.LIVED.CH||||| ||||| IT HAS NOTHING TO DO WITH - RAT -, BUT IT DOES WITH CSORY ||||| ||||| WHO CONVERTED TURBO-ASSEMBLER-v6.0 TO COMMODORE PLUS/4 IN 1992 ||||| =================================================================================================== PLUS4-TURBO-ASSEMBLER-VERSION-6.0-ENGLISH - REVIEW -------------------------------------------------------------------------------------------------- TOOL: TURBO-ASSEMBLER-v6.0 {Converted by CSORY for Commodore PLUS4} Language: Assembler Extra: none Author: Misel Zivanovic Note 0: (C) 5th OF AUGUST 2026 - www.lived.ch, mzretro.ch Note 1: NOT REALLY RECOMMENDABLE! LIKES CRASHING AND SYSTEM FREEZING A LOT! WHEN USED WITH VICE COMMODORE PLUS4 EMULATION! I am keeping it anyway on this side because it can be that on the real hardware TURBO-ASSEMBLER-v6.0 might work without issues! -------------------------------------------------------------------------------------------------- BEFORE YOU START THINKING SOMETHING {hehe} I am actually more than happy with the MERLIN 7501 assembler! And if you ask me, i wouldn't look for another one, and in fact I AM NOT! {well, don't always trust everything people are saying, hahaha} You can make an exception in my case though ;-) The "sad" reality is, i prefer to code lineless. EDASS-128 made that possible on Commodore C128 and TURBO-ASSEMBLER would made it possible on Commodore Plus4 because I indeed am planning to make some additional lessons for the Commodore Plus4 {if time will allow that!} Who knows, maybe that will inspire at least one more {new} person to code for the Commodore Plus4! ENGLISH GUIDE OR INSTRUCTION is on a disk together with the TURBO-ASSEMBLER! HOWEVER, it is NOT READABLE! You cannot pass the INTRO-SCREEN... So practically useless! {Do not blame me, I tried everything to open and read it!} {Yeah, can be that I'm not destinated to open it!} There is also a GERMAN text file {written by -RAT- according to the signature at the end of the file} existing and explaining the TURBO-ASSEMBLER for Commodore Plus4! Wasn't part of the disk content. I added that one! What I will do here, is cut that down to get a small guide in ENGLISH, but it should be sufficient enough to start coding in TURBO-ASSEMBLER without worries. Already at the beginning of that GERMAN text file, you can read following: "Ist man einmal aus dem Programm ausgestiegen, kann man nicht mehr zurueck ins Hauptprogramm!" It means: When you exit the main program, you cannot go back anymore! The question is, how deep is the impact of this bug and what does it really mean! Does it mean I'll lose the access to my source code if I accidently hit the exit key! Constantly saving would be the best and only solution here if that's the case. Anyway, let's find out if TURBO-ASSEMBLER VERSION 6.0 is in usable condition or not.. *************************************************************************************************** UPDATE: *************************************************************************************************** I will tell you right here: THIS TURBO-ASSEMBLER IS CRASHING A LOT. ALL DAY LONG, 24/7/365 PRACTICALLY AROUND THE CLOCK WHEN RUNNING UNDER VICE COMMODORE PLUS EMULATION! I CANNOT TELL IF THAT IS THE CASE WHEN REAL HARDWARE IS USED! *************************************************************************************************** *************************************************************************************************** But you are welcome to continue to read and find out details... --------------------------------------------------------------------------------------------------- WHERE CAN YOU PLACE YOUR CODE: --------------------------------------------------------------------------------------------------- WARNING: Use this FREE MEMORY areas EXACTLY or LESS than END / more than START addresses! NEVER go BELOW or OVER the areas! Note that the free memory space differs compared to TURBO-ASSEMBLER-MACRO {in some parts} --------------------------------------------------------------------------------------------------- $0332-$03F2 - 00818-01010 - Cassette buffer *{STRANGE BEHAVIOR} - 00193 Bytes * = { This area above is, as it looks, used by the TAS{M} for whatever. Assembling the code to } { this small 193 bytes are always resulted in IMMEDIATE CRASH when not $0332 was used, but } { something else, e.g. $033c, $0340, $0350! You don't even get to see what's going on with } { TURBO-ASSEMBLER! It freezes and that's the END! You must RESET the Computer/Emulation! } { With TURBO-ASSEMBLER-MACRO you can at least see how the code was messed up! } { I just reminded myself that I could check the with the VICE Monitor function too, damn! } { THIS AREA CANNOT BE RECOMMENDED! KEEP DISTANCE! } $03F3-$03F6 - 01011-01014 - Storage for cassette information {Available} - 0004 Bytes $03F7-$0436 - 01015-01078 - RS232 buffer {Available} - 0064 Bytes $0437-$0472 - 01079-01138 - Storage for cassette information {Available} - 0060 Bytes $0BE8-$0BFF - 03048-03071 - Free {Available} - 0018 bytes $0FE8-$0FFF - 04072-04095 - Free {Available} - 0024 Bytes AFTER THE FIRST START OF TURBO-ASSEMBLER: {more details below} $1000-$1110 - 04096-04368 - BASIC START AREA {Available} - 0272 Bytes $5083-$75f0 - 20611-30096 - Free for assembly code {Available} - 8300 Bytes --------------------------------------------------------------------------------------------------- TURBO-ASSEMBLER - Where is it? At first sight, it looks like it is occupying the area between $1010 and $5082. $1000 is BASIC start area and that is why you see this 16 bytes when you load the program! >1000 00 0e 10 00 00 9e 34 31 :......41 = 0 sys4112byc >1008 31 32 42 59 43 00 00 00 :12byc... Accordingly, TURBO-ASSEMBLER start address is SYS 4112 and it is working when you run it for the first time without any issues! Then you go and write your code, hit ESC {which is "~" on USA PC-Keyboard {that's a left upper corner key, beneath the real windows 'ESC' key}, {Positional Mapping} and then 3 to assemble/compile the code... One more time: Compile/Assembly = {Plus4 ESC + 3} Then you hit "S" in the following screen to test the code... When done, you want to go back to TURBO-ASSEMBLER editor and naturally, i typed in SYS 4112 and the COMPUTER CHRASHED! I tried that a few times and already wanted to give up, but then I reminded myself that C64-TURBO-ASSEMBLER is having some different re-entry address{es} to get back to the editor! Quick information: --------------------------------------------------------------------------------------------------- Just to let you know, GERMAN guide is not talking about this. Actually they aren't mentioning one single SYS address... I had to explore this a while longer... Glad i continued because otherwise you wouldn't read this here now, hehe... --------------------------------------------------------------------------------------------------- During first start, TURBO-ASSEMBLER is also transferring code to this locations and therefore THESE AREAS ARE NOT FREE AND DO NOT DISTURB THEIR PEACE: $05F5-$065D - 1525-1629 - Banking RAM area $065E-$06EB - 1630-1771 - RAM reserved for speech software $06EC-$07AF - 1772-1967 - BASIC stack In the BASIC STACK area, i found this few assembly commands! You can see them first, AFTER the first start of the TURBO-ASSEMBLER with SYS 4112. Before, $0758 is empty! BEFORE the start of TURBO-ASSEMBLER: AFTER the start of TURBO-ASSEMBLER: {$0758, dec 1880} {$0758, dec 1880} . 0758 00 brk . 0758 78 sei . 0759 00 brk . 0759 8d 3f ff sta $ff3f . 075a 00 brk . 075c 4c 00 90 jmp $9000 . 075b 00 brk . 075c 00 brk . 075d 00 brk . 075e 00 brk . 075f 00 brk . 0760 00 brk WHY IS THIS INTERESTING! --------------------------------------------------------------------------------------------------- Restarting TURBO-ASSEMBLER with the same SYS 4112 after the first start, is RESULTING in COMPUTER CRASH. So first thing you would think, is that this area must have been relocated and is not needed any longer or at least partly not needed. Now that we know that SYS 1880 {hex $0758) is bringing us back to the TURBO-ASSEMBLER editor, we could try to delete the "maybe not more needed area by TURBO-ASSEMBLER. Guess we can survive one or few more crashes... Hehe... BEFORE WE CONTINUE: If you compile an empty program, no code {it can be done}, but then type SYS 1880, GOING BACK TO THE TURBO-ASSEMBLER editor WILL NOT WORK anymore! I compiled and empty program because all i wanted is to see if i can and how far, delete $1000 and up memory area to use it as a start address {especially when you want to use a BASIC LINE to start your assembly program, is that very important! It always delivered a computer crash, however, after i compiled a program first {can just be lda #$00, rts}, I had a first success and could delete from $1000 until $10C2 and then start the TURBO-ASSEMBLER editor with SYS 1880 {hex $0758} - WONDERFUL! Already this space is enough to type in the BASIC start lines and add a code to load the rest of the MAIN program from disk with a short assembly routine! Deleting further code, i reached $1259 and the TURBO-ASSEMBLER editor was still working {SYS 1880} I could compile the code.... BUT UNFORTUNATELLY, immediately after the code was compiled, PLUS4 said: GOODBYE & ADIOS! ... I went back to $1110 and that was a success! CONCLUSION IN REGARD TO $1000 - $1110 {BASIC AREA} $1000 - $1110 is available and more then enough to serve the purpose of having a BASIC START LINE after the load of the program and when started, there is also plenty of room inside of 272 Bytes to add some regular code and loading routines! FANATASTIC! You just need to make sure NOT TO go and visit the BYTE 273 because that neighbor IS PROBABLY GOING TO CRASH YOUR PC! TURBO-ASSEMBLER is showing memory usage {when you hit ESC + 3}, just keep an eye on it! Code example: {source file} *= $1000 ;until $1110 max BASIC START LINES LOAD SPRITES LOAD DATA LOAD MUSIC LOAD MAIN PROGRAM *= $5090 ;until $75f0 max MAIN ASSEMBLY PROGRAM WHAT MORE CAN BE SAID? --------------------------------------------------------------------------------------------------- There is an area between $75fb - $775d containing some routines. I didn't inspect it exactly, but in any case that aren't some random bytes there. What is that doing there, in between the area which is a source code area of your TURBO-ASSEMBLER program? No idea... It's reducing the size of the source code to exactly 6.3KB or better said, the more you comment the LESS memory you'll have for the actually code. Don't understand me wrong. Already a 4KB in assembly lines can do amazing thing and that's leaving you with ca. 2KB to comment your code! As mention 2 seconds ago: Less {or smarter} you comment, bigger the code can be! If the area between $5083 and $75f0 is used for your assembled code, then you have like 8.3KB available space. UNFORTUNATELY... YES, now it is coming... BUGGY BUGS BUGZZZZZZ!!! --------------------------------------------------------------------------------------------------- BUG 1: --------------------------------------------------------------------------------------------------- THIS WILL WORK {temporary}: *THIS WILL 100% CRASH THE COMPUTER! UPDATE: after also checking out the TURBO-ASSEMBLER-MACRO, I noticed how the assembled code is messed up. Commands are missing and you can see literally nonsense bytes on their places. You couldn't see that with TURBO-ASSEMBLER because it freezes immediately. Later I noticed how no matter where you place your code, it will crash sooner or later! Even then when you have not changed your code, but just assembled it again = CRASH! So first time it is running, the 2nd it doesn't! {last screenshot, $1000} What it also doesn't like, is pressing ENTER below the source code! It's like calling for a crash! *= $0332 *= $033c lda #$38 lda #$38 sta $ff15 sta $ff15 ldy #$00 ldy #$00 loop inc $ff19 loop inc $ff19 iny cpy #$a0 iny bne loop cpy #$a0 rts bne loop rts --------------------------------------------------------------------------------------------------- Code looks the same and it actually is. If you compile the left side, it will do. If you hit enter and create an empty line [right side}, compile it then. IT WILL STILL WORK... When going back to editor with SYS 1880 afterwards and compile it one more time {with an empty line}, then the computer will 100% CRASH {meaning not stay responsive. Keyboard won't work... Just a RESET helps}. Later it happen also without an empty line. So it's pretty much very unusable TURBO-ASSEMBLER {with VICE Emulation of Commodore Plus4. Can't tell if that is so also with the REAL HARDWARE!} --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- BUG 2: {mentioned at the beginning} It means: When you exit the main program, you cannot go back anymore! --------------------------------------------------------------------------------------------------- You can EXIT the program with ESC {~, emulator} + 1 And according to GERMAN instructions, going back should not be possible. However, our SYS 1880 works just fine and the access to the source code is granted in editor. However, I noticed the famous error from the BUG 1 also here! Looks like this EMPTY LINE PROBLEM is just waiting to CRASH YOU DOWN in many ways! Update: Seems not be just an empty line. TURBO-ASSEMBLER likes to crash in general! As said, maybe the problem is the emulation!? --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- BUG 3: --------------------------------------------------------------------------------------------------- Many times, the same error is happening when you load or type a program in from scratch and want to compile it. It can be good like several times and then BANG, already the NEXT ESC + 3 can freeze the whole system. Many times already the first compile try is leading to a frozen system! This one is unpredictable and very annoying. --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- BUG 4: --------------------------------------------------------------------------------------------------- The DEATH SENTENCE F5 Funktion Key! When you accidentally hit that one with TURBO-ASSEMBLER V6.0, you know you'll regret it! It's instant death... Frozen system and frustrations! With TURBO-ASSEMBLER-MACRO, the same F5 Funktion Key is working just fine and doing what it should! --------------------------------------------------------------------------------------------------- Commodore Plus4 System was tested with 64KB RAM and 256KB expansion {results, crashes were the same} Not often, but still, the whole emulation crashed! No REAL HARDWARE was used! /////////////////////////////////////////////////////////////////////////////////////////////////// MY HONEST OPINION: After this experience, I don't think that TURBO-ASSEMBLER v6.0 for the COMMODORE PLUS4 is something that I could be recommend with clear conscious. It is totally unstable and constantly crashing! IF YOU *VALUE YOUR WORK, YOU WILL LATEST RIGHT NOW RUN AWAY! * = : THE -RAT- GUY WHO MADE GERMAN INSTRUCTIONS, WROTE HOW HE MANAGED TO WRITE OVER 2000 ASSEMBLER LINES AND HAD ZERO ISSUES. SO IT MIGHT ALSO WELL BE THAT VICE COMMODORE PLUS4 IS CAUSING TROUBLES HERE AND TURBO-ASSEMBLER v6.0 ACTUALLY IS GOOD {ON REAL COMMODORE PLUS4 HARDWARE} {I cannot confirm that for the VICE emulation though} {HOWEVER, I CAN RECOMMEND : TURBO-ASSEMBLER-MACRO!} ///////////////////////////////////////////////////////////////////////////////////////////////////