Home
JAQForum Ver 20.06
Log In or Join  
Active Topics
Local Time 00:07 21 Apr 2024 Privacy Policy
Jump to

Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.

Forum Index : Microcontroller and PC projects : CMM2: V5.06.00b1 - Pages and Pages

     Page 1 of 3    
Author Message
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 8570
Posted: 07:51pm 19 Nov 2020
Copy link to clipboard 
Print this post

V5.06.00b1

http://geoffg.net/Downloads/Maximite/CMM2_Beta.zip


As I intimated previously I was thinking about doing major piece of re-coding of the graphics primitives and this is the result. For many programs it should have no impact. For some it will significantly improve performance and a very small number that use Cfunctions in a particular way or peek and poke the graphics memory in some modes will break. Currently I'm only aware this applies to Gauntlet (should be an easy fix for Mauro) and the scrolling text demo in the welcome tape.

Previously, all graphics pages were limited to be the same size in any given mode and in modes 3, 5, 6, 7, 12, and 13 lines in all pages were duplicated to match the format needed for the VGA output.

In the new version line duplication only occurs for PAGE 0 and, in the case of 12-bit colour, page 1 as well.

This means there are many more pages available in these modes which of course include the key modes used for high performance games. In mode 3,8 there are now 55 pages available to the programmer vs 28 previously. In addition pages are packed together more tightly in memory so there are additional pages now available in some other modes.

The page addresses are all calculated when the mode is changed and are available for inspection with the command
LIST PAGES


MM.INFO(MAX PAGES) and MM.INFO(PPAGE ADDRESS n) can be used as before. MM.HRES and MM.VRES track the current write page

A new sub command allows you to resize pages to make them smaller than the mode default
PAGE RESIZE pageno, width, height


When writing to a resized page the new dimensions will be respected by drawing commands as in the demo program and screenshot below.

This should provide a huge benefit to anyone looking to develop a TUI type application as each screen tab could have a differently sized page allocated to it.

PAGE COPY can be used between identically resized pages but BLIT must be used between pages with different sizes

This release also fixes the INC bugs and the DATA bugs and the STRING$ feature (thanks Geoff).

I've tested the code with all the welcome tape programs and haven't found anything major other than as described above but this is a major re-write of a big part of the CMM2 internals so please report anything you find on this thread



mode 13,16 '400x300
page resize 3,200,200
page resize 2,200,200
list pages
page write 2
cls
print "Hello this is a test of the first very long string to see if it wraps. "
print "Hello this is a test of the second very long string to see if it wraps. "
print "Hello this is a test of the third very long string to see if it wraps. "
print "Hello this is a test of the fourth very long string to see if it wraps. "
print "Hello this is a test of the fifth very long string to see if it wraps. "
print "Hello this is a test of the sixth very long string to see if it wraps. "
print "Hello this is a test of the seventh very long string to see if it wraps. "
print "Apparently it works. Smiley face"
box 0,0,mm.hres,mm.vres ' mm.hres and mm.vres track the current write page
page write 0
page copy 2 to 3' can do this because they are the same size
BLIT 0,0,100,50,200,200,3' pages are different sizes so have to use BLIT
do:loop
 
twofingers
Guru

Joined: 02/06/2014
Location: Germany
Posts: 1133
Posted: 09:05pm 19 Nov 2020
Copy link to clipboard 
Print this post

Hi Peter,

sorry, I am getting strange temporary artifacts from
27-10-2020      15332  MandelbrotEXP.bas

s. picture:


Regards
Michael
 
Sasquatch

Senior Member

Joined: 08/05/2020
Location: United States
Posts: 296
Posted: 09:12pm 19 Nov 2020
Copy link to clipboard 
Print this post

Ver 6.06.00b1

It looks like there may be problems with Page XOR_PIXELS in Mode 1,16.

Try Z)oom and then +/- in MandelbrotEXP16.

The original MandelbrotEXP using Mode 1,8 seems Ok in this respect.
-Carl
 
twofingers
Guru

Joined: 02/06/2014
Location: Germany
Posts: 1133
Posted: 09:32pm 19 Nov 2020
Copy link to clipboard 
Print this post

  Sasquatch said  The original MandelbrotEXP using Mode 1,8 seems Ok in this respect.

I can't confirm that! The screenshot above is mode 1,8.

This picture is better:


Edited 2020-11-20 07:45 by twofingers
 
PeteCotton

Guru

Joined: 13/08/2020
Location: Canada
Posts: 313
Posted: 09:39pm 19 Nov 2020
Copy link to clipboard 
Print this post

Wow! Another amazing boost to the machine. I cannot thank you enough!  
 
LeoNicolas

Guru

Joined: 07/10/2020
Location: Canada
Posts: 440
Posted: 10:46pm 19 Nov 2020
Copy link to clipboard 
Print this post

Will be the 5.05 RCxx changes moved to the v5.06?
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 8570
Posted: 10:55pm 19 Nov 2020
Copy link to clipboard 
Print this post

  Quote  sorry, I am getting strange temporary artifacts from


Since I have precisely no idea what your CFunction is doing I can't possibly give any useful comment. Cfunctions are highly likely to be affected and may need re-compiling but that is not something I can advise on without source


  Quote  Will be the 5.05 RCxx changes moved to the v5.06?


RC21 was the basis for the new development
 
twofingers
Guru

Joined: 02/06/2014
Location: Germany
Posts: 1133
Posted: 11:13pm 19 Nov 2020
Copy link to clipboard 
Print this post

  matherp said  
  Quote  sorry, I am getting strange temporary artifacts from


Since I have precisely no idea what your CFunction is doing I can't possibly give any useful comment. ...

Isn't it your CSub? Maybe Carl (Sasquatch) will do the recompile.
 
PeteCotton

Guru

Joined: 13/08/2020
Location: Canada
Posts: 313
Posted: 11:20pm 19 Nov 2020
Copy link to clipboard 
Print this post

Heliblast now runs at 30 fps. Holy smoke. Awesome job!
 
LeoNicolas

Guru

Joined: 07/10/2020
Location: Canada
Posts: 440
Posted: 11:57pm 19 Nov 2020
Copy link to clipboard 
Print this post

After running my octahedron code using this firmware I can confirm that the INC command bug stills happening.
 
TassyJim

Guru

Joined: 07/08/2011
Location: Australia
Posts: 5886
Posted: 02:33am 20 Nov 2020
Copy link to clipboard 
Print this post

I agree, the INC command seems to ignore the increment. It always INC's by one

Jim
VK7JH
MMedit   MMBasic Help
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 8570
Posted: 07:56am 20 Nov 2020
Copy link to clipboard 
Print this post

  Quote  I agree, the INC command seems to ignore the increment. It always INC's by one


That teaches me for trying to use a shortform parse rather than the generic version. Will fix in the next beta

  Quote  Heliblast now runs at 30 fps.


Excellent news - that was the hoped for effect for graphics intensive applications
Edited 2020-11-20 17:57 by matherp
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 8570
Posted: 10:35am 20 Nov 2020
Copy link to clipboard 
Print this post

V5.06.00b2

http://geoffg.net/Downloads/Maximite/CMM2_Beta.zip

I really hope this finally fixes the INC command

In addition this release now supports the #DEFINE directive

#DEFINE "replacethis", "withthis"


The program can support up to 64 #define statements and both parameters must be literal quoted strings.
The pre-processor does a simple string substitution of the "replacethis" string with the "withthis" string.
Matches within quoted strings in the program are ignored.
DEFINEs are executed in reverse order of creation so a symbol can be redefined and from that point on in the program the new definition will be active.
Case is ignored in the strings in the DEFINE directive

#DEFINE "FROMSTRING","print"
#DEFINE "endstring","end"
'
FROMSTRING "Hello" 'will be converted to PRINT "Hello"
'
#DEFINE "fromstring","TEXT 100,500,"
FROMSTRING "Hello" 'will be converted to TEXT 100,100,"Hello"
'
print @(0,mm.info(Fontheight))"fromstring" 'won't be converted
print ""
'
list
ENDSTRING



 
thwill

Guru

Joined: 16/09/2019
Location: United Kingdom
Posts: 3833
Posted: 10:46am 20 Nov 2020
Copy link to clipboard 
Print this post

  matherp said  V5.06.00b2 ...


Thanks Peter.

  Quote  In addition this release now supports the #DEFINE directive


Brave man. I predict a flurry of additional enhancement directive requests now arriving, I will try to refrain.

Tom
Edited 2020-11-20 20:48 by thwill
Game*Mite, CMM2 Welcome Tape, Creaky old text adventures
 
thwill

Guru

Joined: 16/09/2019
Location: United Kingdom
Posts: 3833
Posted: 10:51am 20 Nov 2020
Copy link to clipboard 
Print this post

Actually unless I am experiencing some caching issue that zip file has the wrong contents:


Game*Mite, CMM2 Welcome Tape, Creaky old text adventures
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 8570
Posted: 11:02am 20 Nov 2020
Copy link to clipboard 
Print this post

  Quote  Actually unless I am experiencing some caching issue that zip file has the wrong contents:


Try again - working for me - clear cache if still a problem

To make Gauntlet work on V5.06.00 and still on V5.05.06 add the line shown below. Great code from Mauro a single variable change and it all works



Edited 2020-11-20 21:50 by matherp
 
panky

Guru

Joined: 02/10/2012
Location: Australia
Posts: 1094
Posted: 06:42am 22 Nov 2020
Copy link to clipboard 
Print this post

Peter,

In the lower resolution pages (such as 3, 4 5 etc), using the LIST PAGES command scrolls the upper section of the list off screen so the only way to see the result is to capture the output somehow via the console.

Is there any way to limit the output of LIST PAGES to just one screen full at a time?

Doug.
... almost all of the Maximites, the MicromMites, the MM Extremes, the ArmMites, the PicoMite and loving it!
 
thwill

Guru

Joined: 16/09/2019
Location: United Kingdom
Posts: 3833
Posted: 01:16pm 22 Nov 2020
Copy link to clipboard 
Print this post

Two new (probably old) bugs for you @matherp, is this the place to report them?

1. MM.INFO(FILESIZE f$) returns -1 if f$ is the root, IMO should return 2
> Print Mm.Info(FileSize "A:")
-1
> Print Mm.Info(FileSize "/")
-1
> Print Mm.Info(FileSize "\")
-1
> Print Mm.Info(FileSize "A:/zmim")
-2
> Print Mm.Info(FileSize "A:\zmim")
-2
> Print Mm.Info(FileSize "\zmim")
-2
> Print Mm.Info(FileSize "/zmim")
-2


2. Behaviour of CWD$() inconsistent between root directory and sub-directories
> chdir "/"
> Print Cwd$
A:/
> chdir "ZMIM"
> Print Cwd$
A:/ZMIM


Note that A: gets the trailing "/" but no other directory does.

Let a discussion of drives vs. directories begin , but I'm convinced issue #1 is a bug since -1 is the return code for does not exist.

Tom
Game*Mite, CMM2 Welcome Tape, Creaky old text adventures
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 8570
Posted: 01:22pm 22 Nov 2020
Copy link to clipboard 
Print this post

1 is what FATFS returns when you ask for the filesize of the root directory so that isn't going to change

2 has probably be built into things like Napolean Commander so that isn't going to change either
 
thwill

Guru

Joined: 16/09/2019
Location: United Kingdom
Posts: 3833
Posted: 01:27pm 22 Nov 2020
Copy link to clipboard 
Print this post

  matherp said  1 is what FATFS returns when you ask for the filesize of the root directory so that isn't going to change

2 has probably be built into things like Napolean Commander so that isn't going to change either


Oh well, guess I need to write and use some wrapper functions.

Thanks Peter.
Game*Mite, CMM2 Welcome Tape, Creaky old text adventures
 
     Page 1 of 3    
Print this page
© JAQ Software 2024