Blame | Last modification | View Log | Download | RSS feed
; MACROS.INC;******************************************************************************;* ueberall gebrauchte Makros *;* *;* Alfred Arnold, Oktober 1993 *;******************************************************************************proc macro name,{NoExpand} ; Prozedureintrittsection nameforward LocalSize ; lokal reservierter Speicher auf StackLocalSize eval 0public namename label $endmsubproc macro name,{NoExpand} ; Prozedureintritt fuer private Routinesection nameforward LocalSize ; lokal reservierter Speicher auf StackLocalSize eval 0public name:Parentname label $endmendp macro name,{NoExpand} ; ProzeduraustrittLocalSize eval 0-LocalSize ; damit man's im Listing lesen kannendsection nameendmlink macro reg,count,{NoExpand} ; Stack-Rahmen einrichtenpush reg ; alten Basepointer rettenld reg,sp ; neuen aufbauenif count<>0add sp,count ; Platz auf Stack reservierenendifendmunlk macro reg,{NoExpand} ; Stack-Rahmen abbauenld sp,reg ; Speicherreservierung zuruecknehmenpop reg ; alten Basepointer zurueckendmretd macro dist,{NoExpand} ; Return and Deallocateif dist<>0push hl ; Arbeitsregister rettenld hl,(sp+2) ; Ruecksprungadresse umkopierenld (sp+2+dist),hlld hl,(sp) ; Arbeitsregister zurueckadd sp,2+dist ; Stack aufraeumenendifretendmDefLocal macro Name,Size,{NoExpand} ; eine lokale Variable definierenLocalSize eval LocalSize-Size ; zaehlt lok. reservierten SpeicherName equ LocalSize ; liegt an neuem unteren Ende des Stackrahmensendm