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


Nachrichten in diesem Thema
kick assembler und funktionen - von paule32.jk - 29.12.2022, 10:45
RE: kick assembler und funktionen - von CB1JCY - 29.12.2022, 11:32

Gehe zu:


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