|
|
| 04.12.2025 | Archiv # Recherche # Links # Kontakt # Gästebuch # Impressum |
|
Index Login Die Anzeige des Archivs erfolgt grafisch. Ändern |
Kurs: GeoProgrammer (Teil 2)Teil 2: Dummy & Beeper Willkommen zum 2. Teil des GeoProgrammer Kurses. Hoffentlich habt Ihr bei der Ausführung des 1. Teils auch Erfolg gehabt. Ich denke ja. Nun werden wir erstmals eigene Programme schreiben. Diese Programme, Dummy 3 und Beeper, sind dem Buch 'Alles über Geos 1.3' entnommen und wurden von mir für die Verwendung mit GeoProgrammer umgeschrieben. Nun kommt der Quellcode für den Linker
; *** Allgemeiner Linker Quellcode ***
.output GeoPGMerKurs
; Name des fertigen Programms
.header HEADER.rel
; Name des Infoblocks (Header)
.seq
; Programmtype
.psect $0400
; Startadresse des Programms
.ramsect $5000
; Startadresse der Variablen
PGM.src.rel
; Name des Programms, Assembler Datei
Nun kommt der Quellcode für den Header:
; *** Header Allgemein ***
; * Vorspann *
.if Pass1
.noeqin
.include geosSym
.eqin
.endif
;*Header*
.header ; Start des Header
.word 0 ; Die ersten zwei immer 0
.byte 3 ; Iconbreite in Bytes
.byte 21 ; Iconhöhe in Bits
.byte $80 ö USR
; Bit für Filetyp setzen
.byte APPLICATON
; Goes File Type
.byte SEQUENTIAL
; Geos File Struktur
.word ProgStart
; Startadresse
.word $3ff
; Endadresse. nur notwendig, bei Desk-Accessories
.word ProgStart
; Startadresse
.byte "GEOS LERNEN V1.0" ,0,0,0,0
; Dauer Filename: 12 Zeichen.
; danach 4 Zeichen Versions Nummer
; danach 3 Nullen, danach 40/80 Zeichen Flag
.byte "Jürgen Heinisch ",0
; Neunzehn Zeichen Autorname
; Kontrollblock
.block 160-117
; 43 Bytes überspringen
.byte "Erstellt von"
.byte "Jürgen Heinisch.",0
.endh
Nun kommt der Quellcode für das Programm Dummy 3
; Programm Dummy 3 aus dem Buch alles über GEOS1.3
.if Paas1
; Vorspann zum einbinden der vordefinierten
; Symboltabelle und Macro´s
.include geosSym
.include geosMac
.endif
.psect
ProgStart:
LoadW r0,#Parameter
; Zeiger auf DialogBoxDaten
jsr DoDlgBox
; Aufbau der Dialogbox
jmp EnterDeskTop
; Programm beenden
Parameter ; = Label
.byte $82 ; Werte für die Dialogbox
.byte $0b
.byte 7
.byte 10
.word Text
.byte $01
.byte 10
.byte 20
.byte 0
Text: .byte 24,14
.byte "Das ist der Text."
.byte 0
Nun kommt der Quellcode für das Programm Beeper
;Beispiel BEEPER aus Alles über GEOS 1.3
.if Pass1
.include geosSym
.include geosMac
.endif
.psect
ProgStart:
sei ; Interrupt verbieten
lda #$37 ; I/O ROM einschalten
sta $01
lda #$0f
sta $d418 ; Tonroutine aus MSE- 64er
lda #$00
sta $d405
lda #$f7
sta $d406
lda #$11
sta $d404
lda #$32
sta $d401
lda #$00
sta $d400
ldy #$80 ; Schleife für Tondauer
loop1: ldx #$ff
loop2: dex
bne loop2
dey
bne loop1
lda #$10
sta $d404
lda #$30 ; I/O ROM ausschalten
sta $01
cli ; interrupt zulassen
jmp EnterDeskTop
; Programm beenden
ProgEnd: ; Label für Endadresse
; s. Symboltabelle
Eingabehinweise: Verwendete Maschinesprachebefehle:
lda #$37 ;lädt den Wert 37 in den Akkumulator
sta $d418 ;speichert den Inhalt des Akkumulators
;in die Adresse $d418
jsr DoDlgBox ;Springt zu der Routine DoDlgBox
;und kehrt zurück
jmp EnterDeskTop ;Ruft die Routine EnterDeskTop auf
sei ;Unterbricht den Interrupt
cli ;Startet den Interrupt
dex,dey ;reduziert den Wert im X/Y-Register um 1
bne ;Prüft Ergebnis auf Null
-JH-
Kurzlink hierhin: http://geos-printarchiv.de/821 |
|
Letzte Änderung am 01.11.2019 |
|