TD Line: wyłączenie i włączenie z poziomu programu

From Atariki

Revision as of 20:52, 4 paź 2013; view current revision
←Older revision | Newer revision→
Jump to: navigation, search

TD Line jest programem dla SpartaDOS i SpartaDOS X, wyświetlającym na dodatkowej linii ekranu bieżący czas i datę. Niekiedy zachodzi potrzeba tymczasowego, automatycznego wyłączenia działania TD Line, na przykład na czas ładowania programu wyświetlającego jakąś czołówkę.

SpartaDOS 3.x

W SpartaDOS 3.x służy do tego celu umieszczony pod adresem $FFC6 (pod ROM-em) wektor VTDON. Wywołanie wygląda następująco:

portb = $D301
vtdon = $FFC6
;
td_off lda portb
       pha
       and #$fe
       sta portb
       ldy #$00      ;$00 - OFF, $01 - ON
       jsr vtdon
       pla
       sta portb
       rts

SpartaDOS X

W SpartaDOS X powyższy sposób też działa, ale tylko pod następującymi warunkami:

  • że pamięć pod ROM-em istnieje;
  • że wektory się tam znajdujące nie zostały zniszczone przez program korzystający z tej pamięci (np. Turbo BASIC XL).

Dlatego najlepiej, zamiast wspomnianym wektorem, posłużyć się symbolem I_TDON. Robi się to następująco:

jext_on  = $07f1
jext_off = $07f4
jfsymbol = $07eb
;
td_off lda #<sym
       ldx #>sym
       jsr jfsymbol
       beq exit        ;exit if no symbol found (= no TD loaded)
       sta ptr+1
       stx ptr+2
       tya
       jsr jext_on
       ldy #$00        ;$00 - off, $01 - on
ptr    jsr $0000
       jmp jext_off
exit   rts
; symbol name, space-padded to 8 characters
sym   .byte 'I_TDON  '

Należy zadbać, żeby podprogram znalazł się poza obszarem przełączania banków pamięci ($4000-$7FFF). Dodatkowo, sposób ten będzie działał dopiero w SpartaDOS X w wersji 4.40 albo nowszej.

Personal tools