Jump to content
IGNORED

Gr.0 Display List


Recommended Posts

the gr.0 display list(and all others) have the command to move them down to compensate for overscan on TV screens. using an emulator this is not needed. i am trying to create a gr.0 display list that has 30 lines of text insted of 24. i can create the display list but i dont know how to tell it that there are 6 more lines of text. it will give an out of range error(144) or loop back to the top after line 24. is there a way to add more text lines?

 

5 DIM DL(50)

10 GRAPHICS 0:? :?

20 S=PEEK(560)+PEEK(561)*256

30 FOR I=0 TO 35

35 DL(I)=PEEK(S+I)

40 ? DL(I);" ";

45 NEXT I:? :?

50 FOR I=0 TO 31

55 POKE S+I,DL(I+3)

60 ? PEEK(S+I);" ";

65 NEXT I

70 FOR I=26 TO 31

75 POKE S+I,2

80 NEXT I:X=29

85 FOR I=I TO I+3

90 POKE S+I,DL(X):x=X+1

100 NEXT I:? :?

110 FOR I=0 TO 35

115 ? PEEK(S+I);" ";

120 NEXT I:?

130 list:list

 

 

using atari800winplus 4.1

rev c basic

dos 2.5

xl/xe mode 1088 kb memory

 

on d3.atr:

gr0dl.bas

gr0dl.lst

d3.atr

Link to comment
Share on other sites

The OS will not know about the updated DLIst. You would have to re-work the scrolling routines, etc. or make your own. Also, I don't think you will be able to get 30 lines, as that will use up all 240 lines of the display and there are issues of the last line is in hi-res mode (maybe this does not apply if in character mode).

Link to comment
Share on other sites

Here's a simple way to do it:

 

DIM S$(1200)

 

And your display list should be as follows

 

66 (graphics 0 + load memory scan)

The next two bytes should be low+256*hi of ADR(S$)

29 lines of 2's next (for Graphics 0)

65 (Jump and wait for VB)

next two bytes are the beginning of your display list.

 

In your program you will want to set 88 and 89 to point to ADR(S$) ... then you will need to POKE to the screen memory to get chars to display, the regular print statements won't work as you have altered the normal screen map according to the OS.

 

You can use string assignments on S$ to put data on screen, just keep in mind you will need to adjust for SCREEN codes (not ATASCII). For example, the heart character in S$ will put a space on the screen ... again as you are limited to 240 scanlines this may cause problems, you may have to restrict yourself to 29 lines.

 

Also note that you will not be able to use this screen in immediate mode as this will cause S$ to shift in memory and mess up your screen.

 

There is also a method called Konop's mode ... but it's very complicated, apparently some VSCROL tricks during a VBI create a 32 line display, with the characters being 6 scanlines tall. The program Theta Music Composer uses this trick.

Edited by Synthpopalooza
Link to comment
Share on other sites

A hacked OS could support >24 lines for emulator use, no idea if anyone's attempted it. The logical line mapping routine would also need altering.

 

You can though do a bitmap mode + 4 line text window with full 192 lines in the bitmap using altered DList and the OS will support it just fine.

Link to comment
Share on other sites

Here's a thought:

 

you want 30*40 lines ... which is 1200 bytes

 

A Graphics 6 display uses about 2100 bytes (600 more than you need) ... so call Graphics 6+16 and then poke in your display list, as I described above ... no blank line instructions, 66 followed by 2 bytes marking your screen memory, 29 more lines of 2's, then 65 followed by the beginning of your DL.

 

Then: do a POKE 87,7 to fool the OS into thinking it's in 40 column mode.

 

You can now print and plot chars to this screen, the caveat is: you must use ? #6 to put chars on screen. PRINT by itself will not work and reset your DL to normal graphics 0.

 

If you want to scroll a line, there are ways that you can move your screen memory up by a line, especially if you use TurboBASIC ... MOVE DPEEK(88)+40,DPEEK(88),29*40 would work.

Edited by Synthpopalooza
Link to comment
Share on other sites

That won't work.

Put character works pixel by pixel in bitmap modes. So you'd end up with nothing like you wanted in a text mode.

 

But on XL you could build a 30 row text display and have 24 lines via S: (#6 with the OS "thinking" it's Graphics 12) and the last 4 as text window. But 30 lines means you have the scanline 240 bug to deal with.

Link to comment
Share on other sites

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...