Difference between revisions of "Code:NextBasic Snippets"

From SpecNext official Wiki
Jump to: navigation, search
 
(17 intermediate revisions by 3 users not shown)
Line 2: Line 2:
 
'''NextBasic Snippets
 
'''NextBasic Snippets
 
'''
 
'''
 +
 +
A collection of short, specific, commonly used functions usable in a wide variety of software.  Snippets should be "side effect" free (no unintended consequences) and, where applicable, contain an explanation of any "Magic numbers" or obscure routines used.
  
 
To read a file of any type or size to any bank this will load myfile.bin to bank 22 (8kbs):
 
To read a file of any type or size to any bank this will load myfile.bin to bank 22 (8kbs):
Line 13: Line 15:
 
<syntaxhighlight>
 
<syntaxhighlight>
 
OPEN #4, "myfile"
 
OPEN #4, "myfile"
DIM #4 TO %a
+
DIM #4 TO a
fsize=%a
+
fsize=a
 
CLOSE #4
 
CLOSE #4
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Check if a file exists in a location without generating an error
+
Scroll screen up without prompt
 +
<syntaxhighlight>
 +
poke 23692,255: print at 20,0;"Scroll my screen"
 +
for s=1 to 20: print at 21,31;" ": next s
 +
</syntaxhighlight>
 +
 
 +
Select a file type to use by browsing the SD
 +
<syntaxhighlight>
 +
.browse -t pt3 m$
 +
If m$<>"" then .$ playpt3 m$
 +
</syntaxhighlight>
 +
 
 +
Change the font width to X pixels when printing
 +
<syntaxhighlight>
 +
10 LAYER 1,1 : CLS
 +
20 PRINT CHR$ 30+CHR$ 5  : REM 5 pixels wide
 +
30 PRINT "HELLO"
 +
</syntaxhighlight>
 +
 
 +
Get the current CORE version
 
<syntaxhighlight>
 
<syntaxhighlight>
Layer 2,0: print at 0,0; : cat file$: exist$=screen$(0,0)
+
10 DEFPROC CoreVersion()
Layer 0: If exist$<>"N" then print "File found"
+
20 %i=% REG 1: LET m=%i>>4: LET ml=%i&@00001111
 +
30 i=% REG 14: LET i= IN 9531: PRINT INK 2;"Current core :";m;".";ml;".";i
 +
40 ENDPROC
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Press space to continue with flashy border when waiting for a key
+
Get Next version running
 
<syntaxhighlight>
 
<syntaxhighlight>
Print "Press Space to continue": randomize usr 1300
+
.nextver v
 +
print "Current Next OS:";v
 +
if v<2.07 then print "Think about upgrading your distro"
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Scroll screen up without prompt
+
Capture the output from a dotcommand
 
<syntaxhighlight>
 
<syntaxhighlight>
poke 23692,255: print at 20,0;"Scroll my screen"
+
10 DIM v$(768)
for s=1 to 20: print at 21,31;" ": next s
+
20 OPEN #2, "v>v$"
 +
30 .http  :; this will send the help text to v$
 +
40 CLOSE #2
 +
50 PRINT "*";v$;"*"
 
</syntaxhighlight>
 
</syntaxhighlight>

Latest revision as of 19:04, 17 February 2024

NextBasic Snippets

A collection of short, specific, commonly used functions usable in a wide variety of software. Snippets should be "side effect" free (no unintended consequences) and, where applicable, contain an explanation of any "Magic numbers" or obscure routines used.

To read a file of any type or size to any bank this will load myfile.bin to bank 22 (8kbs):

.extract myfile.bin -mb 22

To get the filesize of a file in to var fsize:

OPEN #4, "myfile"
DIM #4 TO a
fsize=a
CLOSE #4

Scroll screen up without prompt

poke 23692,255: print at 20,0;"Scroll my screen"
for s=1 to 20: print at 21,31;" ": next s

Select a file type to use by browsing the SD

.browse -t pt3 m$
If m$<>"" then .$ playpt3 m$

Change the font width to X pixels when printing

10 LAYER 1,1 : CLS
20 PRINT CHR$ 30+CHR$ 5  : REM 5 pixels wide
30 PRINT "HELLO"

Get the current CORE version

10 DEFPROC CoreVersion()
20 %i=% REG 1: LET m=%i>>4: LET ml=%i&@00001111
30 i=% REG 14: LET i= IN 9531: PRINT INK 2;"Current core :";m;".";ml;".";i
40 ENDPROC

Get Next version running

.nextver v
print "Current Next OS:";v
if v<2.07 then print "Think about upgrading your distro"

Capture the output from a dotcommand

10 DIM v$(768)
20 OPEN #2, "v>v$"
30 .http   :; this will send the help text to v$
40 CLOSE #2
50 PRINT "*";v$;"*"