Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
forth:fgforth:kassette [2025/07/14 06:56] – [Z9001] volkerpforth:fgforth:kassette [2025/07/14 10:10] (aktuell) – [Get/Put Orig. Br.] volkerp
Zeile 109: Zeile 109:
 14 ' RAM-LOAD IS  GET ( n --) 14 ' RAM-LOAD IS  GET ( n --)
 15 ' RAM-SAVE IS  PUT ( von bis --) 15 ' RAM-SAVE IS  PUT ( von bis --)
 +</code>
 +
 +JUMP macht einen allg. [[z1013:software:headersave|Headersave]]-Funktionsaufruf. 
 +Es werden die Einsprungadressen aus dem [[z1013:software:sprungverteiler|]] genutzt.
 +
 +Mit JUAD wird das Wort JUMP modifiziert. NEW und OLD patchen das Wiederholungsflag; FILE und COM den Filetyp, SARUF! und LORUF! die eigentliche Funktion. 
 +
 +<code>
 +JUMP is
 +2A6A:    PUSH  AF
 +2A6B:    PUSH  BC
 +2A6C:    PUSH  DE
 +2A6D:    PUSH  HL
 +2A6E:    PUSH  IX
 +2A70:    PUSH  IY
 +2A72:    LD    IY,4300    ; offs 0Dh H(IY)=Typkennzeichen
 +2A76:    LD    A,4E       ; offs 0Fh A=0 ohne, A=4EH mit Typ und Namensabfrage, 3EH Wiederholen mit gleichem Kopf
 +2A78:    CALL  FFF4       ; offs 11h FFF1H - JMP LORUF, FFF4H - JMP SARUF
 +2A7B:    POP   IY
 +2A7D:    POP   IX
 +2A7F:    POP   HL
 +2A80:    POP   DE
 +2A81:    POP   BC
 +2A82:    POP   AF
 +2A83:    JP    0422
 +2A86: END                       
 +
 +nb: Aus Forth-Sicht müsste man nicht alle Register retten; BC und IY reichen.
 +
 </code> </code>
  
Zeile 276: Zeile 305:
  
 <code> <code>
-CBOS:                                   +CBOS: Aufruf Sprungverteiler, auf Stack wird die Funktionsnummer erwartet) 
-2A62  E1               POP     HL      +2A62  E1               POP     HL      ; Funktionsnummer
 2A63  C5               PUSH    BC       2A63  C5               PUSH    BC      
 2A64  FD E5            PUSH    IY       2A64  FD E5            PUSH    IY      
 2A66  4D               LD      C,L      2A66  4D               LD      C,L     
-2A67  CD 05 00         CALL    0005H   +2A67  CD 05 00         CALL    0005H   ; Systemruf BOS
 2A6A  FD E1            POP     IY       2A6A  FD E1            POP     IY      
 2A6C  C1               POP     BC       2A6C  C1               POP     BC      
 2A6D  26 00            LD      H,00H    2A6D  26 00            LD      H,00H   
-2A6F  6F               LD      L,A      +2A6F  6F               LD      L,A     ; Rückgabe A -> HL 
-2A70  E5               PUSH    HL       +2A70  E5               PUSH    HL      ; auf Stack legen 
-2A71  ED 62            SBC     HL,HL    +2A71  ED 62            SBC     HL,HL   ; Cy als Flag 
-2A73  E5               PUSH    HL      +2A73  E5               PUSH    HL      ; auf Stack legen
 2A74  C3 22 04         JP      0422H    2A74  C3 22 04         JP      0422H   
                                                                                
-MAREK:                                 +MAREK: Aufruf OS-Systemfunktion Lesen eines bel. Blocks von Kassette
 2A81  C5               PUSH    BC       2A81  C5               PUSH    BC      
 2A82  FD E5            PUSH    IY       2A82  FD E5            PUSH    IY      
-2A84  CD 59 FF         CALL    0FF59H   +2A84  CD 59 FF         CALL    0FF59H  ; KARAM 
-2A87  CD E3 FA         CALL    0FAE3H  +2A87  CD E3 FA         CALL    0FAE3H  ; INIT
 2A8A  FD E1            POP     IY       2A8A  FD E1            POP     IY      
 2A8C  C1               POP     BC       2A8C  C1               POP     BC      
  • forth/fgforth/kassette.1752476212.txt.gz
  • Zuletzt geändert: 2025/07/14 06:56
  • von volkerp