aaarr - es MUSS noch kuerzer gehen ![]()
naja, jetzt erstmal Feierabend...
Raubt mir sicher den gemuetlichen Abend...
Mini Competition für "Grid"-Problem
-
hannenz -
14. Dezember 2005 um 17:52 -
Erledigt
Es gibt 165 Antworten in diesem Thema, welches 26.310 mal aufgerufen wurde. Der letzte Beitrag (
-
-
27

jetzt wird's echt haesslich
-
Samma Alter, gehts noch?
Was machst du da?
Fraktaler Code? -
So, bin bei 33 !
Aber scheinbar geht ja noch was - wenn ich mir Enthusi ansehe
Mal schauen...
-
Zitat
Original von DrCreep
So, bin bei 33 !
Aber scheinbar geht ja noch was - wenn ich mir Enthusi ansehe
Mal schauen...
aufpassen...vielleicht zählt Enthusi schon hexadezimal

-
Hallo!
Ich habe schon seit ewigkeiten nichts mehr in assembler gemacht (und früher auch immer nur kurze Sachen), so das ich's mich mal wieder versuchen wollte. Hat auch prima geklappt .
Meine Proglänge liegt bei 28 Byte. Wenn es einen 1Byte Code gibt mit dem man den echten Cevi (nutze WinVice) einfriert, dann könnte ich auch mit 27Byte mithalten. Vielleicht kennt jemand einen?
gruss
marco64
PS: Ich wuste garnicht das das Rom so nützlich sein kann.
-
Ich bin jetzt auch bei 28 Byte inklusive 2 Bytes Header. Wenn ich am Ende eine JAM/KIL-Befehl nutzen würde, wäre ich jetzt bei 27, nur würde das Programm dann nicht mehr unter VICE laufen. Mit einem echten C64 muß ich es eh noch testen...
Ich habe irgendwie das gefühl, als könnten sich die derzeit kürzesten Versionen recht ähnlich sein...
@marco64: Ja, das ROM das hilft... -
Wie sehen die Register nach einem Reset aus?
Sind Akku X und Y auf $00 oder ist da irgendwas zufälliges drin?EDIT: Also wenn dem auch aufm Originalgerät so ist dann bin ich runner auf 30 byte (28 byte "code" und 2 byte ladeaddresse)
EDIT2: Ja, das Rom hilft echt *g* -
Also bei mir sind Akku , X und Y auf $FF nachm Hardreset. Hab allerdings auch n Retro Replay eingesteckt.
EDIT: Nee, is irgendwie nie ganz gleich. Manchmal $00, manchmal $ff und manchmal gemischt.
-
Nach SYS xxxx sind alle Register eigentlich auf $00...
-
Das soll aber auch funktionieren wenn der Rechner geader erst eingeschaltet ist.
-
Ok ich steig mal ein und biete 26 Bytes (natürlich dezimal gezählt und reiner Code ohne PRG Header)
-
Also ich biete 32 byte nach allen Tests und bin somit mit meinem Latei...erm...6510 am ende.
EDIT: 30 Byte ohne .prg Header
-
-
Geht das auch in Hex?

Also hier mein zurzeitiger:
Code
Alles anzeigen!to "grid2.prg",cbm *=$2100 !byte %11111111 !byte %10000000 !byte %10000000 !byte %10000000 !byte %10000000 !byte %10000000 !byte %10000000 !byte %10000000 ;Startaddresse ist $2108 oder 8456 ldx #$01 stx $0286 dex stx $d020 stx $d021 lda #%00011000 sta $d018 jsr $e544 endless: bne endless -
Also weniger als 28 Bytes habe ich nach ein paar Bier auch nicht hingekriegt.
Code
Alles anzeigen*= $0100 !byte %11111111 !byte %10000000 !byte %10000000 !byte %10000000 !byte %10000000 !byte %10000000 !byte %10000000 !byte %10000000 *= $0108 stx $d020 stx $d021 ldx #%00010001 stx $0286 stx $d018 jsr $e544 .loop jmp .loopCU
Kratznagel -
Du hast vergessen das der Einschaltzustand der CPU undefiniert ist.
Und das muss so laufen als wär der Kernel noch nicht da gewesen. -
Wieso, die Aufgabenstellung war doch Einschalltzustand, also Kernal da.
Ansonsten würde auch der e544 nicht mehr funzen.//update: BTW: Mist, dass der BNE 1 Byte kürzer ist als ein JMP, darauf hätte ich auch kommen müssen.
Das Bier war Schuld.
Damit ware mein Code immerhin nur noch 27 Bytes lang.CU
Kratznagel -
Kernel ist da, dein Programm wird aber vor dem Kernel gestartet. Stell dir vor im Kernel ist auf $FFFE und $FFFF die Startaddy deines Programmes, sonst ist alles gleich.
-
Wo bitteschön steht, dass das Programm vor dem Kernal ablaufen soll??
Für mich bedeutet Einschaltzustand = Kernal ist schon gelaufen. Schließlich soll das Programm ja auch vom BASIC aus mit einem SYS-Befehl gestartet werden.Wäre der Kernal noch nicht gelaufen, könnte man auch keinen SYS absetzen.

CU
Kratznagel -