Posts by Haubitze

    sehr schoen dg5kr hatte auch mal eine eigene basic erweiterung versucht zu schreiben, bei mir haperte es dann am formelauswerter.
    ich finde es klasse das du dich dazu entschieden hast keine wedge sondern eine "echte" erweiterung zu schreiben. 'weiter so' :)


    interessant finde ich, das if then problem, bis dahin bin ich garnich vorgestossen. gut zu wissen fals ich meine BE mal weiter schreibe.
    (den source hab ich ja zum glueck noch) *puh schwitz*


    salute :thumbsup:

    Endurion fuer den machienen type wuerde ich bei build einfach eine aufklappbare liste hinterlegen die dann in etwa so aussieht (aehnlich den NppExec macros vom NotePad++)

    Code
    1. build for C64
    2. build for VC20
    3. build for C234
    4. ...

    unter optionen evtl noch einen eintrag der zum erstellen neuer maschienen gedacht ist also wo alles eingegeben wird was speziel fuer eine maschiene ist.

    (start basicprograms, start IO,path to emulator,...) oder halt ein extra eintrag in der buld liste [add machine].


    nur als gedanke gedacht.

    jetzt muss ICH mal ganz daehmlich fragen was wenn man eine FLP nummer eingiebt?

    val macht doch da eine INT draus oder, dann stimmt doch das ergebniss nich oder?

    ka aber ich hab so ein gefuehl in der blase das quersummen auch ueber kommas hinaus gelden.

    warn die nich dazu da um heraus zubekommen durch welche vielfache eine zahl geteilt werden kann ohne "rest"?


    koenntet ihr mich mal aufklaehren, bitte.

    can you get the state of X? if so you can delete the cmp but you have to swap beq with bne and bne with beq i think.

    i know it is not much always 2bytes but the sum will make thedifference.


    in your bsp i see

    Code
    1. ldx #<basic_current_statement_ptr ;set falgs, eg N=0,Z=1,C=?
    2. jsr peek_under_roms ;store flags and restore it, eg N=0,Z=1,C=?
    3. cmp #$00 ; if X=0 then ? NO here is A the COMPERATOR, sets the flags new! eg N=1,Z=0,C=0


    oh yeah now i see A is the comperator and it will be set in peek_under_roms, so yeah it is not removable.

    all cmp #$00 after a jsr peek_under_roms have to implement. now im not sure how many cmp #$00 i see without that subroutinecall^^


    salute


    PS: cmp #$00 after a jsr peek_under_roms closed ;D so good work it was my fault ;/

    hm i think now i understand it right, if make it so

    Code
    1. ldy #$00
    2. jsr peek_under_roms_routine
    3. beq +

    it will pass (untested)

    if i make it so

    Code
    1. ldy #$00
    2. iny
    3. jsr peek_under_roms_routine
    4. beq +

    it will not pass. i haven'd a testsuite so if you can, can you proof it?

    so i think it has to do with the last lda/adc/sbc/inc/dec opcode (A/Y/X variants also).

    so yeah i think it is a bit tricky to see the big pikture with this peek_under_roms_routine.

    oh okay, i dont know that and i haven'd take a look to peek_under_roms.


    but here https://github.com/MEGA65/open…master/c64/basic/printf.s i see the function printf_printhexbyte:

    i use another implementation and think (if i count right) it is a bit shorter. so here my version.

    i also see that the kernal has also this printf.s source and its almost the same code if i see it right, so why not use a kernal call and delete it from basic?


    edit: i see the peek_under_roms_routine: and idont know why removing cmp #$00 causes this load bug that you discripe. it saves the status register and restores it. so idk

    hm schade das man strings nicht wie arrays auslesen kann sonst koennte man das beschleunigen.

    glaub auf dem atari konnte man sowas schreiben

    Code
    1. q=q+(z$[z]-48)

    das waere natuerlich was feines aber sowas ham wir hier nich. also muessen andre wege gefunden werden um das schneller zu machen ;D

    hm wie is das denn wenn man das do macht?


    ka aber ich nehme an val macht das selbe wie ich mit diesem komplizierten ausdruck in zeile 110.

    hey there.

    i dont to narrow your work but i think it can simplified a bit... so i only try to help.

    in https://github.com/MEGA65/open…asic/basic_execute_line.s

    lines 60-65 can simplified so

    Code
    1. ldx #<basic_current_statement_ptr
    2. ldy #0
    3. jsr peek_under_roms
    4. ;;cmp #$00
    5. beq basic_end_of_line


    and here the subroutine in line 85-117 (not realy bether my version so i think)


    then the subroutine in line 136-144 (but here im not sure)


    so far my 2 cents.

    i find this project very interesting and i hope i can summit another code snipets to shorten a bit of the basic rom size

    and give more space for other things. i will take a look to another .s files ^^


    Salute


    Edit: yeah i see alot of

    Code
    1. jsr anywhere
    2. cmp #$00
    3. beq +

    so far i see the jsr's always gives a returnvalue in A+Carry back, so all the cmp #$00 can be revoved (commended).

    ich wuerde evtl versuchen einen "virtuellen" screen zu basteln wo alle prints und ausgaben umgelenkt werden,

    dann noch 2-4 routinen wie clear_rec, copy_rec, load_rec und save_rec. mit diesen vier routinen copierst du dir einfach

    den inhalt vom virtuelle screen zum "echten" screen oder andersrum.


    in wie weit das machbar und praktikabel ist weis ich gerade nicht genau. ich bilde mir aber ein das man die standart

    ausgaben auf einen anderen speicherbereich umlenken kann.


    ansonsten waere natuerlich die rastersplit methode die bevorzugte wuerde ich meinen.

    Hallo Leute, die ist mal KEINE 8Bit frage sondern eine allgemeine.


    hatt wer von euch erfahrung in diesem bereich? wie oder wo fange ich an ein ECS zu programieren ( ich moechte dies in FreeBASIC machen ) ?

    ueber tips oder tutorial wuerde ich mich freuen. dazu sei gesagt FreeBASIC kann zwar OOP aber nicht wie C++ oder aehnliche spachen da es ein einpass compiler ist.

    virtual"methoden" koennen implementiert werden.


    @MODS fals ich hier falsch bin bitte verschieben.


    was ich zZ habe is ein type(class) namens IComponent_t welchen ich virtuell erweitern kann, ausserdem eine type(class) IEntity_t die das selbe vermag, ich koennte also ein entity Sprite anlegen (welches die grundlagen von IEntity_t erbt) und diesem virtuelle constructoron und destructoren zuweisen und ausserdem subs

    oder funktionen dazu programieren die nur dieses benutzt,ausserdem haette es evtl ein array(?) von IComponent_t's.


    danke fuer tips und links salute :)

    hehe ja habs jetzt nochmal gelesen und da steht "kein goto usw", nun gut die tokens auszulassen koennte man sicher mit ein paar wenigen befehlen dazuproggen.

    was ich aber nicht verstehe ist der sinn dahinter, renum ohne goto usw is doch voellig sinnfrei oder ueberseh ich da etwas? :smoke:

    auch ein schoenes RENUMBER ist hier RENUM zu finden, dabeihandelt es sich um ein aelteres program.

    welches wohl alle moeglichen konstrukte wie goto,gosub, on goto if then usw abdeckt.

    ausserdem ist es auch noch relocable also frei verschiebbar.