Flash the whole screen? [message #409869] |
Tue, 13 July 2021 12:13 |
Brandon Taylor
Messages: 144 Registered: April 2012
Karma: 0
|
Senior Member |
|
|
I'm familiar with three commands in Applesoft BASIC which let you manipulate the way text gets displayed on the screen. There's INVERSE, which prints black text on a white background; FLASH, which basically just does what it says on the tin; and finally NORMAL, which cancels both of the above commands. But my question is, how do you set the entire SCREEN to INVERSE, FLASH or NORMAL? I know it will go to INVERSE at the end of a game of "The Match Machine" which can be found on "The Shell Games" disk; but I don't know is how that little effect was accomplished. The reason I'm asking is I'm in the process of writing a game in Applesoft BASIC which, ideally, will set the entire screen to FLASH, or at least INVERSE if FLASH is not possible.
In case you need a refresher, I have the entire program listing of "The Match Machine" game here. https://mega.nz/file/woMUwJDT#LhO4jjSpjJ3Ei5z-0__HBeLHvMpGcZ AGpPdv2iyrJII
|
|
|
Re: Flash the whole screen? [message #409870 is a reply to message #409869] |
Tue, 13 July 2021 12:39 |
qkumba
Messages: 1598 Registered: March 2013
Karma: 0
|
Senior Member |
|
|
If the alternative character set is active, then full-screen INVERSE can be achieved by POKE 50,0 and then HOME.
Otherwise, you're left to printing the characters yourself, for both FLASH and INVERSE.
Here's one way:
HOME
POKE 48,mode (where mode=96 for FLASH, 32 for INVERSE)
FOR Y = 1 TO 47 STEP 2: HLIN 0,39 AT Y: NEXT
|
|
|
Re: Flash the whole screen? [message #409888 is a reply to message #409869] |
Tue, 13 July 2021 18:42 |
|
Originally posted by: Scott Alfter
In article <6cf25169-929e-4363-81f8-f9f72f69499en@googlegroups.com>,
Brandon Taylor <br.ta.2818@gmail.com> wrote:
> I'm familiar with three commands in Applesoft BASIC which let you
> manipulate the way text gets displayed on the screen. There's INVERSE,
> which prints black text on a white background; FLASH, which basically
> just does what it says on the tin; and finally NORMAL, which cancels
> both of the above commands. But my question is, how do you set the
> entire SCREEN to INVERSE, FLASH or NORMAL? I know it will go to INVERSE
> at the end of a game of "The Match Machine" which can be found on "The
> Shell Games" disk; but I don't know is how that little effect was
> accomplished. The reason I'm asking is I'm in the process of writing a
> game in Applesoft BASIC which, ideally, will set the entire screen to
> FLASH, or at least INVERSE if FLASH is not possible.
A possibly naive approach to setting the whole screen flashing:
10 FLASH: HOME: FOR I=1 TO 23: PRINT " ";: NEXT I: PRINT " ";: POKE 2039,96
20 VTAB 1: HTAB 1: PRINT "THIS IS A TEST"
The first block of spaces has 40; the second has 39. Printing the very last
space would scroll a normal line into view, so it's POKEd to the framebuffer
instead. Speedwise, it's not half bad.
_/_
/ v \ Scott Alfter (remove the obvious to send mail)
(IIGS( https://alfter.us/ Top-posting!
\_^_/ >What's the most annoying thing on Usenet?
|
|
|
Re: Flash the whole screen? [message #410539 is a reply to message #409869] |
Tue, 17 August 2021 22:33 |
Michael AppleWin Debu
Messages: 1262 Registered: March 2013
Karma: 0
|
Senior Member |
|
|
On Tuesday, July 13, 2021 at 9:13:11 AM UTC-7,
> But my question is, how do you set the entire SCREEN to INVERSE, FLASH or NORMAL?
Here is a small machine language program that will **non-destructively** change set a 40-column screen to normal, inverse, or flash depending on the current mode. Included is a small demo to demonstrate usage.
CALL-151
300:A5 32 29 C0 4A 4A 4A A8 A2 00 BD 00 04 20 57 03
310:9D 00 04 BD 80 04 20 57 03 9D 80 04 BD 00 05 20
320:57 03 9D 00 05 BD 80 05 20 57 03 9D 80 05 BD 00
330:06 20 57 03 9D 00 06 BD 80 06 20 57 03 9D 80 06
340:BD 00 07 20 57 03 9D 00 07 BD 80 07 20 57 03 9D
350:80 07 E8 E0 78 D0 B3 84 FF 48 4A 4A 4A 4A 4A 18
360:65 FF A8 68 59 6A 03 A4 FF 60 00 00 40 40 80 80
370:C0 00 40 40 00 00 C0 C0 80 00 00 00 00 00 00 00
380:00 00 C0 80 80 C0 00 00 00 00
E000G
1 TEXT:HOME:VTAB 10:GOTO 10
2 FOR Y=0 TO 7:FOR C=0 TO 31:POKE 1024 + 128*Y+C,C + 32*Y:NEXT:NEXT:RETURN:REM ASCII TABLE
3 GET A$:CALL 768:? "PRESS RETURN TO CONT":GET A$:NORMAL:CALL 768:RETURN
10 GOSUB 2:INVERSE:? "PRESS RETURN FOR INVERSE":GOSUB 3
20 GOSUB 2:FLASH:? "PRESS RETURN FOR FLASH":GOSUB 3
30 GOSUB 2:NORMAL:? "PRESS RETURN FOR NORMAL":GOSUB 3
RUN
I can post the source if anyone is interested.
m.
|
|
|