terminal

ZXNet echo conference «real.speccy»

From Kirill Frolov To All 23 December 2000

* Crossposted in CODE.ZX

Press RESET immediately, All!

I found a useful application for the spectrum, as a terminal for Linux. Only you need some decent terminal emulator. I thought about it and decided that it would be 256x192 for a regular Spekov screen and 80x24(25) characters in color. But on the Spekov
screen it only fits
64 horizontally, and if you make 25 lines, then one won’t fit either.
So let
there be a floating window that can be dragged around the virtual terminal,
like a desktop
on an Amiga. And now I’m thinking about how to make the letters appear faster... Here we also need to take into account that they go to the spectrum through a serial interface mixed with control codes. ANSI was selected as the terminal (a little cut down, but still not the same as in
ms-based terminals).

There are a lot of different codes in ANSI, but basically these are: cursor control,
scrolling
up and down the selected window, inserting and deleting lines and characters in a line,
control
color and highlighting. The color will obviously be 1 for two letters. The most difficult thing is image manipulation: inserting, deleting and scrolling. Everything would be simple if it were not
necessary
to make a floating window - after all, all manipulations need to be carried out on the
invisible part
of the terminal. The problem is that there are a lot of unnecessary checks orTranslating addresses
through a table
greatly reduces performance, and I also want to fit the entire terminal emulator and fonts
in 16kb
of memory along with a screen of 6912 bytes. Can anyone tell me how what I
want can be done
really quickly? So far I see one acceptable way - to create a table
of address translation for
each letter on the screen. But this is an immediate brake on withdrawal. When scrolling
every
line is divided into three. And if you store the invisible part of the screen not in graphics, but in symbols, then it will definitely be slower. :-/


P.S.: what can be done in Linux TERM=blablabla I know... But there is no other terminal.

[ZX]

From Yuri Potapov To All 23 December 2000

Konichi wa, Kirill-san!

Once Sat 23 Dec 2000 at 04:30:00 Kirill and All were arguing about the terminal

KF> * Crossposted in CODE.ZX

KF> memory along with a screen of 6912 bytes. Can someone
KF> tell me how what I
KF> want can be done
KF> really quickly? So far I see one acceptable way -
KF> to create a table
KF> of address translation for
KF> each letter on the screen. But this immediately slows down the output.
KF> When scrolling
KF>, each
KF> line is divided into three. And if you store the invisible part of the
KF> screen not in graphics, but in
KF> symbols, then
KF> will definitely be slower. :-/

1. Store a virtual window 80x25 as text
2000 bytes + 1000 bytes of attributes
2. store 2 fonts
a) a letter in the left half-half
b) a letter in the right half-half
fonts can be trimmed to 7x4

3. roll out the output of 2 characters as
;sp=array address
;h=high byte of font address b)
;de=address on screen
pop bc
ld l,b
ld b,high byte of font address a)
;this piece
ld a,(bc)
or (hl)
ld (de),a
inc d
inc h
inc b
;repeat 6 times
ld a,(bc)
or (hl)
ld (de),a
inc e

pop bc
ld l,b
ld b,font address high bytea)+6
and the same drawing but from bottom to top...
there are 4 letters on the screen...
this way you can redraw the screen quite quickly
if possible, you can redraw only the changing part of the screen


▒▒▓▓▓ ▄▀█▀▀▀ Jerri / Alien Factory \ZX/