Kirjoittaja: Antti Laaksonen
Kirjoitettu: 16.10.2002 – 16.10.2002
Tagit: koodi näytille, vinkki
Tämä ohjelma näyttää tekstitiedoston todella nopeasti ja ilman välkkymistä, käyttäen BSAVE- ja BLOAD-komentoja tekstirivien skrollaukseen. Ainakin itselläni ohjelma oli vähän liiankin nopea, mutta hidastus ei yleensä ongelma ole, sopivaan väliin vain WAIT &H3DA, 8.
Kaikki tiedoston teksti ladataan taulukkoon, joten sitä voi olla korkeintaan 500 rivin verran. Tämän rajan voisi melko helposti kiertää monellakin keinolla, ja siinä suhteessa ohjelmassa on parantamisen varaa - halusin kuitenkin pitää koodin mahdollisimman yksinkertaisena.
' Tekstitiedoston näyttäminen n o p e a s t i
' -------------------------------------------------
'
' käyttäen BSAVE- ja BLOAD-komentoja tekstirivien
' nopeaan skrollaukseen
'
' Copyright Antti Laaksonen 2002
'muuttujien määrittelyt
DIM tiedosto AS STRING
DIM SHARED rivit(500) AS STRING
DIM SHARED rivi AS INTEGER
DIM rivimaara AS INTEGER
'näytettävä tiedosto
tiedosto = "c:\autoexec.bat"
'ylä- ja alapalkin piirtäminen
CLS
LOCATE 1
COLOR 15, 1: PRINT LEFT$(tiedosto$ + SPACE$(80), 80)
LOCATE 23
COLOR 15, 1: PRINT LEFT$(CHR$(25) + " alas, " + CHR$(24) + " ylös, Esc pois" + SPACE$(80), 80)
'tiedoston rivien lukeminen taulukkoon
OPEN tiedosto FOR INPUT AS #1
DO UNTIL EOF(1) OR rivimaara = 500
rivimaara = rivimaara + 1
LINE INPUT #1, rivit(rivimaara)
rivit(rivimaara) = LEFT$(rivit(rivimaara) + SPACE$(80), 80)
LOOP
CLOSE #1
'ensimmäisten rivien tulostaminen
LOCATE 2
COLOR 7, 0
FOR i = 1 TO 20
LOCATE i + 1: PRINT rivit(i)
NEXT
'tekstinäytön segmentti
DEF SEG = &HB800
'aloitetaan riviltä 1
rivi = 1
DO
'tyhjennetään välillä näppäimistöpuskuri
l% = l% + 1
IF l% = 100 THEN x$ = INKEY$: l% = 0
'luetaan painettu näppäin
n% = INP(&H60)
SELECT CASE n%
'jos näppäin on 1, Esc, poistutaan ohjelmasta
CASE 1
KILL "c:\qbt.dat"
END
'jos näppäin on 80, alas, skrollataan tekstiä alas
'rivin verran jos ei olla tiedoston lopussa
CASE 80
IF rivi < rivimaara - 19 THEN
rivi = rivi + 1
SkrollaaAlas
END IF
'jos näppäin on 72, ylös, skrollataan tekstiä ylös
'rivin verran jos ei olla tiedoston alussa
CASE 72
IF rivi > 1 THEN
rivi = rivi - 1
SkrollaaYlos
END IF
END SELECT
LOOP
SUB SkrollaaAlas
'siirtää tekstirivejä ylöspäin rivin verran
BSAVE "c:\qbt.dat", 320, 160 * 20
BLOAD "c:\qbt.dat", 160
'tulostaa uuden alimman rivin
LOCATE 21: PRINT rivit(rivi + 19)
END SUB
SUB SkrollaaYlos
'siirtää tekstirivejä alaspäin rivin verran
BSAVE "c:\qbt.dat", 160, 160 * 19
BLOAD "c:\qbt.dat", 320
'tulostaa uuden alimman rivin
LOCATE 2: PRINT rivit(rivi)
END SUBTosi yksinkertainen ja selkeä koodi. Vieläpä helposti muokattavissa..
Wau! Tämän avulla sain uuden ohjelmani toimimaan!