Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
kick assembler und funktionen
#1
Code:
was ich noch nicht verstanden habe, ist die Sache mit
.function

wenn ich .function nutzen möchte, also, dass der code nicht
wie bei .macro immer eingesetzt wird, und damit das eigentliche
Assembler-Listing im Speicher immer größer werden läßt, dann kann
ich keine opcodes - menomics schreiben, und es stehen mir nur die
Script-Sachen zur Verfügung.

Wenn ich nun .macro verwende, dann wird der Code immer angehangen
und die .function Funktionalität geht verloren.

Wie kann man dann also Unterprogramme schreiben ?
- phne .function, und mit bsr und jmp Sachen hüpfen ?

irgendwie strange. ich habe das ganze kick zeug hier gesaugt:
http://theweb.dk/KickAssembler/Main.html#frontpage

// -----------------------------------------------------
// (c) 2022 by Jens Kallup - paule32
// all rights reserved.
//
// only for education, and non-profit useage !!!
// -----------------------------------------------------
:BasicUpstart2(main)

.const video_border = $d020

.pc = $810 "Data"
.pc = * "Code"

// -------------------------------------------------------
// Error variable placeholders.
// -------------------------------------------------------
.var ERR_RANGE_CHECK = "range error: color #0 .. #15 !"

// -------------------------------------------------------
// This function set the border of the screen display ...
// Valid color arg: #0 .. #15. possible:
//
// #00 - black      | #01 - white
// #02 - red        | #03 - cyan
// #04 - purple     | #05 - green
// #06 - blue       | #07 - yellow
// #08 - orange     | #09 - brown
// #10 - light red  | #11 - dark gray
// #12 - gray       | #13 - light green
// #14 - light blue | #15 - light gray
// -------------------------------------------------------
.function SetBorderColor(color) {
    .if (color<$0) .error ERR_RANGE_CHECK
    .if (color>$f) .error ERR_RANGE_CHECK
    lda #color
    sta video_border
    .return 0
}

// ---------------------------------------------------------
// Entry point to the program:
// ---------------------------------------------------------
main:
    .if (SetBorderColor(1)>0)
    lda #01      // load 'A' into accumulator
    sta $0400    // store accumulator value ('A') to screen
    rts          // return to BASIC
Alles was nicht programmiert werden kann, wird gelötet.
Zitieren
#2
Das scheint ein Programm für den C64 zu werden.
Selber hatte ich mehr auf einem 264er mit dem TED-Mon programmiert.
Macroassembler mir zu restriktiv.

Warum nutzt Du keine Romroutinen?
Beim 264 ist die BSOUT-Routine bei FFD2
Die Romroutinen sind wie Funktionen zu handhaben. Also, Parameter werden mit Akku, und/oder x, y übergeben.
Der Aufruf sollte mit "JSR Adresse" erfolgen.
Selber Unterprogramme schreibt man, wie normale Assemblerprogramme und hängt Die z.B. nach dem Hauptprogramm an. Das HP muss mit RTS oder BRK enden.

...und lies Dich zu Deinem Assemblertool mehr ein Wink
Chat im EUIRC (#amiga-dresden.de)
Zitieren
#3
Hallo,

naja, bin erstmal froh, dass ich einen Assembler mit Tools auffinden konnte,
der auch Maus-Schubbs-Programme unterstützt.
Ich hatte ja schonmal mit einen Eigenen Assembler angefangen.
Das war aber mehr ein Dissassembler erstmal.
Haste sicherlich schon auf meinen git Account sichten können ... ?? !! ??

Aber zu der Zeit hatte ich noch nicht die Sprache für CBM.
Die scheint aber nach Durchsicht der Unterlagen, recht unterhaltsam zu sein.

jedenfalls weniger opcodes als bei den x86 32-bitter.

Ist mir auch nur durch den Sinn gekommen, weil ich die Tage erfolgreich einen
Boot-Kernel für x86 Systeme schreiben konnte.
Und man stelle sich das vor: mit Tools, die unter Microsoft Windows 11 64-Bit
zum gewünschten Erfolg geführt haben.

Naja, ist ja auch fast alles Dokumentuert, und da gibts von den Herrn Brown
eine Liste - bei tine. Die kann ich auch empfehlen.

Tjor, ansonsten Pfleiß-Arbeit.
Muss ja nicht unbedingt VESA Grafik sein - reicht doch schon der INT 10h, ax 13.

Aber wenn ich die vorangetriebenen Arbeiten so einschätzen sollte, dann würde
ich durchaus schreiben, dass, wenn man Assembly lernen will, beim C64 oder
noch kleiner - mit Deinen Buch über den Berliner-Buchverlag (das kleine Büchlein
der Elektronik, was Du mir mal zur Verfügung gestellt hast), anfangen.
Dann evtl. die härtere Nuß Amiga, und dann 386 16 Bit, dann 32....

Also kurzum: geschadet hat mir das nicht. Und ich werde mal sehen, ob ich die
restlichen Tage diesen Jahres mehr üben kann, und ja, Doku-Lesen ...

Ich muss mir nur noch überlegen, ob ich nicht ein kleines Hilfe Tutorial schreibe.
Da muss ich aber erstmal alles zusammen friemmeln, damit ich nicht wie die anderen
Bücher, vom Urschleim, sonder irgendwie Kapitelweise, die nicht unbedingt aufeinander
aufbauen müssen, einen Seiten-Rand-Notiz-Link System einführen, damit ich das
dann zum späteren Zeitpunkt ggf. nochmals aufgreifen kann.

Bin ja auch nicht mehr der Alois feste Typ.

Gruß, paule32

P.S.: Danke für Deinen Tipp und Kommentar.
Alles was nicht programmiert werden kann, wird gelötet.
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste