Herzlich Willkommen im einzigen (deutschsprachigem) Picaxe-Forum.

Der Ursprung dieses Forum reicht bis in das Jahr 2008 zurück


BASCOM Demo-Version und die 4k Begrenzung...

#1 von Naubaddi , 16.01.2020 12:17

Hallo erst mal,

da die Demoversion vom BASCOM-Compiler maximal 4k übersetzen kann und ich diesen Wert schon einmal überschritten hatte wurde kontinuierlich versucht das Programm zu schrumpfen, mein letzter Versuch war eine weitere Prozedur zu erstellen.
Da die Prozedur 4 Zeilen hat und dafür gerade mal 2 Zeilen eingespart wurden hatte ich mir nur ein paar Byte erhofft, das Ergebnis war verblüffend gut:

2 Zeilen weniger (0,8%) bei 248 Zeilen im Quelltext machen 606Byte weniger (24,5%) bei 2474Byte Programmcode aus der jetzt nur noch 1868Byte hat ! Soviel haben alle anderen Aktionen nicht erbracht, die Verschachtlung der Gosubs ist maximal 2 und sollte i.O. sein.

Grüßle, Naubaddi

Die alte Version:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
Gesicht:
A6a = A6 : A5a = A5 : M4a = M4 ' die alten Werte merken
M3 = M4 + 8 : M2 = M3 + 8 : M1 = M2 + 8
for Zeile = 1 to 8
Cs = 0 : Din = 0 : Clk = 0 ' noch nicht anzeigen
Befehl = Zeile
Daten = lookup( A6 , Augenarten ) ' 8x8 Matrix 4 die Letzte 8x8 Matrix
shiftout Din , Clk , Befehl , 1 ' den Befehl senden
shiftout Din , Clk , Daten , 1 ' die Daten senden
Daten = lookup( A5 , Augenarten ) ' 8x8 Matrix 4 die Letzte 8x8 Matrix
shiftout Din , Clk , Befehl , 1 ' den Befehl senden
shiftout Din , Clk , Daten , 1 ' die Daten senden
Daten = lookup( M4 , Mundarten ) ' 8x8 Matrix 4 die Letzte 8x8 Matrix
shiftout Din , Clk , Befehl , 1 ' den Befehl senden
shiftout Din , Clk , Daten , 1 ' die Daten senden
Daten = lookup( M3 , Mundarten ) ' 8x8 Matrix 3
shiftout Din , Clk , Befehl , 1 ' den Befehl senden
shiftout Din , Clk , Daten , 1 ' die Daten senden
Daten = lookup( M2 , Mundarten ) ' 8x8 Matrix 2
shiftout Din , Clk , Befehl , 1 ' den Befehl senden
shiftout Din , Clk , Daten , 1 ' die Daten senden
Daten = lookup( M1 , Mundarten ) ' 8x8 Matrix 1 die Erste 8x8 Matrix seriel angeschloßen
shiftout Din , Clk , Befehl , 1 ' den Befehl senden
shiftout Din , Clk , Daten , 1 ' die Daten senden
incr A6 : incr A5 ' die nächste Zeile vom Auge
incr M4 : incr M3 : incr M2 : incr M1 ' die nächste Zeile vom Mund
Cs = 1 ' jetzt anzeigen
next Zeile
A6 = A6a : A5 = A5a : M4 = M4a ' auf die alten Werte zurück setzen
return
 



Die neue Version:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
Gesicht:
A6a = A6 : A5a = A5 : M4a = M4 ' die alten Werte merken
M3 = M4 + 8 : M2 = M3 + 8 : M1 = M2 + 8
for Zeile = 1 to 8
Cs = 0 : Din = 0 : Clk = 0 ' noch nicht anzeigen
Befehl = Zeile
Daten = lookup( A6 , Augenarten ) ' 8x8 Matrix 4 die Letzte 8x8 Matrix
gosub Send_max_Gesicht
Daten = lookup( A5 , Augenarten ) ' 8x8 Matrix 4 die Letzte 8x8 Matrix
gosub Send_max_Gesicht
Daten = lookup( M4 , Mundarten ) ' 8x8 Matrix 4 die Letzte 8x8 Matrix
gosub Send_max_Gesicht
Daten = lookup( M3 , Mundarten ) ' 8x8 Matrix 3
gosub Send_max_Gesicht
Daten = lookup( M2 , Mundarten ) ' 8x8 Matrix 2
gosub Send_max_Gesicht
Daten = lookup( M1 , Mundarten ) ' 8x8 Matrix 1 die Erste 8x8 Matrix seriel angeschloßen
gosub Send_max_Gesicht
incr A6 : incr A5 ' die nächste Zeile vom Auge
incr M4 : incr M3 : incr M2 : incr M1 ' die nächste Zeile vom Mund
Cs = 1 ' jetzt anzeigen
next Zeile
A6 = A6a : A5 = A5a : M4 = M4a ' auf die alten Werte zurück setzen
return
Send_max_Gesicht:
shiftout Din , Clk , Befehl , 1 ' den Befehl senden
shiftout Din , Clk , Daten , 1 ' die Daten senden
Return
 



Grüßle, Naubaddi


Naubaddi  
Naubaddi
Beiträge: 288
Registriert am: 29.01.2019

zuletzt bearbeitet 16.01.2020 | Top

RE: BASCOM Demo-Version und die 4k Begrenzung...

#2 von Naubaddi , 16.01.2020 12:30

Habe mir die Mühe gemacht die Bemerkungen und Leerzeilen zu entfernen, dann sind es 174 Zeilen und 2 Zeilen weniger sind 1,2%, die 0,8% von oben sind also schon fast richtig gewesen ;-).

Grüßle, Naubaddi

Naubaddi  
Naubaddi
Beiträge: 288
Registriert am: 29.01.2019


RE: BASCOM Demo-Version und die 4k Begrenzung...

#3 von BoomBoomMagic , 16.01.2020 12:53

Ja , .... Du programmierst schon erst mal recht programmcodeintensiv , das hab ich schon gemerkt

REM Zeilen kosten glücklicherweise garnix , da der Compiler sie völlig 100% ignoriert.

Ist das nicht doch ne Überlegung wert vll. doch mal die Vollversion zu nehmen ?
Ich mein , der Code an sich ist schon schwer , wenn man sich dann noch auf möglichst wenig Code beschränken muss , macht das die Sache nicht einfacher

Komm mal per PN waste davon hälst ...


***Lieber 2x mehr lesen , als 1x dumm fragen ***

 
BoomBoomMagic
Beiträge: 528
Registriert am: 24.01.2019


RE: BASCOM Demo-Version und die 4k Begrenzung...

#4 von Naubaddi , 16.01.2020 13:49

Zitat von BoomBoomMagic im Beitrag #3
...Du programmierst schon erst mal recht programmcodeintensiv , das hab ich schon gemerkt...


Jepp, das erinnert mich an die guten alten 8Bit Computer . Meine Devise ist: "Mach was aus dem was da ist, es gibt nix Anderes", ist wie bei meinen Modellen, Buggy... kaufen kann Jeder und Zeit spielt kaum eine Rolle ;-).

Grüßle, Naubaddi

Naubaddi  
Naubaddi
Beiträge: 288
Registriert am: 29.01.2019


   

Ein Servo-Tester mal etwas anders ;-)
Mein erstes Atmega8 Projekt, einen Servo mit den Tasten ansteuern.

Picaxe Editor 5.5.5 Download
Update auf Picaxe Editor 5.5.6 Download
Picaxe Editor 6.x.x.x Download
Manual1.pdf        -      Grundwissen Download
Manual2.pdf        -      Befehle Download
Manual3.pdf        -      Beispiele Download


Press [Backspace] for back to Menu


Counter
Xobor Forum Software ©Xobor.de | Forum erstellen
Datenschutz