Jump to content
IGNORED

IntyBASIC compiler v1.0 crunchy&tasty :)


nanochess

Recommended Posts

Oh not at all, thank YOU! :)

Ok, now I'm confused, I've recompiled IntyBASIC and the generated binary is exactly the same as the one in the distribution.

 

Besides I've tested it in my Linux box and the code compiles right.

Link to comment
Share on other sites

Ok, now I'm confused, I've recompiled IntyBASIC and the generated binary is exactly the same as the one in the distribution.

 

Besides I've tested it in my Linux box and the code compiles right.

 

Last edit. Things are fine now.

 

I have NO idea what the hell was going on. I *think* I somehow ended up with a strange mix of intybasic_linux, prologue, and epilogue files. And my second attempt was an even STRANGER mix. I have absolutely no idea how this happened, especially not a second time. Running diffs all over the place gave me results that are impossible, but whatever. At least I figured it out.

 

I completely wiped out my development library and started over, and my code is now compiling nicely. So thanks for sanity checking on me, and I really apologize for wasting your time. I can't figure out how it happened, but more importantly - the pro/epilogue shouldn't affect things like IF statements?? If I had mixed versions, at least the main intybasic_linux executable should have worked.

 

Unfortunately now I have to figure out how to reclaim some 16-bit variables. I had no idea I was using so many :P

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

Last edit. Things are fine now.

 

I have NO idea what the hell was going on. I *think* I somehow ended up with a strange mix of intybasic_linux, prologue, and epilogue files. And my second attempt was an even STRANGER mix. I have absolutely no idea how this happened, especially not a second time. Running diffs all over the place gave me results that are impossible, but whatever. At least I figured it out.

 

I completely wiped out my development library and started over, and my code is now compiling nicely. So thanks for sanity checking on me, and I really apologize for wasting your time. I can't figure out how it happened, but more importantly - the pro/epilogue shouldn't affect things like IF statements?? If I had mixed versions, at least the main intybasic_linux executable should have worked.

 

Unfortunately now I have to figure out how to reclaim some 16-bit variables. I had no idea I was using so many :P

Cool! I'm glad everything now is working fine :)

 

No way for the prologue or epilogue files to change the compiler behavior.

Link to comment
Share on other sites

No way for the prologue or epilogue files to change the compiler behavior.

 

Yeah, the only weirdness is when I got a "MULT not defined" message from using an older version of the epilogue. THAT one made sense at least (although I still have no idea how I ended up with the first situation).

  • Like 1
Link to comment
Share on other sites

  • 4 weeks later...

if you type the following at the command prompt

jzintv -z1 game1.bin

 

 

what happens?

 

From the screen grabs aboove I see that Intybasic is executed, the AS1600 compiler is executed, but I don't see a jzintv command

 

I agree. What is that "pause" you are executing?

Link to comment
Share on other sites

I just updated my IntyBASIC distro, and while doing a "diff" on the epilogue.asm changes, I noticed that IntyBASIC no longer speaks Spanglish. It's now back to boring English. :(

I also see that you included my MULT macro for constant multiplication. The header of the macro says:

;* ======================================================================== *;
;*  These routines are placed into the public domain by their author.  All  *;
;*  copyright rights are hereby relinquished on the routines and data in    *;
;*  this file.  -- James Pujals (DZ-Jay), 2014                              *;
;* ======================================================================== *;

That was intended to convey that the code is in the public domain, not that I take credit for it. You may want to add a note that it was modified or improved from a macro originally created by Joe Z.

 

Joe created a "macro generator" program that produced the optimal combinations of shifts and additions for each constant. My changes were minor:

  • Re-formatted to fit my obsessive code style;
  • Updated all code paths to use the same registers for output and temporary storage to ensure a consistent interface;
  • Updated all code paths to return output on initial register always;
  • And updated code paths for x126 and x127 to use SWAPs instead of shift-by-eight.

 

-dZ.

 

P.S. I see that the price of donations went up from $5 USD to $9!! :lol:

Edited by DZ-Jay
  • Like 1
Link to comment
Share on other sites

I've updated my "intybasic - DZ's Special" distribution with the latest version of IntyBASIC (v1.0.4). It includes all the new sample and contributor's programs, and all the stuff that comes with the regular distribution, but organized in my special obsessive way. :)

 

I also compiled all samples programs with the latest version and tested them to make sure they work properly.

 

As always, this is not an "official" distribution, and I don't take credit for any of its content (except the "intbas.pl" script that compiles and assembles in one go, and creates folders as necessary); but given that nanochess mentioned it in the IntyBASIC manual, it can't be all bad. :)

 

If nanochess approves, and there is interest in it, I'll create a post in the forum to maintain this project and update it as necessary. That way there can be a single place for distribution.

 

Please enjoy!

 

-dZ.

 

intybasic - DZ's Special.zip

  • Like 1
Link to comment
Share on other sites

If nanochess approves, and there is interest in it, I'll create a post in the forum to maintain this project and update it as necessary. That way there can be a single place for distribution.

 

Please enjoy!

 

Approved! :) :thumbsup:

Link to comment
Share on other sites

A black screen appears.

In the meanwhile you can compile game1.bas, zip the resulting files and upload there so I can check them. I'll try to give a look tomorrow.

 

Anyone else has tested in Windows 7? I only have WinXP for testing.

Link to comment
Share on other sites

Just took a quick peek at the latest epilogue code and its advanced quite a bit since I last looked :D. However I did notice this code sequence :-

 

_play_music:	PROC
	TSTR R0
	BEQ @@1
	MOVR R0,R2
	MVI@ R2,R3
	INCR R2
	DIS
	MVO R2,_music_start
	MVO R2,_music_p
        MVII #1,R0
	MVO R3,_music_t
	MVO R0,_music_tc
	EIS
        JR R5

@@1:	DIS
	MVO R0,_music_start
	MVO R0,_music_p
	MVII #1,R0
	MVO R0,_music_t
	MVO R0,_music_tc
	EIS
	JR R5

	ENDP
Which seems to be creating critical sections out of non interruptible sequences of MVO instructions. It could be better optimised as follows :-

 

_play_music:	PROC
	MOVR R0,R4            ; TSTR R0 is the same as MOVR R0, R0 so its redundant.
	BEQ @@1
	MVI@ R4,R3
        MVII #1,R0
	MVO R4,_music_start   ; V - No interrupts in this sequence.
	MVO R4,_music_p       ; |
	MVO R3,_music_t       ; |
	MVO R0,_music_tc      ; V
        JR R5

@@1:	INCR R4
	MVO R0,_music_start   ; V - No interrupts in this sequence.
	MVO R0,_music_p       ; |
	MVO R4,_music_t       ; |
	MVO R4,_music_tc      ; V
	JR R5

	ENDP
  • Like 1
Link to comment
Share on other sites

Here are the files I got:

 

 

Just I've ran the files with jzintv and everything worked just fine.

 

Please check you've downloaded the most recent version of jzintv and that there are no other versions in your path. A way to checking this is to run jzintv without arguments to see current version.

 

Anyway I've found a bug in IntyBASIC, it includes the ECS boot code even when it's not needed, but no harm.

 

Just took a quick peek at the latest epilogue code and its advanced quite a bit since I last looked :D. However I did notice this code sequence :-

 

_play_music:	PROC
	TSTR R0
	BEQ @@1
	MOVR R0,R2
	MVI@ R2,R3
	INCR R2
	DIS
	MVO R2,_music_start
	MVO R2,_music_p
        MVII #1,R0
	MVO R3,_music_t
	MVO R0,_music_tc
	EIS
        JR R5

@@1:	DIS
	MVO R0,_music_start
	MVO R0,_music_p
	MVII #1,R0
	MVO R0,_music_t
	MVO R0,_music_tc
	EIS
	JR R5

	ENDP
Which seems to be creating critical sections out of non interruptible sequences of MVO instructions. It could be better optimised as follows :-

 

_play_music:	PROC
	MOVR R0,R4            ; TSTR R0 is the same as MOVR R0, R0 so its redundant.
	BEQ @@1
	MVI@ R4,R3
        MVII #1,R0
	MVO R4,_music_start   ; V - No interrupts in this sequence.
	MVO R4,_music_p       ; |
	MVO R3,_music_t       ; |
	MVO R0,_music_tc      ; V
        JR R5

@@1:	INCR R4
	MVO R0,_music_start   ; V - No interrupts in this sequence.
	MVO R0,_music_p       ; |
	MVO R4,_music_t       ; |
	MVO R4,_music_tc      ; V
	JR R5

	ENDP

 

Very nice tip! I'll put it in next version :) Thanks!

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