Assembler-Beispiel 86 - STX $ll.asm
Aus C64-Wiki
Zur Navigation springenZur Suche springen
; Diese Programm gibt das Disketten-Inhaltsverzeichnis verlustfrei aus. ; Ein vorhandenes Basic-Programm wird nicht überschrieben! ; Programmstart mit SYS 49152 *=$c000 ; Startadresse des Programms BOPEN = $ffc0 BCLOSE = $ffc3 INCMD = $ffc6 CMDOFF = $ffcc INCHAR = $ffe4 OUTCHAR = $ffd2 OUTADRES = $bdcd start lda #$93 ; Bildschirm löschen jsr OUTCHAR ldx #$01 ; logische Dateinummer stx $b8 ldx #$08 ; Gerätenummer stx $ba ldx #$00 ; Sekundäradresse stx $b9 ldx #$01 ; Länge des Dateinamens stx $b7 lda #<dateiname ; Zeiger auf Dateiname ldx #>dateiname sta $bb stx $bc jsr BOPEN ; Inhaltsverzeichnis als Programmdatei eröffnen ldx #$01 jsr INCMD ; Eingabegerät setzten jsr INCHAR ; Startadresse LSB lesen und ignorieren jsr INCHAR ; Startadresse MSB lesen und ignorieren jsr INCHAR ; Link-Adresse LSB lesen und ignorieren zeile jsr INCHAR ; Link-Adresse MSB lesen und ignorieren jsr INCHAR ; Blockanzahl LSB lesen und in Zeropage $02 speichern sta $02 jsr INCHAR ; Blockanzahl MSB lesen (Akku) ldx $02 ; Blockanzahl LSB ins X-Register jsr OUTADRES ; Blockanzahl (16 Bit) in Dezimalzahl wandeln und am Bildschirm ausgeben zeichen jsr INCHAR ; Zeichen lesen jsr OUTCHAR ; Zeichen ausgeben cmp #$00 ; Zeilenende? bne zeichen ; wiederhole bis Zeilenende erreicht lda #$0d ; Zeilenvorschub ausgeben jsr OUTCHAR jsr INCHAR ; Link-Adresse LSB lesen cmp #$00 ; immer ungleich 0, solange noch ein Eintrag bne zeile ; wiederhole bis Dateiende erreicht jsr CMDOFF ; Beendet Datenein-/ausgabe der Datei (auf Tastatur setzen) lda #$01 jsr BCLOSE ; Datei mit Dateinummer 1 schließen rts ; Rücksprung ins BASIC dateiname .byte "$"