macro &l plax &loc &l pla plx aif c:&loc,.store mexit .store sta &loc stx &loc+2 mend macro &l stax &loc lclc &c &c amid &loc,1,1 aif "&c"="[",.deref &l sta &loc stx &loc+2 mexit .deref &l ldy #2 sta &loc txa sta &loc,y mend macro &l ldax &loc lclc &c &c amid &loc,1,1 aif "&c"="#",.direct aif "&c"="[",.deref &l lda &loc ldx &loc+2 mexit .direct &loc amid &loc,2,l:&loc-1 &l lda #&loc ldx #^&loc mexit .deref &l ldy #2 lda &loc,y tax lda &loc mend macro &l pstr &s &l dc i1'L:&s' dc c'&s' mend macro &l gstr &s &l dc i2'L:&s' dc c'&s' mend macro &l lbeq &s &l bne *+5 brl &s mend macro &l lbne &s &l beq *+5 brl &s mend macro &l lbcc &s &l bcs *+5 brl &s mend macro &l lbcs &s &l bcc *+5 brl &s mend macro &l ph4 &n1 &l anop aif "&n1"="*",.f lclc &c &c amid &n1,1,1 aif "&c"="#",.d aif s:longa=1,.a rep #%00100000 .a aif "&c"<>"{",.b &c amid &n1,l:&n1,1 aif "&c"<>"}",.g &n1 amid &n1,2,l:&n1-2 ldy #2 lda (&n1),y pha lda (&n1) pha ago .e .b aif "&c"<>"[",.c ldy #2 lda &n1,y pha lda &n1 pha ago .e .c aif "&c"<>"<",.c1 &n1 amid &n1,2,l:&n1-1 pei &n1+2 pei &n1 ago .e .c1 lda &n1+2 pha lda &n1 pha ago .e .d &n1 amid &n1,2,l:&n1-1 pea +(&n1)|-16 pea &n1 ago .f .e aif s:longa=1,.f sep #%00100000 .f mexit .g mnote "Missing closing '}'",16 mend MACRO &lab _CloseGS ¶ms &lab jsl $E100A8 dc i2"$2014" dc i4"¶ms" MEND MACRO &lab _CreateGS ¶ms &lab jsl $E100A8 dc i2"$2001" dc i4"¶ms" MEND MACRO &lab _DestroyGS ¶ms &lab jsl $E100A8 dc i2"$2002" dc i4"¶ms" MEND MACRO &lab _OpenGS ¶ms &lab jsl $E100A8 dc i2"$2010" dc i4"¶ms" MEND MACRO &lab _ReadGS ¶ms &lab jsl $E100A8 dc i2"$2012" dc i4"¶ms" MEND MACRO &lab _WriteGS ¶ms &lab jsl $E100A8 dc i2"$2013" dc i4"¶ms" MEND MACRO &lab _SendRequest &lab ldx #$1C01 jsl $E10000 MEND MACRO &lab _QDVersion &lab ldx #$0404 jsl $E10000 MEND macro &l ~DisposeHandle &p1 &l ph4 &p1 ldx #$1002 jsl $E10000 mend macro &l ~NewHandle &p1,&p2,&p3,&p4 &l ph4 &p1 ph2 &p2 ph2 &p3 ph4 &p4 ldx #$0902 jsl $E10000 mend macro &l long &a,&b lclb &i lclb &m &a amid &a,1,1 &m setb ("&a"="M").or.("&a"="m") &i setb ("&a"="I").or.("&a"="i") aif c:&b=0,.a &b amid &b,1,1 &m setb ("&b"="M").or.("&b"="m").or.&m &i setb ("&b"="I").or.("&b"="i").or.&i .a &l rep #&m*32+&i*16 aif .not.&m,.b longa on .b aif .not.&i,.c longi on .c mend macro &l ph2 &n1 &l anop aif "&n1"="*",.f lclc &c &c amid &n1,1,1 aif "&c"="#",.d aif s:longa=1,.a rep #%00100000 .a aif "&c"<>"{",.b &c amid &n1,l:&n1,1 aif "&c"<>"}",.g &n1 amid &n1,2,l:&n1-2 lda (&n1) pha ago .e .b aif "&c"="<",.c lda &n1 pha ago .e .c &n1 amid &n1,2,l:&n1-1 pei &n1 ago .e .d &n1 amid &n1,2,l:&n1-1 pea &n1 ago .f .e aif s:longa=1,.f sep #%00100000 .f mexit .g mnote "Missing closing '}'",16 mend macro &l short &a,&b lclb &i lclb &m &a amid &a,1,1 &m setb ("&a"="M").or.("&a"="m") &i setb ("&a"="I").or.("&a"="i") aif c:&b=0,.a &b amid &b,1,1 &m setb ("&b"="M").or.("&b"="m").or.&m &i setb ("&b"="I").or.("&b"="i").or.&i .a &l sep #&m*32+&i*16 aif .not.&m,.b longa off .b aif .not.&i,.c longi off .c mend macro &l ~AcceptRequests &p1,&p2,&p3 &l ph4 &p1 ph2 &p2 ph4 &p3 ldx #$1B01 jsl $E10000 mend macro &l ~SendRequest &p1,&p2,&p3,&p4,&p5 &l ph2 &p1 ph2 &p2 ph4 &p3 ph4 &p4 ph4 &p5 ldx #$1C01 jsl $E10000 mend macro &l ~ShowBootInfo &p1,&p2 &l ph4 &p1 ph4 &p2 ldx #$3C03 jsl $E10000 mend macro &l ~HLock &p1 &l ph4 &p1 ldx #$2002 jsl $E10000 mend macro &l ~BlockMove &p1,&p2,&p3 &l ph4 &p1 ph4 &p2 ph4 &p3 ldx #$2B02 jsl $E10000 mend MACRO &lab _BlockMove &lab ldx #$2B02 jsl $E10000 MEND MACRO &lab _PtrToHand &lab ldx #$2802 jsl $E10000 MEND macro &l ~DisposeAll &p1 &l ph2 &p1 ldx #$1102 jsl $E10000 mend