yasp - Webbasierte Assembler Entwicklungsumgebung

Übersicht Sonstiges Projekte

Neue Antwort erstellen

coolo

Betreff: yasp - Webbasierte Assembler Entwicklungsumgebung

BeitragSo, Feb 23, 2014 16:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hello Leute!

Ich würde euch gerne unser (ich + ein Schulkollege) web-basierten Assembler/Emulator/Debugger-Projekt yasp vorstellen! Angefangen hat das ganze als Diplomprojekt (=> letztes großes Schulprojekt vor der Matura an einer HTL) in unserer Schule. Jetzt haben wir das gesamte Projekt als GPLv3 veröffentlicht.
Das Hauptziel von yasp, ist es Schülerinnen und Schülern eine Web-Plattform zum lernen von Assembler zur Verfügung zu stellen. Darum haben wir uns für einen eigenen Assembler Dialekt entschieden, damit alles einfach bleibt. Dies erlaubt uns die Lernkurve so flach wie möglich zu halten. Zusätzlich gibt es mehrere Hardware-Elemente (LED, Potentiometer und Button).
Für weitere Informationen, könnt ihr euch im Editor die About-Seite ansehen oder unsere Webseite besuchen.

Website: http://yasp.me/
Gleich zur Demo: http://demo.yasp.me/
Tutorial: https://github.com/yasp/yasp/b...utorial.md
FB Seite: https://www.facebook.com/pages...2106285016


Wenn du irgendwelche Verbesserungsvorschläge hast, kannst du gerne eine Issue bei GitHub erstellen oder einfach auf diesen Post antworten. Danke!

Screenshots:
user posted image
user posted image
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project!
"Eigenzitate sind nur was für Deppen" -Eigenzitat

DAK

BeitragSo, Feb 23, 2014 16:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Ganze ist wirklich schön gemacht. Hab für die Uni auch mal sowas Ähnliches gemacht (wenn du an der TU Informatik studierst, dann wirst du mein Assembler SDK/Emulator auch noch verwenden dürfen).

Ist ziemlich schön.

Es gibt aber ein paar Kleinigkeiten, die mich stören:
1) Die Autoformatierung des Editors ist zwar gut, da sie wirklich schön formatiert, aber ein wenig bevormundend und damit unangenehm. Besser würde ich es finden, wenn es mich die Zeile schreiben ließe wie ich will und erst danach formatieren, eventuell auch erst auf Knopfdruck (also irgendwo einen Knopf mit "Autoformatieren" hin machen).
2) Der Emulator lässt sich nicht pausiert starten. Drücke ich auf "Run" beginnt das Programm direkt laufend und dadurch verpasse ich garantiert den Anfang des Programms wenn ich es schrittweise durchgehen will. Was ich da gemacht habe war eine Trennung in "Flash ROM", was die VM startet und den ROM befüllt, und dann erst Knöpfe mit "Step" und "Run".
3) Die Grafik des Emulators ist nicht wirklich einheitlich. Das Board ist ein Foto, die IO-Elemente sind aber nur Paint. Mach am Besten entweder alles mit Paint-Grafik oder alles Fotorealistisch.
Dazu noch eines: Auf der Grafik des Boards sollten keine nicht verwendbaren Elemente sein. Der Chip ist ok, aber z.B. die Pinleiste rechts sollte nicht drauf sein, da sie ablenkt, bzw. falsche Hoffnungen weckt Wink
Oder mach sie irgendwie verwendbar, das wäre echt cool.
Gewinner der 6. und der 68. BlitzCodeCompo

coolo

BeitragSo, Feb 23, 2014 16:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo DAK!

Danke für das Feedback.

DAK hat Folgendes geschrieben:

1) Die Autoformatierung des Editors ist zwar gut, da sie wirklich schön formatiert, aber ein wenig bevormundend und damit unangenehm. Besser würde ich es finden, wenn es mich die Zeile schreiben ließe wie ich will und erst danach formatieren, eventuell auch erst auf Knopfdruck (also irgendwo einen Knopf mit "Autoformatieren" hin machen).

Darüber sind wir auch gerade am überlegen. Es wäre zum Beispiel praktisch, wenn ein zusätzlicher Tab nach einem Befehl kommt und die Kommentare ebenfalls einheitlich eingerückt werden.

DAK hat Folgendes geschrieben:

2) Der Emulator lässt sich nicht pausiert starten. Drücke ich auf "Run" beginnt das Programm direkt laufend und dadurch verpasse ich garantiert den Anfang des Programms wenn ich es schrittweise durchgehen will. Was ich da gemacht habe war eine Trennung in "Flash ROM", was die VM startet und den ROM befüllt, und dann erst Knöpfe mit "Step" und "Run".

Neben dem Run Button gibt es einen Button mit so einem Käfer drauf (Debug Button), dieser startet den Debugger pausiert. Zusätzlich kann man einen Breakpoint setzen, indem man auf die entsprechende Zeilennummer klickt.

DAK hat Folgendes geschrieben:

3) Die Grafik des Emulators ist nicht wirklich einheitlich. Das Board ist ein Foto, die IO-Elemente sind aber nur Paint. Mach am Besten entweder alles mit Paint-Grafik oder alles Fotorealistisch.
Dazu noch eines: Auf der Grafik des Boards sollten keine nicht verwendbaren Elemente sein. Der Chip ist ok, aber z.B. die Pinleiste rechts sollte nicht drauf sein, da sie ablenkt, bzw. falsche Hoffnungen weckt Wink
Oder mach sie irgendwie verwendbar, das wäre echt cool.

Die Grafik stammt vom USBMaster (wovon yasp auch den Assemblerdialekt bzw. Befehlssatz geerbt hat). Designtechnisch ist es bestimmt nicht die allerschönste Variante, da ja Skeumorphismus mit Flat-Design vermischt wurde, allerdings erfüllt es seinen Job.
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project!
"Eigenzitate sind nur was für Deppen" -Eigenzitat

DAK

BeitragSo, Feb 23, 2014 16:58
Antworten mit Zitat
Benutzer-Profile anzeigen
@2) Ah, habe ich auch gerade selbst gesehen^^

Hast du eine Ahnung, warum bei folgendem Code der schwarze Knopf nicht geht:
Code: [AUSKLAPPEN]
; Toggle the green LED and increment a byte-register by at a time.
; Additionally the yellow LED is switched once an overflow occurs.
; The red LED is toggled via an interrupt when the red button is pressed.

; ---- INIT
        MOV     b0, 0x00
   MOV     b1, 0x20

        ; Enable interrupts for the red button (= pin 2)
        ; Pin:  7 6 5 4 3 2 1 0
        ; Mask: 0 0 0 0 0 1 0 0 = 4dec
        ENABLE  4


; ---- Blink green and increment b0 by b1
main:
        ADD     b0, b1
        DEBUG   b0      ; send current value of b0 to debugger
        JC      carry   ; jump if b0 had an overflow
        TOGGLE  5       ; toggle green LED
        PAUSE   30000   ; wait for ~450ms
        JMP     main

; ---- Switch yellow
carry:
        TOGGLE  4       ; toggle yellow LED
        JMP     main

; ---- called via interrupt when the red button is pressed
isr1:
        TOGGLE  3       ; toggle red LED
        ECHO helloWorld ; send string "hello world" to debugger
        RETI            ; return to main program

isr2:
   mov b0, 0x00
   echo hitBlack
   reti

helloWorld:
        STRING "hello world"

hitBlack:
   String "Hit black"

; ---- interrupt table
        ORG     0x100
        DW      0       ; pin 0 (not wired)
   DA      isr1       ; black button
   DA      isr2        ; red button

END


Vertauscht man die beiden DA-Zeilen, dann geht isr1, aber der schwarze Knopf geht immer noch nicht, es liegt also nicht an dem isr1 / isr2-Blöcken.
Gewinner der 6. und der 68. BlitzCodeCompo

coolo

BeitragSo, Feb 23, 2014 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem liegt daran, dass du den Interrupt nicht aktiviert hast. Die Maske für ENABLE war auf 4 gesetzt, aber um beide zu aktivieren muss die Maske auf 6 sein (siehe Kommentar).

Folgender Code funktioniert bei mir:
Code: [AUSKLAPPEN]
   ; Toggle the green LED and increment a byte-register by at a time.
   ; Additionally the yellow LED is switched once an overflow occurs.
   ; The red LED is toggled via an interrupt when the red button is pressed.

   ; ---- INIT
   MOV     b0, 0x00
   MOV     b1, 0x20

   ; Enable interrupts for the red and black button (= pin 1 and 2)
   ; Pin:  7 6 5 4 3 2 1 0
   ; Mask: 0 0 0 0 0 1 1 0 = 6dec
   ENABLE  6


   ; ---- Blink green and increment b0 by b1
main:
   ADD     b0, b1
   DEBUG   b0      ; send current value of b0 to debugger
   JC      carry   ; jump if b0 had an overflow
   TOGGLE  5       ; toggle green LED
   PAUSE   30000   ; wait for ~450ms
   JMP     main

   ; ---- Switch yellow
carry:
   TOGGLE  4       ; toggle yellow LED
   JMP     main

   ; ---- called via interrupt when the red button is pressed
isr1:
   TOGGLE  3       ; toggle red LED
   ECHO helloWorld ; send string "hello world" to debugger
   RETI            ; return to main program

isr2:
   mov b0, 0x00
   echo hitBlack
   reti

helloWorld:
   STRING "hello world"

hitBlack:
   String "Hit black"

   ; ---- interrupt table
   ORG     0x100
   DW      0       ; pin 0 (not wired)
   DA      isr1       ; black button
   DA      isr2        ; red button

END
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project!
"Eigenzitate sind nur was für Deppen" -Eigenzitat

DAK

BeitragSo, Feb 23, 2014 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah, verstehe, jetzt geht es^^

Gute Arbeit mit dem Ganzen!
Gewinner der 6. und der 68. BlitzCodeCompo

Neue Antwort erstellen


Übersicht Sonstiges Projekte

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group