Home
JAQForum Ver 20.06
Log In or Join  
Active Topics
Local Time 13:06 02 May 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 : PicoMite VGA Edition beta releases

     Page 4 of 5    
Author Message
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 5735
Posted: 12:30pm 17 Dec 2021
Copy link to clipboard 
Print this post

That's not bad at all! I'm going to have to get one set up to play with it. Perhaps this weekend. I've been spending too much time playing with Sprint Layout. :)

Does the variables hash table speed up execution much?
Mick

Zilog Inside! nascom.info for Nascom & Gemini
Preliminary MMBasic docs & my PCB designs
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 8592
Posted: 12:46pm 17 Dec 2021
Copy link to clipboard 
Print this post

PicoMiteVGAV5.07.01b4.zip

Fixes a bug in writing to the colour screen with black text

Just for fun I added some small level of original Colour Maximite graphics compatibility like the CMM2

Available in the PRINT statement is the @ function for locating the cursor (see CMM2 manual)

OPTION LEGACY ON/OFF is a temporary option to be used in a program. It affects the following commands

COLOUR - uses colours 0-7, see original colour Maximite manual
PIXEL - see original colour Maximite manual
LINE - see original colour Maximite manual
CIRCLE - see original colour Maximite manual

To prove compatibility here is David Murray's Tetris implementation running with no changes on the PicoMite VGA edition





'Colour Maximite tetris by David Murray
*edited by Daedan Bamkin
Option LEGACY ON
'mode 5
Dim GRID(10,20)
Dim rx(4,4):Dim ry(4,4)
Dim PIECEX(4)
Dim PIECEY(4)


STARTSCREEN:
For X=0 To 9
For Y=0 To 19
GRID(X,Y)=0
Next Y,X
L=0
S=0
Colour 7,1:CLS
Print @(80,30)"Welcome to  "
Print @(45,40)"COLOUR PICOMITE TETRIS"
Print @(70,50)"By David Murray"
Print
Print @(15,90)" Please select level diff
iculty"
Print "   between 1-10[0] default being
2 "
Print "   10 being Ridiculous, Good Luck
!"
Line (181,35)-(210,78),7,B
Line (10,21)-(210,200),7,B


T2=0
Do While T2=0
 T1=Asc(Inkey$)
 If T1=48 Then T2=50  'key 0
 If T1=49 Then T2=500 'key 1
 If T1=50 Or T1=13 Then T1=50: T2=450 '
key 2 or Enter
 If T1=51 Then T2=400 'key 3
 If T1=52 Then T2=350 'key 4
 If T1=53 Then T2=300 'key 5
 If T1=54 Then T2=250 'key 6
 If T1=55 Then T2=200 'key 7
 If T1=56 Then T2=150 'key 8
 If T1=57 Then T2=100 'key 9
 If Timer>=350 Then GoSub PREVIEW:Timer
=0
Loop

CLS
SETUPSCREEN:
Print " Colour Picomite Tetris by David
Murray"
Print
Print "  CURSOR                       NE
XT"
Print "   KEYS"
Print "   MOVE"
Print
Print " UP/SPACE"
Print " to ROTATE"
Print " Z to DROP"
Print @(170,180,1) "ESC to"
Print @(170,190,1) "PAUSE/EXIT"
Print @(183,90,1) "LINES"
Print @(183,140,1) "SCORE"
Line (181,35)-(210,78),7,B
Line (68,13)-(160,215),7,B
Line (69,14)-(159,214),0,BF
Line (181,101)-(214,120),7,B
Line (182,102)-(213,119),0,BF
Line (181,151)-(214,170),7,B
Line (182,152)-(213,169),0,BF
Colour 7,0
Print @(182,106) S
Print @(182,155) T1
GoSub PREVIEW
GoSub NEWPIECE
GoSub DRAWPIECE

READKEYBOARD:
 A=Asc(Inkey$)
 If A=129 Then GoSub MOVEDOWN
 If A=130 Then GoSub MOVELEFT
 If A=131 Then GoSub MOVERIGHT
 If A=122 Or A=90 Then GoSub LEAVEPIECE
 If A=128 Or A=32 Then GoSub ROTATE
 If A=27 Then GoSub ENDSUB
 If Timer>=T2 Then GoSub MOVEDOWN:Timer
=L
 GoTo READKEYBOARD

LEAVEPIECE:
 GoSub MOVEDOWN
 GoSub DRAWPIECE
 Return
MOVERIGHT:
 GoSub ERASEPIECE
 E=0
 For P=1 To 4:If PIECEX(P)=9 Then E=1
   Next P
 If E=1 Then GoSub DRAWPIECE:Return
 For P=1 To 4
   If GRID(PIECEX(P)+1,PIECEY(P))<>0 Th
en E=1
   Next P
 If E=1 Then GoSub DRAWPIECE:Return
 For P=1 To 4:PIECEX(P)=PIECEX(P)+1:Nex
t P
 GoSub DRAWPIECE
 Return
MOVELEFT:
 GoSub ERASEPIECE
 E=0
 For P=1 To 4:If PIECEX(P)=0 Then E=1
   Next P
 If E=1 Then GoSub DRAWPIECE:Return
 For P=1 To 4
   If GRID(PIECEX(P)-1,PIECEY(P))<>0 Th
en E=1
   Next P
 If E=1 Then GoSub DRAWPIECE:Return
 For P=1 To 4:PIECEX(P)=PIECEX(P)-1:Nex
t P
 GoSub DRAWPIECE
 Return
MOVEDOWN:
 GoSub ERASEPIECE
 E=0
 For P=1 To 4:If PIECEY(P)=19 Then E=1
   Next P
 If E=1 Then GoSub DRAWPIECE:GoSub NEWP
IECE:Return
 For P=1 To 4
   If GRID(PIECEX(P),PIECEY(P)+1)<>0 Th
en E=1
   Next P
 If E=1 Then GoSub DRAWPIECE:GoSub NEWP
IECE:Return
 For P=1 To 4:PIECEY(P)=PIECEY(P)+1:Nex
t P
 GoSub DRAWPIECE
 If A=90 Or A=122 Then GoSub MOVEDOWN
 A=0
 Return

ROTATE:
 GoSub erasepiece
 For P=1 To 4
   PIECEX(P)=PIECEX(P)+RX(ROT,P)
   PIECEY(P)=PIECEY(P)+RY(ROT,P)
   Next P
 ROT=ROT+1:If ROT=5 Then ROT=1
 GoSub DRAWPIECE
 Return

CHECKGRID:
 For CY=0 To 19
   ROW=0
   For X=0 To 9
     If GRID(X,CY)<>0 Then ROW=ROW+1
     Next X
   If ROW=10 Then GoSub DROPGRID
   If CY=0 And ROW>0 Then GoSub GAMEOVE
RMAN
 Next CY
 Return

DROPGRID:
 GoSub CLEARSCREENGRID
 For X=0 To 9
   For YY= CY To 1 Step-1
     GRID(X,YY)=GRID(X,YY-1)
     Next YY,X
 L=L+1
 S=S+T1
 Print @(182,106) L
 Print @(182,155) S
 GoSub REDRAWSCREENGRID
 Return

CLEARSCREENGRID:
 Line (69,14)-(159,214),0,BF
 Return

REDRAWSCREENGRID:
 For Y=0 To 19
 For X=0 To 9
 XT=X*9:YT=Y*10
 Line (XT+70,YT+15)-(XT+77,YT+23),GRID(
X,Y),BF
 Line (XT+71,YT+16)-(XT+76,YT+16),0
 Line (XT+76,YT+16)-(XT+76,YT+22),0
 Next X,Y
 Return

DRAWPIECE:
 For P=1 To 4
 X=PIECEX(P):Y=PIECEY(P)
 GRID(X,Y)=PC
 XT=X*9:YT=Y*10
 Line (XT+70,YT+15)-(XT+77,YT+23),PC,BF
 Line (XT+71,YT+16)-(XT+76,YT+16),0
 Line (XT+76,YT+16)-(XT+76,YT+22),0
 Next P
 Return
ERASEPIECE:
 For P=1 To 4
 X=PIECEX(P):Y=PIECEY(P)
 GRID(X,Y)=0
 Line (X*9+70,Y*10+15)-(X*9+77,Y*10+23)
,0,BF
 Next P
 Return
NEWPIECE:
 GoSub CHECKGRID
 ROT=1
 PC=PP
 GoSub PREVIEW
 If PC=1 Then GoSub DEFINEPIECE1
 If PC=2 Then GoSub DEFINEPIECE2
 If PC=3 Then GoSub DEFINEPIECE3
 If PC=4 Then GoSub DEFINEPIECE4
 If PC=5 Then GoSub DEFINEPIECE5
 If PC=6 Then GoSub DEFINEPIECE6
 If PC=7 Then GoSub DEFINEPIECE7
 Return

DEFINEPIECE1:
 Rem       BLUE J PIECE8
 PIECEX(1)=5:PIECEY(1)=0
 PIECEX(2)=5:PIECEY(2)=1
 PIECEX(3)=5:PIECEY(3)=2
 PIECEX(4)=4:PIECEY(4)=2
 rx(1,1)=-1:ry(1,1)=1
 rx(1,2)=0:ry(1,2)=0
 rx(1,3)=1:ry(1,3)=-1
 rx(1,4)=2:ry(1,4)=0
 rx(2,1)=1:ry(2,1)=1
 rx(2,2)=0:ry(2,2)=0
 rx(2,3)=-1:ry(2,3)=-1
 rx(2,4)=0:ry(2,4)=-2
 rx(3,1)=1:ry(3,1)=-1
 rx(3,2)=0:ry(3,2)=0
 rx(3,3)=-1:ry(3,3)=1
 rx(3,4)=-2:ry(3,4)=0
 rx(4,1)=-1:ry(4,1)=-1
 rx(4,2)=0:ry(4,2)=0
 rx(4,3)=1:ry(4,3)=1
 rx(4,4)=0:ry(4,4)=2
 Return
DEFINEPIECE2:
 Rem       GREEN S PIECE
 PIECEX(1)=4:PIECEY(1)=0
 PIECEX(2)=4:PIECEY(2)=1
 PIECEX(3)=5:PIECEY(3)=1
 PIECEX(4)=5:PIECEY(4)=2
 rx(1,1)=-1:ry(1,1)=1
 rx(1,2)=0:ry(1,2)=0
 rx(1,3)=-1:ry(1,3)=-1
 rx(1,4)=0:ry(1,4)=-2
 rx(2,1)=1:ry(2,1)=1
 rx(2,2)=0:ry(2,2)=0
 rx(2,3)=-1:ry(2,3)=1
 rx(2,4)=-2:ry(2,4)=0
 rx(3,1)=1:ry(3,1)=-1
 rx(3,2)=0:ry(3,2)=0
 rx(3,3)=1:ry(3,3)=1
 rx(3,4)=0:ry(3,4)=2
 rx(4,1)=-1:ry(4,1)=-1
 rx(4,2)=0:ry(4,2)=0
 rx(4,3)=1:ry(4,3)=-1
 rx(4,4)=2:ry(4,4)=0
 Return
DEFINEPIECE3:
 Rem       CYAN L PIECE
 PIECEX(1)=4:PIECEY(1)=0
 PIECEX(2)=4:PIECEY(2)=1
 PIECEX(3)=4:PIECEY(3)=2
 PIECEX(4)=5:PIECEY(4)=2
 rx(1,1)=-1:ry(1,1)=1
 rx(1,2)=0:ry(1,2)=0
 rx(1,3)=1:ry(1,3)=-1
 rx(1,4)=0:ry(1,4)=-2
 rx(2,1)=1:ry(2,1)=1
 rx(2,2)=0:ry(2,2)=0
 rx(2,3)=-1:ry(2,3)=-1
 rx(2,4)=-2:ry(2,4)=0
 rx(3,1)=1:ry(3,1)=-1
 rx(3,2)=0:ry(3,2)=0
 rx(3,3)=-1:ry(3,3)=1
 rx(3,4)=0:ry(3,4)=2
 rx(4,1)=-1:ry(4,1)=-1
 rx(4,2)=0:ry(4,2)=0
 rx(4,3)=1:ry(4,3)=1
 rx(4,4)=2:ry(4,4)=0
 Return
DEFINEPIECE4:
 Rem       RED Z PIECE
 PIECEX(1)=5:PIECEY(1)=0
 PIECEX(2)=5:PIECEY(2)=1
 PIECEX(3)=4:PIECEY(3)=1
 PIECEX(4)=4:PIECEY(4)=2
 rx(1,1)=-1:ry(1,1)=1
 rx(1,2)=0:ry(1,2)=0
 rx(1,3)=1:ry(1,3)=1
 rx(1,4)=2:ry(1,4)=0
 rx(2,1)=1:ry(2,1)=-1
 rx(2,2)=0:ry(2,2)=0
 rx(2,3)=-1:ry(2,3)=-1
 rx(2,4)=-2:ry(2,4)=0
 rx(3,1)=-1:ry(3,1)=1
 rx(3,2)=0:ry(3,2)=0
 rx(3,3)=1:ry(3,3)=1
 rx(3,4)=2:ry(3,4)=0
 rx(4,1)=1:ry(4,1)=-1
 rx(4,2)=0:ry(4,2)=0
 rx(4,3)=-1:ry(4,3)=-1
 rx(4,4)=-2:ry(4,4)=0
 Return
DEFINEPIECE5:
 Rem       PURPLE T PIECE
 PIECEX(1)=5:PIECEY(1)=0
 PIECEX(2)=4:PIECEY(2)=1
 PIECEX(3)=5:PIECEY(3)=1
 PIECEX(4)=6:PIECEY(4)=1
 rx(1,1)=-1:ry(1,1)=1
 rx(1,2)=1:ry(1,2)=1
 rx(1,3)=0:ry(1,3)=0
 rx(1,4)=-1:ry(1,4)=-1
 rx(2,1)=1:ry(2,1)=1
 rx(2,2)=1:ry(2,2)=-1
 rx(2,3)=0:ry(2,3)=0
 rx(2,4)=-1:ry(2,4)=1
 rx(3,1)=1:ry(3,1)=-1
 rx(3,2)=-1:ry(3,2)=-1
 rx(3,3)=0:ry(3,3)=0
 rx(3,4)=1:ry(3,4)=1
 rx(4,1)=-1:ry(4,1)=-1
 rx(4,2)=-1:ry(4,2)=1
 rx(4,3)=0:ry(4,3)=0
 rx(4,4)=1:ry(4,4)=-1
 Return
DEFINEPIECE6:
 Rem       YELLOW O PIECE
 PIECEX(1)=4:PIECEY(1)=0
 PIECEX(2)=5:PIECEY(2)=0
 PIECEX(3)=4:PIECEY(3)=1
 PIECEX(4)=5:PIECEY(4)=1
 rx(1,1)=0:ry(1,1)=0
 rx(1,2)=0:ry(1,2)=0
 rx(1,3)=0:ry(1,3)=0
 rx(1,4)=0:ry(1,4)=0
 rx(2,1)=0:ry(2,1)=0
 rx(2,2)=0:ry(2,2)=0
 rx(2,3)=0:ry(2,3)=0
 rx(2,4)=0:ry(2,4)=0
 rx(3,1)=0:ry(3,1)=0
 rx(3,2)=0:ry(3,2)=0
 rx(3,3)=0:ry(3,3)=0
 rx(3,4)=0:ry(3,4)=0
 rx(4,1)=0:ry(4,1)=0
 rx(4,2)=0:ry(4,2)=0
 rx(4,3)=0:ry(4,3)=0
 rx(4,4)=0:ry(4,4)=0
 Return
DEFINEPIECE7:
 Rem       WHITE I PIECE
 PIECEX(1)=5:PIECEY(1)=0
 PIECEX(2)=5:PIECEY(2)=1
 PIECEX(3)=5:PIECEY(3)=2
 PIECEX(4)=5:PIECEY(4)=3
 rx(1,1)=-1:ry(1,1)=1
 rx(1,2)=0:ry(1,2)=0
 rx(1,3)=1:ry(1,3)=-1
 rx(1,4)=2:ry(1,4)=-2
 rx(2,1)=1:ry(2,1)=-1
 rx(2,2)=0:ry(2,2)=0
 rx(2,3)=-1:ry(2,3)=1
 rx(2,4)=-2:ry(2,4)=2
 rx(3,1)=-1:ry(3,1)=1
 rx(3,2)=0:ry(3,2)=0
 rx(3,3)=1:ry(3,3)=-1
 rx(3,4)=2:ry(3,4)=-2
 rx(4,1)=1:ry(4,1)=-1
 rx(4,2)=0:ry(4,2)=0
 rx(4,3)=-1:ry(4,3)=1
 rx(4,4)=-2:Ry(4,4)=2
 Return

PREVIEW:
 Line (182,36)-(209,77),0,BF
 PP=Int(Rnd(1)*7)+1
 If PP=1 Then GoSub DEFINEPIECE1
 If PP=2 Then GoSub DEFINEPIECE2
 If PP=3 Then GoSub DEFINEPIECE3
 If PP=4 Then GoSub DEFINEPIECE4
 If PP=5 Then GoSub DEFINEPIECE5
 If PP=6 Then GoSub DEFINEPIECE6
 If PP=7 Then GoSub DEFINEPIECE7
 For P=1 To 4
   X=PIECEX(P):Y=PIECEY(P)
   XT=X*9+77:YT=Y*10+22
   Line (XT+70,YT+15)-(XT+77,YT+23),PP,
BF
   Line (XT+71,YT+16)-(XT+76,YT+16),0
   Line (XT+76,YT+16)-(XT+76,YT+22),0
   Next P
 Return

GAMEOVERMAN:
 Print @(85,55,2) " GAME OVER"
 Print @(85,65,2) " ---------"
 Print @(69,75,2) " WOULD YOU LIKE"
 Print @(69,85,2) "TO PLAY ANOTHER"
 Print @(85,95,2) " GAME Y/N?"
 ENDGAME:
   E=Asc(Inkey$)
   If E=89 Or E=121 Then GoSub STARTSCR
EEN
   If E=27 Or E=78 Or E=110 Then Print
@(55,110,2) " THANKS FOR PLAYING ":End
 GoTo ENDGAME

ENDSUB:
 Print @(80,15,1) "QUITING? ARE "
 Print @(78,25,1) "YOU SURE Y/N?"
 END1:
 E=Asc(Inkey$)
 If E=89 Or E=121 Then GoSub GAMEOVERMA
N
 If E=27 Or E=78 Or E=110 Then
   Colour 0
   Print @(80,15,1) "QUITING? ARE "
   Print @(78,25,1) "YOU SURE Y/N?"
   Colour 7
   Return
 EndIf
 GoTo END1




  Quote  Does the variables hash table speed up execution much?


Program dependent but for anything with over say 20 variables it starts to make a big difference. Originally developed for the CMM2
Edited 2021-12-18 00:24 by matherp
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 5735
Posted: 02:27pm 17 Dec 2021
Copy link to clipboard 
Print this post

This is good. :)
It's sort of a Maximite version whereas the PicoMite is a Minimite version. Same module, different purpose.
Mick

Zilog Inside! nascom.info for Nascom & Gemini
Preliminary MMBasic docs & my PCB designs
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 8592
Posted: 05:35pm 17 Dec 2021
Copy link to clipboard 
Print this post

PicoMiteVGAV5.07.01b5.zip

Fixes a bug that stopped a program with OPTION BASE from running a second time without reset

Fixes a bug that the LIST command to linewrap too early

New Functionality:

FLASH LIST n [,all]

allows you to list the file in a flash slot exactly like the main program

FLASH EXECUTE n

run a program direct from the flash slot without changing the main program
 
twofingers
Guru

Joined: 02/06/2014
Location: Germany
Posts: 1133
Posted: 07:09pm 17 Dec 2021
Copy link to clipboard 
Print this post

Thanks Peter!
  matherp said  ...

FLASH EXECUTE n

run a program direct from the flash slot without changing the main program


With/without clearing the variables?
Similar to a chain command?

Regards
Michael
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 8592
Posted: 07:10pm 17 Dec 2021
Copy link to clipboard 
Print this post

Similar to run command i.e. variables are cleared

PicoMiteVGAV5.07.01b6.zip

Fixes a bug introduced when increasing the maximum number of files in that can be displayed by the FILES commandPicoMiteVGAV5.07.01b5
Edited 2021-12-18 05:18 by matherp
 
twofingers
Guru

Joined: 02/06/2014
Location: Germany
Posts: 1133
Posted: 07:20pm 17 Dec 2021
Copy link to clipboard 
Print this post

  matherp said  Similar to run command i.e. variables are cleared

THX!
 
phil99

Guru

Joined: 11/02/2018
Location: Australia
Posts: 1789
Posted: 09:51pm 17 Dec 2021
Copy link to clipboard 
Print this post

An alternative 2 bit green mixer. Might make PCB layout a bit easier.
The calculated values are for linear spacing of the steps but that isn't overly important.
Choose what looks best to you, as long as the parallel combination is about 204 ohm.
This is less than the 220 ohm on red and blue because of the diodes.




Edited 2021-12-18 09:33 by phil99
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 8592
Posted: 09:13am 18 Dec 2021
Copy link to clipboard 
Print this post

Phil99's circuits miss the critical issue. It is not the balance of half green to full green that matters. The key one is the balance of RED/BLUE with FULL GREEN otherwise there will be a colour cast to white text and the eye is VERY sensitive to this

My component values were what gave me a clean white image but for more certainty replace the 150ohm resistor in my circuit with a 220ohm trimmer

The values in the R2R DAC don't matter as much as long as you can tune the white balance. The advantage of an R2R DAC is that it is by definition correct and has a defined impedance (always equal to R regardless of the number of bits)
 
phil99

Guru

Joined: 11/02/2018
Location: Australia
Posts: 1789
Posted: 12:09pm 18 Dec 2021
Copy link to clipboard 
Print this post

"there will be a colour cast to white text and the eye is VERY sensitive to this"
Yes, good point so scrub the bottom one but the top one with 2 trimmers making up the odd resistor values could get that balance.
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 3550
Posted: 01:06pm 18 Dec 2021
Copy link to clipboard 
Print this post

I have been kicked out of the forum again while writing a long essay about the mm basic retro style computers.

I will not retype this again, only put down the conclusion.

The PicoMite VGA is is nice proof of concept, but it brings nothin new to the CMM1, that exists for 10 years, appart from the newer basic.
It feels a bit cheaper, but if you assemble it to a computer with pcb connectors real time clock etc.. you are getting close to 55 dollar I payed for the CMM1, in a housing.

II fail to see the need for this new platform.
Similar the VGAmite (rip)

Maybe porting the new mm basic to the CMM1 is possible?
Edited 2021-12-18 23:10 by Volhout
PicomiteVGA PETSCII ROBOTS
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 8592
Posted: 01:29pm 18 Dec 2021
Copy link to clipboard 
Print this post

PIC32 for CMM1 from Farnell

Back order today stock arriving week commencing 24/10/22

Notify me when back in stock
GBP12.540 ( inc VAT )


RP2040
Faster
More memory
Standard VGA sizes with square pixels
Modern MMBasic (no-one has the inclination to Update CMM1 firmware - big job as IDE has changed)
Easier to flash firmware

etc...
 
flasherror
Senior Member

Joined: 07/01/2019
Location: United States
Posts: 159
Posted: 02:12pm 18 Dec 2021
Copy link to clipboard 
Print this post

  Volhout said  
The PicoMite VGA is is nice proof of concept, but it brings nothin new to the CMM1, that exists for 10 years, appart from the newer basic.
It feels a bit cheaper, but if you assemble it to a computer with pcb connectors real time clock etc.. you are getting close to 55 dollar I payed for the CMM1, in a housing.


I think the newer basic is important (go back to using Duinomite MMBASIC v4.5 and you start missing some things).

But, the more important issues are availability and long term supply. RaspPi will make millions of these things, and long term availability will be good.

Not to mention easy to solder/asssemble as no SMD if you solder headers to it.

And, with regular PicoMite firmware (not VGA) you can make a nice little embedded controller. I believe Picomite VGA is faster than the CMM1 (someone correct me if I'm wrong).

However, I feel MMBasic can be improved in some ways:
Built in ESP8266 AT command firmware support to make sending/receiving data super easy. In the same way that the advanced GUI features make it easy to display a button and MMBASIC handles the dirty work behind the scenes (transparent to the programmer) is the same way data communication could be handled.
CRC generation faster than basic
The ability to "pause" tick interrupts created with SETTICK and then being able to resume them without resetting/restarting the tick count.

I think the right way to view PicoMite is another iteration of the same low-cost computer concept. Chips get obsolete/expensive and are gradually phased out or lose popularity but the concept of a low cost computer that uses whatever the best price/features chip or module will always be around. Nothing wrong with periodically refreshing the concept to take advantage of the current cheap/popular chip!
Edited 2021-12-19 00:20 by flasherror
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 8592
Posted: 02:30pm 18 Dec 2021
Copy link to clipboard 
Print this post

  Quote  The ability to "pause" tick interrupts created with SETTICK and then being able to resume them without resetting/restarting the tick count.


Please explain further

  Quote  Built in ESP8266 AT command firmware support to make sending/receiving data super easy.


How about you write me an outline spec? I've often thought about this but can't see an obvious syntax and structure
 
CaptainBoing

Guru

Joined: 07/09/2016
Location: United Kingdom
Posts: 1985
Posted: 02:33pm 18 Dec 2021
Copy link to clipboard 
Print this post

  flasherror said  
CRC generation faster than basic

which flavour of CRC? there are a few and if you try to cover all bases you'll miss someone's favourite.

  flasherror said  
The ability to "pause" tick interrupts created with SETTICK and then being able to resume them without resetting/restarting the tick count.

I wrote a more flexible tick handler and the above was one reason why.

I prefer to poll for ticks and not block my code with an ISR. this pack  gives you up to 63 timers and you can run them at whatever speed you like. When a tick occurs, all it does is set a flag - you can then take action or not when you see the flag. You can also Dis/Enable the timers across the board, stop any timer, see how much time is left on a timer... As written the timers tick every second but you could drop that down to whatever works for you and is practical. I have things that run at ten ticks per second with no problem. Very easy to configure one-shot and multi-shot, no subs required.

might help
 
JohnS
Guru

Joined: 18/11/2011
Location: United Kingdom
Posts: 3660
Posted: 02:49pm 18 Dec 2021
Copy link to clipboard 
Print this post

Also, RP2040 is just the first in its family.

I expect more, with larger ROM & RAM :)

John
 
flasherror
Senior Member

Joined: 07/01/2019
Location: United States
Posts: 159
Posted: 03:16pm 18 Dec 2021
Copy link to clipboard 
Print this post

  matherp said  
  Quote  The ability to "pause" tick interrupts created with SETTICK and then being able to resume them without resetting/restarting the tick count.


Please explain further

You can setup/start a timer with SETTICK 4,MY_ISR,2
But, if for some reason you wanted to disable (pause) a timer WITHOUT LOSING THE CURRENT COUNT with a view towards restarting it you can't do this. While you can disable the timer with SETTICK 0,0,2 the next time you do SETTICK 4,MY_ISR,2 it basically reinitializes the timer so that it starts count from 0. There is no command to "pause" a timer interrupt so that it can resume with the count value at the time it was paused.

  matherp said  
  Quote  Built in ESP8266 AT command firmware support to make sending/receiving data super easy.


How about you write me an outline spec? I've often thought about this but can't see an obvious syntax and structure


I'll have to spend some time researching/thinking about this. I've read others talking about Annex Basic, not sure how it handles data transmission/reception.
Edited 2021-12-19 01:18 by flasherror
 
flasherror
Senior Member

Joined: 07/01/2019
Location: United States
Posts: 159
Posted: 03:39pm 18 Dec 2021
Copy link to clipboard 
Print this post

  CaptainBoing said  
  flasherror said  
CRC generation faster than basic

which flavour of CRC? there are a few and if you try to cover all bases you'll miss someone's favourite.


Maybe support a few popular ones? Have initialization to specify?

  CaptainBoing said  
I wrote a more flexible tick handler and the above was one reason why.

I prefer to poll for ticks and not block my code with an ISR. this pack  gives you up to 63 timers and you can run them at whatever speed you like. When a tick occurs, all it does is set a flag - you can then take action or not when you see the flag. You can also Dis/Enable the timers across the board, stop any timer, see how much time is left on a timer... As written the timers tick every second but you could drop that down to whatever works for you and is practical. I have things that run at ten ticks per second with no problem. Very easy to configure one-shot and multi-shot, no subs required.

might help


Thanks, I will check this out.
 
flasherror
Senior Member

Joined: 07/01/2019
Location: United States
Posts: 159
Posted: 03:46pm 18 Dec 2021
Copy link to clipboard 
Print this post

  JohnS said  Also, RP2040 is just the first in its family.

I expect more, with larger ROM & RAM :)

John


I suspect they may introduce a version with Wifi/Bluetooth at some point.

One issue currently is that there is effectively no code protection as the Flash is off-chip (same as ESP8266, which probably was the reason for the ESP8285 - to better secure code as the Flash is on-chip).
Edited 2021-12-19 01:47 by flasherror
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 5735
Posted: 05:14pm 18 Dec 2021
Copy link to clipboard 
Print this post

I suspect that, in the case of the RP2040, you have to start somewhere. RPi had no idea if their chip would find any sort of acceptance - it's a big risk. Keeping price very low and not depending on anyone else's patents for such things as wi-fi, bluetooth and flash encryption was probably very important.
Mick

Zilog Inside! nascom.info for Nascom & Gemini
Preliminary MMBasic docs & my PCB designs
 
     Page 4 of 5    
Print this page
© JAQ Software 2024