Seite 11 von 20

Re: HBasic

Verfasst: Mi 7. Nov 2012, 23:12
von drohne235

Code: Alles auswählen

Bellatrix wird jetzt entspinnt :SCHRAUBEN
Cool! Das dürfte einen enormen Geschwindigkeitszuwachs geben! 8-) Hab da für mental auch schon drüber nachgedacht, aber da wird es komplexer, weil in Bella noch der Editor- und Parsercode läuft - der bleibt definitiv Spin. Hab da noch keine zündende Idee wie man das einfach miteinander verflechten kann, aber hab da auch noch nicht allzuviel Zeit investiert.

Re: HBasic

Verfasst: Do 8. Nov 2012, 01:28
von kuroneko
PIC18F2550 hat geschrieben:

Code: Alles auswählen

                mov     temp2,  #0
                sub     temp2,  #160
                mov     temp3,  Zeile
loop1           add     temp2,  #160
                djnz    temp3,  #loop1

                add     temp2,  Spalte
                add     temp2,  Spalte          '2x wegen wordformat

Code: Alles auswählen

                mov     temp2,  Zeile           'x1
                shl     temp2,  #2              'x4
                add     temp2,  Zeile           'x5
                shl     temp2,  #5              'x160

                add     temp2,  Spalte
                add     temp2,  Spalte          '2x wegen wordformat
PIC18F2550 hat geschrieben:

Code: Alles auswählen

                add     spalte, #1

                cmp     spalte, #80 wz
        if_z    mov     spalte, #0

        if_z    add     zeile,  #1

Code: Alles auswählen

                add     spalte, #1

                cmpsub  spalte, #80 wz

        if_z    add     zeile,  #1
Und was den Sprungverteiler angeht, im Moment verbraucht der 32x2 longs und benachteiligt die Sequenzen am Ende der Liste. Vorschlag, Tabelle der Einspruenge im cog RAM (32 longs) and dann Ausfuehrung mit 'nem indirekten Sprung (jmp reg).

Re: HBasic

Verfasst: Do 8. Nov 2012, 01:54
von PIC18F2550

Code: Alles auswählen

              mov       sprvm,  SPRV        'Bytecode Merken
jloop
              ...
              mov       SPRV,   sprvm
              add       SPRV,   code
SPRV          jmp       #SPRV0               '5C 7C 00 (1B+code)
SPRV0         jmp       #J0000
              jmp       #J0001


J0000
              ...
              jmp       #jloop
meinst du sowas?

Re: HBasic

Verfasst: Do 8. Nov 2012, 02:20
von kuroneko
In der Art, ja. Hab letztlich mal wieder damit rumhantiert:

Code: Alles auswählen

command         add     :jmp, temp1{0..31}      ' prime call
                nop
:jmp            jmpret  $, $+1                  ' call sub function
                
                long    b00, b01, b02, ... , b1F
Das nop kann irgendwie/irgendwo versteckt werden. Haengt davon ab wie Du hierher gelangst (e.g. add before jmp #command).

Re: HBasic

Verfasst: Do 8. Nov 2012, 22:03
von PIC18F2550
2012-11-08_21-51-10_583.jpg
Bildschirmspeicher ab $0 mit Prüftext und SPIN-Code(Bildschirm noch nicht gelöscht) :LACHEN
sync $7FFC
Kursor ab $7FF0

Code: Alles auswählen

PUB start | cmd, a, b                                           '   '
    dira := %00001001_00000000_00000000_00000000                ' datenbus auf eingabe schalten
    outa[27] := 1                                               ' handshake inaktiv
    byte[$7FF0]:=0          'ckx
    byte[$7FF1]:=0          'cky
    byte[$7FF2]:=%111       'ckm
    byte[$7FF3]:=0
    byte[$7FF4]:=0
    byte[$7FF5]:=0

    a := startv(0, $7FF0, $7FFC)                               ' start vga text driver
    if (a)                                                          ' VGA-Treiber geladen
...

Code: Alles auswählen

PRI startv(ScreenPtr, CursorPtr, SyncPtr) : okay | i, j, a  'io '
    reg_vcfg := $200000FF + (BEL_VGABASE & %111000) << 6                ' implant pin settings
    i := $FF << (BEL_VGABASE & %011000)
    j := BEL_VGABASE & %100000 == 0
    reg_dira := i & j
    reg_dirb := i & !j
    sync_cnt := cnt + $10000                                            ' implant CNT value to sync COGs to
    font_base := @font
    vf_lines.byte := vf                                                 ' implant unique settings and launch first COG
    vb_lines.byte := vb
    font_part := 1
    if cognew(@entryv, SyncPtr) + 1
        waitcnt($2000 + cnt)                                                ' allow time for first COG to launch
        vf_lines.byte := vf+4                                               ' differentiate settings and launch second COG
        vb_lines.byte := vb-4                                               ' differentiate settings and launch second COG
        font_part := 0
        if cognew(@entryv, SyncPtr) + 1
            return true

Code: Alles auswählen

                ' Data
screen_base     long    0                       ' set at runtime (3 contiguous longs)
cursor_base     long    $7FF0                   ' set at runtime
font_base       long    0                       ' set at runtime
als nächsten den Zeichensatz verschieben ans ende vom hRam. :DAUMENHOCH

Re: HBasic

Verfasst: Do 8. Nov 2012, 22:23
von PIC18F2550

Code: Alles auswählen

font_base       long    $7800                   ' set at runtime
:LACHEN geht
Es sind bis 380 Zeilen möglich :SCHREIEN

Re: HBasic

Verfasst: Mo 12. Nov 2012, 21:00
von PIC18F2550
Grundgerüst
Bildschirmfoto_12.11.2012.png
:LACHEN

Re: HBasic

Verfasst: Di 13. Nov 2012, 18:03
von PIC18F2550
Abgeräumt :DAUMENHOCH der hRam gehört jetzt dem PASM :LACHEN SPIN ist TOT es lebe PASM :SCHREIEN
2012-11-13_00-52-53_358.jpg
Zu sehen sind der Keybord- und Maus-Kursor.
Eine Kleine Frage quält mich heute schon den ganzen Tag.:
Wie währe es wenn die Variabeln ein 2. Satz bekähmen der mit einem Befehl schnell ausgetauscht werden kann.
So wie beim Z80 "EXX" oder "EX AF,AF'" :KLATSCHEN

Re: HBasic

Verfasst: Mi 14. Nov 2012, 21:21
von PIC18F2550
Bellatrix empfängt Daten von Regnatix. :DAUMENHOCH
Jetzt muss ich erstmal meinen HIVE2 umflaschen. :BIENE

Re: HBasic

Verfasst: Do 15. Nov 2012, 00:55
von PIC18F2550
2012-11-15_00-21-00_131.jpg
HBASIC Test auf r50.