Displaylist in ACTION!#
General Information
Author: William T. Colburn
Language: ACTION!
Compiler/Interpreter: ACTION!
Published: February, 1987
This program makes use of the routine ALLOCATE.ACT from the OSS Action! Tool Kit. ALLOCATE.ACT is copywrited by OSS and is NOT in the public domain. Therefore, ALLOCATE.ACT was not included with DLIST2.ACT by the Author, and must NOT be added to it for public distribution by any other user of this demonstration program. The author of this routine refuses to accept responsibility for this type of unethical action by any users of my demonstration program.
The data "
MODULE ;DLIST2.ACT
;************************************
;*This program is in the public *
;*domain and may not be sold by *
;*anyone for any reason. It was *
;*written by: *
;* William T. Colburn *
;* in February, 1987. *
;* CI$: 72337,322 GEnie:W.T.COLBURN*
;*Please enjoy this demonstration *
;*program and share it with others! *
;*Please keep this header with the *
;*program listing when you do so. *
;************************************
;* * NOTICE * *
;*This program makes use of the *
;*routine ALLOCATE.ACT from the OSS *
;*Action! Tool Kit. ALLOCATE.ACT is*
;*copywrited by OSS and is NOT in *
;*the public domain. Therefore, *
;*ALLOCATE.ACT was not included with*
;*DLIST2.ACT by the Author, and *
;*must NOT be added to it for public*
;*distribution by any other user of *
;*this demonstration program. *
;*The author of this routine refuses*
;*to accept responsibility for this *
;*type of unethical action by any *
;*users of my demonstration program.*
;************************************
CARD EndProg ;required for ALLOCATE.ACT
; You must do a 'SET EndProg=*'
; from the monitor after compiling,
; but before running this program!
INCLUDE "D8:ALLOCATE.ACT"; from the Action! Tool Kit
MODULE ; My gloabl variables here.
BYTE ARRAY dlist= ; display list!
[
$22 ; length (34 bytes)
$70 $70 $70 ;24 overscan lines
$42 $00 $00 ;load address of static here.
$06 $06 ;two lines of Gr.1
$42 $00 $00 ;load savmsc+200 here.
$02 $02 $02 ;22 lines Gr. 0
$02 $02 $02
$02 $02 $02
$02 $02 $02
$02 $02 $02
$02 $02 $02
$02 $02
$41 $00 $00 ;load address of dlist+1 here.
]
BYTE ARRAY static ; static 80 byte display, allocated with Alloc() from Action! tool kit.
PROC dsply_list()
CARD savmsc=$58, ;contains low address of screen display
dlist_vector=$230, ; points to the display list
old_savmsc=[0], ; save the savmsc here.
temp_card=[0] ; temporary variable!
BYTE dma=559, ; antic chip on/off address
crsinh=752, ;cursor on/off address
loop ; loop counter
BYTE POINTER dlist_ptr,; pointer to display list array.
save_dlist_ptr,
static_ptr ; pointer to static
dlist_ptr=dlist
save_dlist_ptr=dlist
save_dlist_ptr==+1
static=Alloc(81); allocate 81 bytes for 'static'.
FOR loop=1 TO 80
DO
static(loop)=0
OD
static(0)=80 ; set length of string
static_ptr=static ; set pointer
static_ptr==+1 ; point to entry #1.
Graphics(0)
old_savmsc=savmsc ; save start of screen adress
dlist_ptr==+5
dlist_ptr^=static_ptr-((static_ptr RSH 8) LSH 8)
dlist_ptr==+1
dlist_ptr^=static_ptr RSH 8 ;divide by 256!
dlist_ptr==+4
temp_card=old_savmsc+120
dlist_ptr^=temp_card-((temp_card RSH 8) LSH 8)
dlist_ptr==+1
dlist_ptr^=temp_card RSH 8
dlist_ptr==+22
dlist_ptr^=save_dlist_ptr-((save_dlist_ptr RSH 8) LSH 8)
dlist_ptr==+1
dlist_ptr^=save_dlist_ptr RSH 8 ;divide by 256!
dma=0 ; turn off the antic chip
dlist_vector=save_dlist_ptr; install the dlist vector
savmsc=old_savmsc; reset the screen starting address
dma=34 ; turn on the antic chip
;**crsinh=1 ; kill cursor
RETURN
MODULE ; for user.
PROC Main()
BYTE lmargn=$52,
dma=559, Answer=[0]
lmargn=3
PutE()
PutE()
PrintE("Did you do a: SET EndProg=* ")
PrintE("from the monitor after compiling")
PrintE("but before running this program?}}")
Print("Respond Y or N...?")
Answer=GetD(7)
Put(Answer)
IF Answer='Y OR Answer='y THEN
Print("}")
ELSE
RETURN
FI
AllocInit(0); from ALLOCATE.ACT
dsply_list(); install display list
SetColor(2,10,3); pick your color
SAssign(static,"�#olburn�0x18
")4��3ystems�",09,32)
SAssign(static,"professional",45,56)
SAssign(static,"display�list�manager",61,80)
Print("}") ; clear the screen
Position(3,4)
PrintE("See? This is the display list!")
Position(3,7)
PrintE("This screen has a static display")
PrintE("on the first three lines of the")
PrintE("screen. The rest scrolls.")
PrintE("The tricky part of all this is")
PrintE("that the characters in 'static'")
PrintE("which you want to display must be")
PrintE("in the internal Atari code because")
PrintE("they won't be translated!")
PrintE("<Or some such pain in the neck.>")
PrintE("To see scrolling, type 'E' and then")
PrintE("press RETURN to go back to the")
PrintE("editor. The display list will")
PrintE("remain in place until you return")
PrintE("to the monitor or hit RESET.")
lmargn=0
RETURN
" is not legal for a JDOM character content: 0x0018 is not a legal XML character.