626 lines
23 KiB
Plaintext
626 lines
23 KiB
Plaintext
{{
|
|
┌──────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
|
│ Autor: Ingo Kripahle │
|
|
│ Copyright (c) 2010 Ingo Kripahle │
|
|
│ See end of file for terms of use. │
|
|
│ Die Nutzungsbedingungen befinden sich am Ende der Datei │
|
|
└──────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
|
|
|
Informationen : hive-project.de
|
|
Kontakt : drohne235@googlemail.com
|
|
System : TriOS
|
|
Name : StarTracker
|
|
Chip : Regnatix
|
|
Typ : Programm
|
|
Version : 1
|
|
Subversion : 1
|
|
Funktion : HSS-Player mit LCARS-Oberfläche, Wiedergabe von allen Moduldateien im gleichen Verzeichnis
|
|
Installation : Folgende Dateien müssen in das Verzeichnis mit den HSS-Dateien kopiert werden:
|
|
|
|
stplay.bin Regnatix-Code, Startdatei
|
|
stint.bel Bellatrix-Code des Players
|
|
|
|
Komponenten : Bellatrix-Code basiert auf einer Idee und dem Testprogramm "lcars_xga_test" von Rayman.
|
|
Infos zum Programm von Rayman:
|
|
http://forums.parallax.com/forums/default.aspx?f=25&m=257204&p=1&ord=a
|
|
http://rayslogic.com/
|
|
Assimilation zum Multiprop-Code: drohne235
|
|
|
|
Regnatix-Code stplay.spin Regnatix-Code
|
|
Bellatrix-Code stint.spin Bellatrix-Code
|
|
Bellatrix-Code stkeyb.spin
|
|
Bellatrix-Code stvga.spin
|
|
|
|
COG's : 1 Cog
|
|
Logbuch :
|
|
|
|
31.01.2009 - aus play.spin eine erste lauffähige version mit startreck-interface erstellt
|
|
01.02.2009 - tastenfunktionen
|
|
08.08.2009 - anpassung an module welche endflag setzen (player bieb dabei hängen)
|
|
- ursache: sync wartet obwohl player gestopt hat
|
|
01.12.2011 - anpassung an trios
|
|
- jetzt verwendung einer std.-ios
|
|
- funktioniert jetzt auch im unterverzeichnis
|
|
- kosmetische änderungen
|
|
|
|
Kommandoliste :
|
|
Notizen :
|
|
|
|
}}
|
|
|
|
OBJ
|
|
ios: "reg-ios"
|
|
|
|
CON
|
|
|
|
_CLKMODE = XTAL1 + PLL16X
|
|
_XINFREQ = 5_000_000
|
|
|
|
OS_TIBLEN = 64 'größe des inputbuffers
|
|
|
|
'definition der interfaceelemente
|
|
|
|
title = 0
|
|
footer = 1
|
|
button1 = 2
|
|
button2 = 3
|
|
button3 = 4
|
|
button4 = 5
|
|
button5 = 6
|
|
button6 = 7
|
|
button7 = 8
|
|
button8 = 9
|
|
button9 = 10
|
|
corner_topleft = 11
|
|
corner_topright = 12
|
|
corner_bottomLeft = 13
|
|
endcap_med_left = 14
|
|
endcap_med_right = 15
|
|
endcap_small_left = 16
|
|
endcap_small_right = 17
|
|
|
|
CON 'BELLATRIX-FUNKTIONEN --------------------------------------------------------------------------
|
|
|
|
' einzeichen-steuercodes
|
|
|
|
#$0, BEL_CMD 'esc-code für zweizeichen-steuersequenzen
|
|
BEL_CLS
|
|
BEL_HOME
|
|
BEL_POS1
|
|
BEL_CURON
|
|
BEL_CUROFF
|
|
BEL_SCRLUP
|
|
BEL_SCRLDOWN
|
|
BEL_BS
|
|
BEL_TAB
|
|
|
|
' zweizeichen-steuersequenzen
|
|
' [BEL_CMD][...]
|
|
|
|
#$1, BEL_KEY_STAT
|
|
BEL_KEY_CODE
|
|
BEL_SCRCMD 'esc-code für dreizeichen-sequenzen
|
|
BEL_KEY_SPEC
|
|
BEL_SCR_LOGO
|
|
BEL_SCR_CHAR
|
|
BEL_BLKTRANS
|
|
|
|
#$57, BMGR_LOAD
|
|
BMGR_WSCR
|
|
BMGR_DSCR
|
|
BMGR_GETCOLOR
|
|
BMGR_SETCOLOR
|
|
BMGR_GETRESX
|
|
BMGR_GETRESY
|
|
BMGR_GETCOLS
|
|
BMGR_GETROWS
|
|
BMGR_GETCOGS
|
|
BMGR_GETSPEC
|
|
BMGR_GETVER
|
|
BMGR_REBOOT
|
|
|
|
' dreizeichen-steuersequenzen
|
|
' [BEL_CMD][BEL_SCRCMD][...]
|
|
|
|
#$1, BEL_SETCUR
|
|
BEL_SETX
|
|
BEL_SETY
|
|
BEL_GETX
|
|
BEL_GETY
|
|
BEL_SETCOL
|
|
BEL_SLINE
|
|
BEL_ELINE
|
|
BEL_SINIT
|
|
BEL_TABSET
|
|
|
|
VAR
|
|
|
|
long lcnt 'zeiger für dateiliste
|
|
byte fn[12] 'puffer für dateinamen
|
|
byte gcol 'grundfarbe
|
|
byte cmdstat 'aktuelles kommandobutton
|
|
byte cmdreload
|
|
byte cmdnext
|
|
byte cmdps
|
|
|
|
PUB main | wflag
|
|
|
|
wflag := ios.start 'ios initialisieren
|
|
|
|
ios.belload(string("stint.bel")) 'grafiktreiber laden
|
|
ios.admsetsyssnd(0)
|
|
|
|
scr_sline(0)
|
|
|
|
frame1 'interface zeichnen
|
|
cmdstat := 0
|
|
cmdps := 0
|
|
cmdreload := 0
|
|
cmdnext := 0
|
|
command
|
|
repeat
|
|
playint 'playliste abspielen
|
|
repeat
|
|
ios.hss_stop
|
|
if ios.keystat > 0
|
|
command
|
|
while cmdps 'warten solange stopmodus
|
|
|
|
PUB playint | fnadr,len,fcnt,i 'alle songs auf der sd-card abspielen
|
|
|
|
ios.curhome
|
|
ios.sddir 'kommando: verzeichnis öffnen
|
|
startlist 'zum listenanfang
|
|
fcnt := 0 'zähler für dateianzahl
|
|
repeat while (fnadr := ios.sdnext) 'dateiliste einlesen
|
|
if str_find(fnadr,@ext1)
|
|
printmcnt(++fcnt)
|
|
wrfn(fnadr)
|
|
startlist 'zum listenanfang
|
|
if fcnt
|
|
repeat i from 0 to fcnt-1 'dateiliste abspielen
|
|
rdfn(@fn)
|
|
playsong(@fn)
|
|
if cmdnext==0 AND cmdps==0 AND cmdreload==0 'ausblenden nur bei playliste
|
|
fadeout
|
|
else
|
|
cmdnext := 0
|
|
ios.hss_stop
|
|
if cmdreload
|
|
cmdreload := 0
|
|
quit
|
|
if cmdps
|
|
quit
|
|
|
|
PUB str_find(string1, string2) : buffer | counter 'sys: string suchen
|
|
|
|
repeat strsize(string1--)
|
|
if(byte[++string1] == byte[string2])
|
|
repeat counter from 0 to (strsize(string2) - 1)
|
|
if(byte[string1][counter] <> byte[string2][counter])
|
|
buffer~~
|
|
ifnot(buffer~)
|
|
return string1
|
|
|
|
PUB playsong(stradr) | n,i,note,okt,vol,fx,ins,rep,cc1,cc2,cc3,cc4,eflag 'spielt einen song ab
|
|
printsong(stradr)
|
|
ios.hss_stop
|
|
ios.hss_playfile(stradr)
|
|
cc1 := 0
|
|
cc2 := 0
|
|
cc3 := 0
|
|
cc4 := 0
|
|
repeat
|
|
sync 'synchronisation mit beat
|
|
rep := ios.hss_intreg(ios#iRepeat) 'loopzähler auslesen
|
|
eflag := ios.hss_intreg(ios#iEndFlag) 'endflag abfragen
|
|
printrep(rep) 'zähler auf screen aktualisieren
|
|
if ios.keystat > 0 'tasteneingabe?
|
|
command
|
|
repeat i from 1 to 4 'schleife für die vier kanäle
|
|
|
|
note := ios.hss_intreg(i*5+ios#iNote)
|
|
okt := ios.hss_intreg(i*5+ios#iOktave)
|
|
vol := ios.hss_intreg(i*5+ios#iVolume)
|
|
fx := ios.hss_intreg(i*5+ios#iEffekt)
|
|
ins := ios.hss_intreg(i*5+ios#iInstrument)
|
|
printchan(33,2+i,note,okt,vol,fx,ins)
|
|
|
|
'----------------------------------------
|
|
if note > 0 'bei note bargraph triggern
|
|
case i
|
|
1: cc1 := 1
|
|
2: cc2 := 1
|
|
3: cc3 := 1
|
|
4: cc4 := 1
|
|
'----------------------------------------
|
|
case i 'numerischen pegelwert ausgeben
|
|
1: ios.printhex(cc1,2)
|
|
2: ios.printhex(cc2,2)
|
|
3: ios.printhex(cc3,2)
|
|
4: ios.printhex(cc4,2)
|
|
if rep == 3
|
|
cc1 := 10
|
|
cc2 := 10
|
|
cc3 := 10
|
|
cc4 := 10
|
|
bar(8,5 ,button1,0,cc1) 'bargraphen zeichen
|
|
bar(8,8 ,button2,1,cc2)
|
|
bar(8,11,button3,2,cc3)
|
|
bar(8,14,button4,3,cc4)
|
|
if cc1 < 10 'pegel absenken
|
|
cc1++
|
|
if cc2 < 10
|
|
cc2++
|
|
if cc3 < 10
|
|
cc3++
|
|
if cc4 < 10
|
|
cc4++
|
|
until rep == 3 OR cmdnext OR cmdreload OR cmdps OR eflag == 1 'drei loops, endflag oder kommandos brechen ab
|
|
|
|
PUB command | k 'tastatur abfragen
|
|
k := ios.key
|
|
case k
|
|
4: if cmdstat > 0 'pfeil hoch
|
|
cmdstat--
|
|
else
|
|
cmdstat := 3
|
|
5: if cmdstat < 3 'pfeil runter
|
|
cmdstat++
|
|
else
|
|
cmdstat := 0
|
|
13: case cmdstat 'eingabetaste
|
|
0: if cmdps == 1
|
|
cmdps := 0
|
|
else
|
|
cmdps := 1
|
|
1: cmdreload := 1
|
|
2: cmdnext := 1
|
|
3: ios.printcls
|
|
ios.hss_stop 'hss-player stoppen
|
|
ios.ram_wrbyte(ios#sysmod,0,ios#SIFLAG)'screeninit für cli aktivieren
|
|
ios.admsetsyssnd(1) 'systemklänge wieder anschalten
|
|
ios.sddmact(ios#DM_ROOT) 'suche in root
|
|
ios.belreset 'systemgrafiktreiber laden
|
|
ios.stop 'programm beenden
|
|
|
|
case cmdstat 'led-buttons neu zeichen
|
|
0: button(8,22,13,button6,1,0,0)
|
|
button(8,25,13,button7,2,0,0)
|
|
button(8,28,13,button8,2,0,0)
|
|
button(8,31,13,button9,2,0,0)
|
|
1: button(8,22,13,button6,2,0,0)
|
|
button(8,25,13,button7,1,0,0)
|
|
button(8,28,13,button8,2,0,0)
|
|
button(8,31,13,button9,2,0,0)
|
|
2: button(8,22,13,button6,2,0,0)
|
|
button(8,25,13,button7,2,0,0)
|
|
button(8,28,13,button8,1,0,0)
|
|
button(8,31,13,button9,2,0,0)
|
|
3: button(8,22,13,button6,2,0,0)
|
|
button(8,25,13,button7,2,0,0)
|
|
button(8,28,13,button8,2,0,0)
|
|
button(8,31,13,button9,1,0,0)
|
|
|
|
PUB sync 'synchronisation mit beat
|
|
repeat
|
|
until ios.hss_intreg(ios#iRowFlag) == 0 or ios.hss_intreg(ios#iEndFlag) == 1
|
|
repeat
|
|
until ios.hss_intreg(ios#iRowFlag) == 1 or ios.hss_intreg(ios#iEndFlag) == 1
|
|
|
|
PUB fadeout | i 'song langsam ausblenden
|
|
repeat i from 0 to 15
|
|
ios.hss_vol(15 - i)
|
|
if ios.keystat > 0
|
|
command
|
|
waitcnt(cnt + 60_000_000)
|
|
waitcnt(cnt + 30_000_000)
|
|
|
|
PUB wrfn(stradr) | len,i 'kopiert dateinamen bei lcnt in eram
|
|
len := strsize(stradr)
|
|
repeat i from 0 to len-1
|
|
ios.ram_wrbyte(ios#usrmod,byte[stradr][i],lcnt++)
|
|
ios.ram_wrbyte(ios#usrmod,0,lcnt++)
|
|
|
|
PUB rdfn(stradr) | i,n 'liest dateinamen bei lcnt aus eram, lcnt wird dabei erhöht
|
|
i := 0
|
|
repeat
|
|
n := ios.ram_rdbyte(ios#usrmod,lcnt++)
|
|
byte[stradr][i++] := n
|
|
while n <> 0
|
|
|
|
PUB startlist 'zeiger auf listenanfang (dateinamen)
|
|
lcnt := 0
|
|
|
|
PUB printnote(n) 'nummer --> notenzeichen
|
|
'C1,C#1,D1,D#1,E1,F1,F#1,G1,G#1,A1,A#1,H1
|
|
case n
|
|
0: ios.printq(string("▶ "))
|
|
1: ios.printq(string("C "))
|
|
2: ios.printq(string("C• "))
|
|
3: ios.printq(string("D "))
|
|
4: ios.printq(string("D• "))
|
|
5: ios.printq(string("E "))
|
|
6: ios.printq(string("F "))
|
|
7: ios.printq(string("F• "))
|
|
8: ios.printq(string("G "))
|
|
9: ios.printq(string("G• "))
|
|
10: ios.printq(string("A "))
|
|
11: ios.printq(string("A• "))
|
|
12: ios.printq(string("H "))
|
|
|
|
PUB printmcnt(n) 'ausgabe der anzahl
|
|
printat(25,13,0,string("Anzahl Dateien : "))
|
|
ios.printdec(n)
|
|
|
|
PUB printsong(stradr) 'ausgabe des songnamens
|
|
printat(25,14,0, string("PlaySong : "))
|
|
printat(42,14,0,string(" "))
|
|
printat(42,14,0,stradr)
|
|
dtext(button5,string("____________________"))
|
|
dtext(button5,stradr)
|
|
|
|
PUB printrep(rep) 'ausgabe der loops
|
|
printat(25,15,0,string("Repeat : "))
|
|
printatdec(42,15,0,rep)
|
|
|
|
PUB printeflag(eflag) 'ausgabe EndFlag
|
|
printat(25,16,0,string("EndFlag : "))
|
|
printatdec(42,16,0,eflag)
|
|
|
|
{
|
|
PUB printdeb(deb) 'ausgabe debug-marke
|
|
printat(25,17,0,string("Mark : "))
|
|
printatdec(42,17,0,deb)
|
|
}
|
|
|
|
PUB at(x,y,color) 'cursorposition und farbe setzen
|
|
ios.cursetx(x)
|
|
ios.cursety(y)
|
|
ios.setcolor(color)
|
|
|
|
PUB printat(x,y,color,strptr) 'string bei position mit farbe ausgeben
|
|
at(x,y,color)
|
|
ios.print(strptr)
|
|
|
|
PUB printatdec(x,y,color,wert) 'zahl bei position mit farbe ausgeben
|
|
ios.cursetx(x)
|
|
ios.cursety(y)
|
|
ios.setcolor(color)
|
|
ios.printdec(wert)
|
|
|
|
PUB frame1 | i,sline 'hauptframe zeichnen
|
|
ios.curoff
|
|
ios.printcls
|
|
gcol := 0
|
|
sline := 24
|
|
' 64 x 48 - 32,24
|
|
|
|
dtext(title,string("STARTRACKER ",95," LOADING ...")) 'text in button rendern
|
|
top(8,sline) 'initiale ladezeile zeichnen
|
|
ton1
|
|
|
|
dtext(footer,string("DROHNE235 ",95," 2009 ")) 'restliche buttons rendern
|
|
dtext(button1,string("ENGINE A "))
|
|
dtext(button2,string("ENGINE B "))
|
|
dtext(button3,string("ENGINE C "))
|
|
dtext(button4,string("ENGINE D "))
|
|
dtext(button5,string(" DATEI "))
|
|
dtext(button6,string("PLAY ",95," STOP"))
|
|
dtext(button7,string("RELOAD "))
|
|
dtext(button8,string("NEXT SONG "))
|
|
dtext(button9,string("QUIT "))
|
|
|
|
|
|
repeat (sline / 2) - 1 'ladezeile nach oben verschieben
|
|
ios.scrollup
|
|
waitcnt(cnt + 1_000_000)
|
|
|
|
top(8,2) 'kopfzeile zeichnen
|
|
ton1
|
|
dtext(title,string("STARTRACKER ",95," HIVE-PROJEKT"))
|
|
|
|
repeat i from 0 to 10 'pegel zeichnen
|
|
'x,y,nButton,color,pegel
|
|
bar(8,5 ,button1,0,i)
|
|
bar(8,8 ,button2,1,i)
|
|
bar(8,11,button3,2,i)
|
|
bar(8,14,button4,3,i)
|
|
ios.sfx_fire($f1,0)
|
|
waitcnt(cnt + 4_000_000)
|
|
|
|
log2(24,5)
|
|
|
|
'x,y,len,nButton,col1,col2,col3
|
|
'orange=0,blue=1,past=2,purple=3,weiß=4,magenta=5
|
|
button(8,22,13,button6,2,0,0)
|
|
button(8,25,13,button7,2,0,0)
|
|
button(8,28,13,button8,2,0,0)
|
|
button(8,31,13,button9,2,0,0)
|
|
|
|
info(25,22,15,button5,0,1)
|
|
|
|
bottom(8,36)
|
|
|
|
PUB info(x,y,len,nButton,col1,col2) 'infobereich zeichnen
|
|
bmap(endcap_med_left,x,y,1,2,col1)
|
|
box(x+1,y,2,2,col1,false,false,false)
|
|
box(x+13,y,len-13,2,col1,false,false,false)
|
|
bmap(nButton,x+4,y,8,2,col2)
|
|
bmap(endcap_med_right,x+len,y,1,2,col1)
|
|
|
|
PUB log1(x,y) 'einen vollen logbereich zeichnen
|
|
'left,top,width,height,clr,bBottomBreak,bRightBreak,bTrimRight
|
|
'top
|
|
bmap(corner_topleft,x,y,6,2,1)
|
|
box(x+6,y,8,1,1,false,true,false)
|
|
box(x+14,y,5,1,2,false,true,false)
|
|
box(x+19,y,11,1,0,false,true,false)
|
|
'middle
|
|
box(x,y+2,4,1,1,true,false,false)
|
|
box(x,y+3,4,4,3,true,false,false)
|
|
box(x,y+7,4,2,0,true,false,false)
|
|
box(x,y+9,4,5,2,true,false,false)
|
|
'box(x,y+4,4,1,1,false,false,false)
|
|
'bottom
|
|
bmap(corner_bottomleft,x,y+14,6,2,1)
|
|
box(x+6,y+15,3,1,1,false,true,false)
|
|
box(x+9,y+15,12,1,0,false,true,false)
|
|
box(x+21,y+15,4,1,2,false,true,false)
|
|
box(x+25,y+15,5,1,1,false,true,false)
|
|
|
|
PUB log2(x,y) 'einen halben logbereich zeichnen
|
|
'left,top,width,height,clr,bBottomBreak,bRightBreak,bTrimRight
|
|
'mitte
|
|
box(x,y,4,1,1,true,false,false)
|
|
box(x,y+1,4,4,3,true,false,false)
|
|
box(x,y+5,4,2,0,true,false,false)
|
|
box(x,y+7,4,5,2,true,false,false)
|
|
'box(x,y+4,4,1,1,false,false,false)
|
|
'unten
|
|
bmap(corner_bottomleft,x,y+12,6,2,1)
|
|
box(x+6,y+13,3,1,1,false,true,false)
|
|
box(x+9,y+13,12,1,0,false,true,false)
|
|
box(x+21,y+13,4,1,2,false,true,false)
|
|
box(x+25,y+13,5,1,1,false,true,false)
|
|
|
|
PUB button(x,y,len,nButton,col1,col2,col3) 'zeichnet schaltfläche
|
|
box(x,y,1,2,col1,false,false,false)
|
|
box(x+2,y,len-2,2,col2,false,false,false)
|
|
bmap(nButton,x+2,y,8,2,col2)
|
|
bmap(endcap_med_right,x+len,y,1,2,col2)
|
|
|
|
PUB top(x,y) 'zeichnet kopfzeile
|
|
bmap(title,x+15,y,21,2,gcol)
|
|
box(x+2,y,12,2,2,false,false,false)
|
|
box(x+34,y,12,2,2,false,false,false)
|
|
bmap(endcap_med_left,x,y,1,2,1)
|
|
bmap(endcap_med_right,x+47,y,1,2,1)
|
|
|
|
PUB bottom(x,y) 'zeichnet kopfzeile
|
|
bmap(footer,x+2,y,15,2,gcol)
|
|
box(x+14,y,32,2,2,false,false,false)
|
|
bmap(endcap_med_left,x,y,1,2,1)
|
|
bmap(endcap_med_right,x+47,y,1,2,1)
|
|
|
|
PUB bar(x,y,nButton,color,pegel) 'zeichnet einen bargraf
|
|
bmap(endcap_med_left,x,y,1,2,color)
|
|
bmap(nButton,x+2,y,pegel,2,gcol)
|
|
box(x+2+pegel,y,x+4-pegel,2,color,false,false,false)
|
|
|
|
PUB ton1 'ultimativerstartrecksound
|
|
repeat 4
|
|
ios.sfx_fire($f1,0)
|
|
waitcnt(cnt + 4_000_000)
|
|
|
|
CON 'INTERFACEROUTINEN
|
|
|
|
PUB bmap(nBitmap,xPos,yPos,xSize,ySize,clr) 'screen: 1bit-bitmap zeichnen
|
|
{{ nBitmap:
|
|
0: title
|
|
1: footer
|
|
2: button1
|
|
3: button2
|
|
4: button3
|
|
5: button4
|
|
6: button5
|
|
7: corner_topleft
|
|
8: corner_topright
|
|
9: corner_bottomLeft
|
|
10: endcap_med_left
|
|
11: endcap_med_right
|
|
12: endcap_small_left
|
|
13: endcap_small_right
|
|
}}
|
|
|
|
ios.bus_putchar2(0)
|
|
ios.bus_putchar2(10)
|
|
ios.bus_putchar2(nBitmap)
|
|
ios.bus_putchar2(xPos)
|
|
ios.bus_putchar2(yPos)
|
|
ios.bus_putchar2(xSize)
|
|
ios.bus_putchar2(ySize)
|
|
ios.bus_putchar2(clr)
|
|
|
|
PUB box(pleft,ptop,pwidth,pheight,pclr,bBottomBreak,bRightBreak,bTrimRight) 'screen: farbige box zeichnen
|
|
'blue=1
|
|
'purple=3
|
|
'orange=0
|
|
'red=2
|
|
|
|
ios.bus_putchar2(0)
|
|
ios.bus_putchar2(11)
|
|
ios.bus_putchar2(pleft)
|
|
ios.bus_putchar2(ptop)
|
|
ios.bus_putchar2(pwidth)
|
|
ios.bus_putchar2(pheight)
|
|
ios.bus_putchar2(pclr)
|
|
ios.bus_putchar2(bBottomBreak)
|
|
ios.bus_putchar2(bRightBreak)
|
|
ios.bus_putchar2(bTrimRight)
|
|
|
|
|
|
PUB dtext(nButton,stradr) | nLen 'screen: text in button zeichnen
|
|
{{Nur Großbuchstaben!}}
|
|
nLen := strsize(stradr)
|
|
ios.bus_putchar2(0)
|
|
ios.bus_putchar2(12)
|
|
ios.bus_putchar2(nButton)
|
|
ios.bus_putchar2(nLen)
|
|
repeat nLen
|
|
ios.bus_putchar2(byte[stradr++])
|
|
|
|
PRI printchan(x,y,note,okt,vol,fx,ins)
|
|
|
|
ios.bus_putchar2(0)
|
|
ios.bus_putchar2(13)
|
|
ios.bus_putchar2(x)
|
|
ios.bus_putchar2(y)
|
|
ios.bus_putchar2(note)
|
|
ios.bus_putchar2(okt)
|
|
ios.bus_putchar2(vol)
|
|
ios.bus_putchar2(fx)
|
|
ios.bus_putchar2(ins)
|
|
|
|
PUB printctrl(c) 'screen: präfix für steuersequenzen
|
|
{{printctrl(c) - screen: steuerzeichen von $100 bis $1FF wird an terminal gesendet}}
|
|
ios.bus_putchar2(BEL_CMD) 'kommandosequenz einleiten
|
|
ios.bus_putchar2(BEL_SCRCMD) 'code 3 = sonderzeichen senden
|
|
ios.bus_putchar2(c & $0FF) 'unteres byte senden '
|
|
|
|
|
|
PUB scr_sline(n) 'screen: startzeile scrollbereich setzen
|
|
{{sline(n) - startzeile scrollbereich setzen}}
|
|
printctrl(BEL_SLINE)
|
|
ios.bus_putchar2(n)
|
|
|
|
PUB scr_eline(n) 'screen: endzeile scrollbereich setzen
|
|
{{sline(n) - endzeile scrollbereich setzen}}
|
|
printctrl(BEL_ELINE)
|
|
ios.bus_putchar2(n)
|
|
|
|
|
|
DAT
|
|
ext1 byte ".HSS",0
|
|
|
|
DAT
|
|
|
|
{{
|
|
|
|
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
|
│ TERMS OF USE: MIT License │
|
|
├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
|
│Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation │
|
|
│files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, │
|
|
│modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software│
|
|
│is furnished to do so, subject to the following conditions: │
|
|
│ │
|
|
│The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.│
|
|
│ │
|
|
│THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE │
|
|
│WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR │
|
|
│COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, │
|
|
│ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. │
|
|
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
|
}}
|