Programowanie: Użycie OS-a przy wyłączonym ROM-ie

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 13:32, 3 gru 2019
Mono (Dyskusja | wkład)
(uzytkowanie OSa przy wylaczonym ROM)
← Previous diff
Wersja z dnia 13:33, 3 gru 2019
Mono (Dyskusja | wkład)

Next diff →
Linia 59: Linia 59:
jsr JSIOINT ;$E459 jsr JSIOINT ;$E459
- 
- lda #%11111110 
- sta PORTB ;$D301 
</pre> </pre>
Rejestry $00..$7F oraz $2xx i $3xx są to rejestry zarezerwowane dla potrzeb systemu operacyjnego. Rejestry $00..$7F oraz $2xx i $3xx są to rejestry zarezerwowane dla potrzeb systemu operacyjnego.
[[Kategoria:Niezbędnik kodera]] [[Kategoria:Niezbędnik kodera]]

Wersja z dnia 13:33, 3 gru 2019

Żeby swobodnie używać mechanizmów OS-a a przy tym mieć dostęp do całego RAM-u trzeba zadbać tylko o poprawne wykonanie przerwań będących w ROM-ie w sytuacji kiedy ten jest wyłączony. Kod handlera przerwań:

nmiint  bit NMIST       ;$D40F
        spl
        jmp (VDSLST)    ;$0200

        sec
        .byte $24       ;bit Z

irqint  clc

        pha
        txa
        pha
        tsx
        inc PORTB       ;$D301
        lda #>iret
        pha
        lda #<iret
        pha
        lda $103,x
        pha
        scc
        jmp (NMIVEC)    ;$FFFA
        jmp (IRQVEC)    ;$FFFE

iret    dec PORTB       ;$D301
        pla
        tax
        pla
        rti

Adres nmiint trzeba ustawić w NMIVEC a irqint w IRQVEC pod ROM-em.

        sei
        lda #%00000000
        sta NMIEN       ;$D40E
        lda #%11111110
        sta PORTB       ;$D301

        ldx #<nmiint
        ldy #>nmiint
        stx NMIVEC      ;$FFFA
        sty NMIVEC+1

        ldx #<irqint
        ldy #>irqint
        stx IRQVEC      ;$FFFE
        sty IRQVEC+1

        lda #%01000000
        sta NMIEN       ;$D40E
        cli

Trzeba pamiętać, że podczas wywoływania procedury z ROM trzeba go sobie włączyć:

        lda #%11111111
        sta PORTB       ;$D301

        jsr JSIOINT     ;$E459

Rejestry $00..$7F oraz $2xx i $3xx są to rejestry zarezerwowane dla potrzeb systemu operacyjnego.

Personal tools