Dragon32.com and a new Disk mag?

A place to discuss everything Dragon related that doesn't fall into the other categories.
User avatar
daftspaniel
Posts: 46
Joined: Fri Jan 07, 2011 5:50 pm

Dragon32.com and a new Disk mag?

Post by daftspaniel »

Hi Folks,

Whilst I was hunting around for Dragon content online, I happened to notice the domain Dragon32.com was available and I could not resist snapping it up :D

I have a few ideas for the site which I would like to bounce off the members of this forum to make sure it makes sense. Firstly, I want to supplement what is already on-line and not be another wiki or archive playing catchup to this great resource! Secondly I'd like to encourage old Dragon keepers to get busy with the old beast again.

Okay so my first solid plan is to get some programming information up there starting with BASIC examples for those getting back to the Dragon who may not have their old collections of books and mags to work from.

I'd also like to float the idea of producing an irregular disk magazine Up2date style. This is to give people a target to work for - so many home projects never get finished due to no deadline. Is this just too crazy an idea for the auld beast ? :lol:

Would be great to know what you think of the plans for the site!

Take care,
Davy
zephyr
Posts: 1474
Joined: Mon Jul 21, 2008 1:18 am

Re: Dragon32.com and a new Disk mag?

Post by zephyr »

Here's a suggested alternative keyboard input routine for continuous movement. This method will also work on the Tandy Color Computer. 'POKE 337,0' in line 40 (which should be omitted for use on the Tandy CoCo) improves keyboard response by enabling rollover for all keys. 'FOR I = 338 TO 345:POKE I,255:NEXT' enables auto-repeating keys by continuously resetting all of the bytes in the keyboard rollover table. I have also modified the screen boundary test in lines 100-130.

Regards,
Steve

Code: Select all

10 CLS
20 X=0:Y=0
30 POKE 1024+((Y*32)+X),ASC("*")
40 POKE 337,0:FOR I = 338 TO 345:POKE I,255:NEXT
50 A$ = INKEY$:IF A$ = "" THEN 40
60 IF A$ = CHR$(10) THEN GOSUB150:Y = Y + 1
70 IF A$ = CHR$(94) THEN GOSUB150:Y = Y - 1
80 IF A$ = CHR$(9) THEN GOSUB150:X = X + 1
90 IF A$ = CHR$(8) THEN GOSUB150:X = X - 1
100 IF Y<0 THEN Y=0
110 IF Y>15 THEN Y=15
120 IF X<0 THEN X=0
130 IF X>31 THEN X=31
140 GOTO 30
150 REM HIDE IT!
160 POKE 1024+((Y*32)+X),ASC(".")
170 RETURN
Another (Dragon only) method...

Code: Select all

10 CLS
20 X=0:Y=0
30 POKE 1024+((Y*32)+X),ASC("*")
40 IF PEEK(342) = 223 THEN GOSUB130:Y = Y + 1
50 IF PEEK(341) = 223 THEN GOSUB130:Y = Y - 1
60 IF PEEK(344) = 223 THEN GOSUB130:X = X + 1
70 IF PEEK(343) = 223 THEN GOSUB130:X = X - 1
80 IF Y<0 THEN Y=0
90 IF Y>15 THEN Y=15
100 IF X<0 THEN X=0
110 IF X>31 THEN X=31
120 GOTO 30
130 REM HIDE IT!
140 POKE 1024+((Y*32)+X),ASC(".")
150 RETURN
User avatar
daftspaniel
Posts: 46
Joined: Fri Jan 07, 2011 5:50 pm

Re: Dragon32.com and a new Disk mag?

Post by daftspaniel »

Thanks Steve - appreciate the contribution. I'll get them up there soon ;)

Davy
zephyr
Posts: 1474
Joined: Mon Jul 21, 2008 1:18 am

Re: Dragon32.com and a new Disk mag?

Post by zephyr »

Feel free to use anything posted by myself in the "Hints and Tips" section on your site. Steve Woolham has also asked me to pass on the same message.

Good luck with the new site! 8-)


Regards,
Steve
zephyr
Posts: 1474
Joined: Mon Jul 21, 2008 1:18 am

Re: Dragon32.com and a new Disk mag?

Post by zephyr »

The code below is a suggested modification to improve your current example for reading joystick input.

Code: Select all

10 CLS
20 PRINT @1, "right joystick"
30 PRINT @32, JOYSTK(0)
40 PRINT @64, JOYSTK(1)
50 RB=PEEK(65280) AND2
60 PRINT @97, "button";RB
70 REM
80 PRINT @161, "left joystick"
90 PRINT @192, JOYSTK(2)
100 PRINT @224, JOYSTK(3)
110 LB=PEEK(65280) AND1
120 PRINT @257, "button";LB
130 GOTO 20
Or this alternative suggestion.

Code: Select all

10 CLS
20 PRINT @1, "right joystick"
30 PRINT @32, JOYSTK(0)
40 PRINT @64, JOYSTK(1)
50 RB=1:IF PEEK(65280)AND2 THEN RB=0
60 PRINT @97, "button";RB
70 REM
80 PRINT @161, "left joystick"
90 PRINT @192, JOYSTK(2)
100 PRINT @224, JOYSTK(3)
110 LB=1:IF PEEK(65280)AND1 THEN LB=0
120 PRINT @257, "button";LB
130 GOTO 20
Last edited by zephyr on Mon Feb 07, 2011 4:18 pm, edited 1 time in total.
zephyr
Posts: 1474
Joined: Mon Jul 21, 2008 1:18 am

Re: Dragon32.com and a new Disk mag?

Post by zephyr »

Here's a nice little program which I suggest for your 'Graphics' section. This simple BASIC program demonstrates the use of some HIRES graphic commands, random numbers, and TIMER function.

Code: Select all

10 X=RND(-TIMER):Z=0
20 PMODE 3,1:SCREEN 1,Z:PCLS
30 TIMER=0
40 X=RND(256):Y=RND(192):R=RND(20):C=RND(4)
50 CIRCLE(X,Y),R,C
60 PAINT(X,Y),C,C
70 IF TIMER/50 <300 THEN 40
80 IF Z=0 THEN Z=1 ELSE Z=0
90 GOTO 20
User avatar
daftspaniel
Posts: 46
Joined: Fri Jan 07, 2011 5:50 pm

Re: Dragon32.com and a new Disk mag?

Post by daftspaniel »

Wow thanks for all the code guys :D

I'll get it on the site as soon as I can.

I particularly like the simplified Joystick code. Still a bit baffled why there is no proper function for buttons :!:

Cheers,
Davy
zephyr
Posts: 1474
Joined: Mon Jul 21, 2008 1:18 am

Re: Dragon32.com and a new Disk mag?

Post by zephyr »

A few more suggested snippets for your 'Graphics' section.

Code: Select all

10 PMODE3,1:SCREEN1,0
20 X=RND(-TIMER)
30 PCLS
40 X=RND(255):IF X=PEEK(1536) THEN 40
50 FOR I=1536 TO 7679:POKE I,X:NEXT
60 GOTO 30
This one is similar to your 'confetti display' program, but on the HIRES PMODE 3 graphics screen.

Code: Select all

10 PMODE 3,1:SCREEN 1,0:PCLS
20 X=RND(-TIMER)
30 FOR I=1536 TO 7679:POKE I,RND(255):NEXT
40 GOTO 40
This one is similar to your 'confetti display' program, but on the SEMIGRAPHICS 24 (MODE 24) screen.

Code: Select all

10 ' SEMIGRAPHICS 24
20 '
30 PCLEAR 4:SCREEN 0,0
40 POKE65477,0:POKE65475,0:POKE65472,0:POKE65479,0
50 X=RND(-TIMER)
60 FOR I=1536 TO 7679:POKE I,96:NEXT
70 FOR I=1536 TO 7679:POKE I,127+RND(128):NEXT
80 IF INKEY$<>" " THEN 80 ELSE 60
This is the same, but uses the PCLS routine to clear the screen quickly.

Code: Select all

10 ' SEMIGRAPHICS 24
20 '
30 PCLEAR 4:PMODE 3,1:SCREEN 0,0
40 POKE65477,0:POKE65475,0:POKE65472,0:POKE65479,0
50 X=RND(-TIMER)
60 COCO=38210:DRAGON=43216
70 ROM=DRAGON:IF PEEK(49151)<>180 THEN ROM=COCO
80 POKE 179,224:EXEC ROM
90 FOR I=1536 TO 7679:POKE I,127+RND(128):NEXT
100 IF INKEY$<>" " THEN 100 ELSE 80
NOTE: These four routines are not compatible with DragonDOS (or other). Anyone wanting to try them will need to use one of the free Dos Detach programs, or remove the DOS controller cartridge.

Regards,
Steve
zephyr
Posts: 1474
Joined: Mon Jul 21, 2008 1:18 am

Re: Dragon32.com and a new Disk mag?

Post by zephyr »

Here are the same four routines with extra code added to make them DOS compatible. These are safe to use on a CoCo or Dragon, with or without DOS.

Code: Select all

10 PMODE 3,1:SCREEN 1,0
20 S=PEEK(186)*256+PEEK(187)
30 E=PEEK(183)*256+PEEK(184)-1
40 X=RND(-TIMER)
50 PCLS
60 X=RND(255):IF X=PEEK(S) THEN 60
70 FOR I=S TO E:POKE I,X:NEXT
80 GOTO 50

Code: Select all

10 PMODE 3,1:SCREEN 1,0:PCLS
20 S=PEEK(186)*256+PEEK(187)
30 E=PEEK(183)*256+PEEK(184)-1
40 X=RND(-TIMER)
50 FOR I=S TO E:POKE I,RND(255):NEXT
60 GOTO 60

Code: Select all

10 ' SEMIGRAPHICS 24
20 '
30 PMODE 4,1:SCREEN 1,0
40 POKE 65314,PEEK(65314)AND7
50 S=PEEK(186)*256+PEEK(187)
60 E=PEEK(183)*256+PEEK(184)-1
70 X=RND(-TIMER)
80 FOR I=S TO E:POKE I,96:NEXT
90 FOR I=S TO E:POKE I,127+RND(128):NEXT
100 IF INKEY$<>" " THEN 100 ELSE 80

Code: Select all

10 ' SEMIGRAPHICS 24
20 '
30 PMODE 4,1:SCREEN 1,0
40 POKE 65314,PEEK(65314)AND7
50 S=PEEK(186)*256+PEEK(187)
60 E=PEEK(183)*256+PEEK(184)-1
70 X=RND(-TIMER)
80 COCO=38210:DRAGON=43216
90 ROM=DRAGON:IF PEEK(49151)<>180 THEN ROM=COCO
100 POKE 179,224:EXEC ROM
110 FOR I=S TO E:POKE I,127+RND(128):NEXT
120 IF INKEY$<>" " THEN 120 ELSE 100
zephyr
Posts: 1474
Joined: Mon Jul 21, 2008 1:18 am

Re: Dragon32.com and a new Disk mag?

Post by zephyr »

daftspaniel wrote:Our first Dragon software project this year is coming along nicely – feeling a bit less rusty and getting used to BASIC again. If anyone has a program for renumbering BASIC on a PC, please let me know. I could code my own but don’t want to reinvent the wheel.
Try the attached MS-DOS based GW-BASIC by Microsoft. GW-BASIC supports load and save (SAVE"PRGNAME",A) in ASCII format.

Regards,
Steve
Attachments
GW-BASIC.rar
(388.39 KiB) Downloaded 172 times
Post Reply