0 Members and 5 Guests are viewing this topic.
rst rmov9toop1 ; Moves the string at HL to OP1 bcall ChkFindSym ; Looks to see if it already exists jr c, Continue ; If it doesn't exist, jump to Continue bcall delvararc ; If it does, delete itContinue: ld hl, (savesscreen) ; Load A into HL for the size bcall CreateAppVar ; Create the variable ex de, hl ; Swap HL with DE (DE is a pointer to the data location) inc hl ; The first two bytes of any variable are the length, so move past it inc hl ; And return a pointer to the first data byte.
Start: rst rmov9toop1 ; Move the string in Ans (HL) to OP1 bcall ChkFindSym ; And look to see if it exists jr nc, Continue ; If it exists, skip to Continue ld hl, 0 ; If it doesn't exist, load 0 into Ans (HL) jr End ; And skip to the end of the routineContinue: ex de, hl ; If it does, swap HL with DE (DE is pointer to data) inc hl ; Move past the size bytes inc hl ; And return a pointer in AnsEnd:
@Sir I meant the entire code actually, including Axe. I now understand what {A} does, though, after a talk with Quigibo. {A} == LA(1), {A+1} == LA(2), etc, or something similar. I don't get the lenght thing, though.
:.INPUT:DiagnosticOff:"'WRMHC ?θVQLGV .ZUPKFC∟ YTOJEBX→Str88:"XSNIDAA[i]e[/i]:"?→Str89:0→Q→L→F+1→T:Repeat Q:Lbl GK:0→K+9→T:Repeat K:Pause 100:getKey→K:T+1→T:!If T^10-1:Output(L,0,224+F►Frac:End:!If T^20-1:Output(L,0," :1→T:End:End:If K=15:ClrHome:0→L:Goto GK:End:If K=54:F+1→F:F≠4*F→F:Goto GK:End:ReturnIf K=9:{Str88+K-10}→{Str89+L:For(P,0,L:Output(P,0,{Str89+P}►Frac:End:L+1→L:End
HoMM: [==--------] Project 'resumed': I'm suffering overwhelming new ideas being popped up in my dreams :PtiDE: [----------] Explored and understood the main part of the code: just started writing a Tokenizer.