Jump to content
IGNORED

The "funkheld" Question Thread


funkheld

Recommended Posts

With a trick you can set up 2 screens where the graphics commands work.
the 2nd screen is on $ 2000 store.
FEATURES {
STARTADDRESS: default = $ 3000;
$ 3,000 has been set.

Alternating here is "560,561 $ 230, $ 231 SDLSTL, SDLSTH"
the starting address $ 2000 is entered and the address of
graphic 23.

greeting

 

dlist =560
savmsc=$58
ramadr=$2000
 
gr. 23
dliadr=dpeek(dlist)
scradr=dpeek(dliadr+4)
 
dpoke dliadr+4,$2000
dpoke savmsc,$2000
 
color 1
 
plot 0,0
drawto 159,95
plot 159,0
drawto 0,95
 
for a=0 to 255
   poke $2000+a,129
next a 
 
for a=0 to 8000
next a
 
dpoke dliadr+4,scradr
dpoke savmsc,scradr
 
plot 0,50
drawto 159,95
 
for a=2000 to 2255
   poke 49248+a,129
next a 
 
for a=0 to 8000
next a
 
dpoke dliadr+4,$2000
dpoke savmsc,$2000
 
for a=0 to 8000
next a
 
dpoke dliadr+4,scradr
dpoke savmsc,scradr
 
repeat
until Key()
Link to comment
Share on other sites


pm in the mod graphic.


cfg for fastbasic :

------------------------------------------------

FEATURES {

STARTADDRESS: default = $3000

------------------------------------------------


demo of the fastavr.atr with altirra.


- pmtest1.xex

- pmtest2.xex


pm with picture (160x96)




dlist =560
savmsc=$58
ramadr=$2000
max=3840

' p/m test program
ramtop = $6a : sdmctl = $22f : pcolr0 = $2c0
hposp0 = $d000 : gractl = $d01d : pmbase = $d407

data dlidat() byte = $70, $70, $70, $4d,
data byte = $00,$20,
data byte = $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d,
data byte = $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d,
data byte = $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d,
data byte = $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d,
data byte = $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d,
data byte = $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d,
data byte = $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d,
data byte = $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d,
data byte = $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d,
data byte = $0d, $0d, $0d, $0d, $0d, $41,
data byte = $00, $00

dpoke adr(dlidat)+103,adr(dlidat)
dpoke dlist,adr(dlidat)
dpoke savmsc,ramadr

open #1, 4, 0, "D:MULBI.BIN"
bget #1,ramadr, max
close #1

' reserve memory at top
memtop = 200
p0mem = $100 * memtop + $200
oldpos = p0mem
poke ramtop, memtop

' activate and configure p/m data
poke p0mem, 0 : move p0mem, p0mem+1, 127 : ' clears memory
poke pcolr0, $1f
poke sdmctl, peek(sdmctl) ! 8
poke pmbase, memtop
poke gractl, 2

' p/m data and blank (to clear p/m)
data pmdata() byte = $38,$44,$54,$44,$38
data pmclear() byte = $00,$00,$00,$00,$00

' initial conditions
xpos = 6400 : ypos = 2560
xspd = 64 : yspd = 0

repeat
xpos = xpos + xspd : ypos = ypos + yspd
yspd = yspd + 2

if (yspd > 0) and (ypos > 12800)
yspd = -yspd
xspd = rand(512) - 256
endif

if xspd > 0
if xpos > 25600 then xspd = -xspd
else
if xpos < 6400 then xspd = -xspd
endif

exec movepm : ' move p/m graphics
until key()

' restore ramtop and sdmctl
poke gractl, 0
poke sdmctl, peek(sdmctl) & 247
poke ramtop, memtop + 4

end

proc movepm
x = xpos / 128 : y = p0mem + ypos / 128

pause 0
poke hposp0, x
move adr(pmclear), oldpos, 5
move adr(pmdata), y, 5
oldpos = y
endproc




pm with graphisc 23 and Put/Drawto




dlist =560
savmsc=$58
ramadr=$2100
max=3840

' p/m test program
ramtop = $6a : sdmctl = $22f : pcolr0 = $2c0
hposp0 = $d000 : gractl = $d01d : pmbase = $d407

' reserve memory at top
memtop = 200
p0mem = $100 * memtop + $200
oldpos = p0mem
poke ramtop, memtop

gr. 23
color 1

dladr=dpeek (dlist)
move dladr,$2000,255

dpoke dlist,$2000
dpoke $2000+4,ramadr
dpoke savmsc,ramadr

plot 0,0
drawto 159,95
plot 159,0
drawto 0,95

for z=0 to 255
poke (ramadr+z),255
next z

' activate and configure p/m data
poke p0mem, 0 : move p0mem, p0mem+1, 127 : ' clears memory
poke pcolr0, $1f
poke sdmctl, peek(sdmctl) ! 8
poke pmbase, memtop
poke gractl, 2

' p/m data and blank (to clear p/m)
data pmdata() byte = $38,$44,$54,$44,$38
data pmclear() byte = $00,$00,$00,$00,$00

' initial conditions
xpos = 6400 : ypos = 2560
xspd = 64 : yspd = 0

repeat
xpos = xpos + xspd : ypos = ypos + yspd
yspd = yspd + 2

if (yspd > 0) and (ypos > 12800)
yspd = -yspd
xspd = rand(512) - 256
endif

if xspd > 0
if xpos > 25600 then xspd = -xspd
else
if xpos < 6400 then xspd = -xspd
endif

exec movepm : ' move p/m graphics
until key()

' restore ramtop and sdmctl
poke gractl, 0
poke sdmctl, peek(sdmctl) & 247
poke ramtop, memtop + 4

end

proc movepm
x = xpos / 128 : y = p0mem + ypos / 128

pause 0
poke hposp0, x
move adr(pmclear), oldpos, 5
move adr(pmdata), y, 5
oldpos = y
endproc



greeting

fastbasic.atr

Edited by funkheld
Link to comment
Share on other sites

The OS boot loader can't load executables, it only loads a block of data. The first boot sector gives the load address and the total number of sectors to load. Single and enhanced density disks can load up to 32K. Double density disks can only load 384 bytes, so they need a two-stage boot. Your best bet is to use DOS or a mini-DOS and have it load your program as AUTORUN.SYS.

  • Like 1
Link to comment
Share on other sites

Hi good afternoon.
gr. 8 + 16 does not work with graphics and text with
fastbasic
greeting

 

 

 

' Graphics sample
gr. 8+16
color 1
 
' Sample line drawing
for i=0 to 100 step 3
 plot 100-i,0
 dr. 0,i
next i
 
' Plotting a function (in FP)
for i=120 to 300
 y% = i * 0.05 - 11
 y% = y% * y% * (y% + 5)
 plot i, 160 - int(y%)
next i
 
print "test"
 
repeat
until Key()
Link to comment
Share on other sites

I would expect that the print"test" statement will kick you back to graphics 0, but that's how it should work.

 

GRAPHICS 8+16 will switch to graphics mode 8 - finest resolution and +16 indicates no text window (four text lines at the bottom).
Therefore the PRINT statement has no choice, but to switch back to GRAPHICS 0.

 

You cannot use the print statement to print text to a graphics mode. FastBasic doesn't have a special command that would allow you to draw text to a graphics mode.

 

Next time, please be more specific when describing what exactly happened (symptoms).

Edited by baktra
  • Like 1
Link to comment
Share on other sites

If you don't mind a cross-platform solution, look here: http://www.horus.com/~hias/atari/

 

You are looking for dir2atr and Picoboot. The two tools can create an .atr image that contains a single binary load file (.xex) together with a special bootloader that loads and executes the binary load file. So you insert the disk, power-on the computer and the .xex file loads automatically.

 

Provided that you installed the dir2atr tool, you can execute a simple batch file that will create your auto-starting disk

@ECHO OFF

REM Create directory with disk contents
mkdir disk_contents

REM Copy the xex file to the disk_contents directory
copy mygame.xex disk_contents\MYGAME.COM

REM Create bootable disk
dir2atr.exe -b PicoBoot405 720 "MyGameDisk.atr" disk_contents
pause
  • Like 1
Link to comment
Share on other sites

"MiniDOS" is a general term. It denotes any miniature DOS that can just load a binary load file. PicoBoot is also one of the "MiniDOSes"

Try MICRODOS II

 

1. Prepare an ATR image with just your binary load file

2. Boot MICRODOS II from its disk image

3. Insert the image prepared in step 1

4. Enter information you are prompted for

5. MICRODOS II will write a boot loader to your disk image

 

Then you can boot from your disk image.

Link to comment
Share on other sites


Hi good afternoon.


if you play with your own dl you can the memory

Set to ramtop (208) is the hiaddress $ CFFF.



this triumphs for all your own dl.....!!!

if you play with players you can go down to ramtop(200).


I do not notice any problems at the moment

all graphics and players are alright.


by me is:



FEATURES {

STARTADDRESS: default = $3000;

MAIN: file = %O, define = yes, start = %S, size = $CFFF - %S;



greting.






dlist =560
savmsc=$58
ramadr=$2100

data dldat() byte = $70, $70, $70, $46,
data byte = $00,$21,
data byte = $06, $06, $06, $06, $06, $06, $06, $06, $06, $06,
data byte = $06, $06, $06, $06, $06, $06, $06, $06, $06, $06,
data byte = $06, $06, $06, $41, $00, $20

dladr=adr(dldat)
move dladr,$2000,255

dpoke dlist,$2000
dpoke savmsc,ramadr

for i= 0 to 5
print "es geht";
next i

repeat
until key()

end

Edited by funkheld
Link to comment
Share on other sites

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...