Programowanie: Użycie OS-a przy wyłączonym ROM-ie
From Atariki
(Różnice między wersjami)
Wersja z dnia 13:33, 3 gru 2019 Mono (Dyskusja | wkład) ← Previous diff |
Wersja z dnia 13:33, 3 gru 2019 Mono (Dyskusja | wkład) Next diff → |
||
Linia 7: | Linia 7: | ||
sec | sec | ||
.byte $24 ;bit Z | .byte $24 ;bit Z | ||
- | |||
irqint clc | irqint clc | ||
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.