|
|
29.03.2024 | 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 |