Tajemnice ATARI

SUPER TEXT - 6 STRONA

    Pan Rafał Mantiuk ze Szczecina przysłał program Super Text umożliwiający uzyskanie 80 znaków w wierszu. Poniżej zamieszczamy oryginalny opis programu i listing nieco zmieniony. Nie są w nim wprowadzone żadne poprawki merytoryczne, a tylko zmiany niezbędne do poprawnego działania po przepisaniu na Quick Assembler oraz kilka komentarzy. Prezentowany program w BASICU instaluje jedynie procedurę na stronie 6, by z niej korzystać, należy skasować komendę END i dalej zapisać własne aplikacje.

   Program umożliwia uzyskanie 80 znaków w wierszu lub 40 w trybie graficznym 8. Zaletą programu jest to, że nie potrzebuje dodatkowego zestawu znaków. Zajmuje 6 stronę pamięci. Tworzy urządzenie o nazwie "G:". Aby uzyskać tryb graficzny ósmy należy otworzyć kanał komendą OPEN #x,n,0,"G:" gdzie x jest numerem kanału (1-7), n jest to ilość znaków w wierszu (0-80). Tekst na tak utworzonym ekranie wypisujemy komendą PRINT #x,"tekst lub PUT #1,kod ASCII drukowanego znaku.

10 DIM A$(26):DT=1000:C=17:BS=1536:GOS
UB 700
20 A=USR(BS):END 
700 REM ---   hex to data conv    ---
710 FS=0:RESTORE DT:TRAP 750
720 FOR X=0 TO C:READ A$:POKE 53279,7
730 FOR I=1 TO 26 STEP 2
740 H=ASC(A$(I))-48:H=(H-39*(H>9))*16:
L=ASC(A$(I+1))-48:L=L-39*(L>9):POKE BS
+FS,H+L:FS=FS+1:NEXT I:NEXT X
750 RETURN 
1000 REM ---                      ---
1010 DATA 68a247a0c6a9064cbceea55418
1020 DATA 69088554a00084558456c860a2
1030 DATA 008600a8c09bf0e82a2a2a2a29
1040 DATA 03aa98299f1d49fb0a0a26000a
1050 DATA 26008d4c06a500186df4028d4d
1060 DATA 0620acf5a2008601a000bd0064
1070 DATA a6cef03285cba90085cda203a5
1080 DATA cb3dc20686cce000f0040acad0
1090 DATA fc05cd85cda6ccca10e848a555
1100 DATA 2904f008684a4a4a4a4c820668
1110 DATA 1164916418a56469288564a565
1120 DATA 69008565a601e88601e008d0af
1130 DATA a904a6ced0010a186555855590
1140 DATA 02e656a556f009a555c9409003
1150 DATA 4c0a0660bd4a0385cea0016040
1160 DATA 100401b906be06be061806be06
1170 DATA be064cbf06


*********************
*                   *
*    SUPER TEXT     *
*                   *
*********************

         opt %10101

adres    equ $64
f        equ 0
p1       equ 1
f1       equ $cb
f2       equ $cc
f3       equ $cd
mode     equ $ce
x        equ $55
y        equ $54

newdevc  equ $eebc
aincc    equ $fb49


         org $600

         pla

*- inicjalizacja nowego
*- urzadzenia

         ldx #71
         ldy tab
         jmp $eebc

eol      lda y
         clc
         adc #8
         sta y
         ldy #0
         sty x
         sty x+1
         iny
         rts

*- procedura handlera
*- PUT
put      ldx #0
         stx f
         tay
         cpy #155
         beq eol
         rol @
         rol @
         rol @
         rol @
         and #3
         tax
         tya
         and #$9f
         ora aincc,x
         asl @
         asl @
         rol f
         asl @
         rol f
         sta loop+1
         lda f
         clc
         adc 756
         sta loop+2
         jsr $f5ac
         ldx #0
         stx p1
         ldy #0
loop     lda 25600,x
         ldx mode
         beq et1
         sta f1
         lda #0
         sta f3
         ldx #3
lo1      lda f1
         and mask,x
         stx f2
         cpx #0
         beq dal
lo2      asl @
         dex
         bne lo2
dal      ora f3
         sta f3
         ldx f2
         dex
         bpl lo1
         pha
         lda x
         and #4
         beq nie
         pla
         lsr @
         lsr @
         lsr @
         lsr @
         jmp tak
nie      pla
tak      ora (adres),y
et1      sta (adres),y
         clc
         lda adres
         adc #40
         sta adres
         lda adres+1
         adc #0
         sta adres+1
         ldx p1
         inx
         stx p1
         cpx #8
         bne loop
         lda #4
         ldx mode
         bne nlp
         asl @
nlp      clc
         adc x
         sta x
         bcc et
         inc x+1
et       lda x+1
         beq ret
         lda x
         cmp #$64
         bcc ret
         jmp eol
ret      rts

*- procedura handlera
*- OPEN
ope      lda 842,x
         sta mode

*- pusta procedura
*- handlera
suk      ldy 1
         rts

*- dane
mask   dta b(64),b(16)
       dta b(04),b(01)

*-tablica procedur
*-handlera

tab dta a(ope-1),a(suk-1)
    dta a(suk-1),a(put-1)
    dta a(suk-1),a(suk-1)

    jmp suk

    end of SUPERTEXT



Powrót na start | Powrót do spisu treści | Powrót na stronę główną

Pixel 2001