www.pudn.com > tp60src.zip > STDPROC.ASM
model large compiler_text,pascal include compiler.inc .code compiler_text public StdProcedure public _New StdProcedure proc near Invoke GetToken les bx,CurrentSymbol mov bx,es:[bx] and bx,not(fnNeed8087+fnImmediate) mov ax,cs:@@1[bx+2] jmp cs:@@1[bx] @@1 dw _NewProc,0 dw _Write,_WriteEnd dw _Write,_WriteLine dw _Read,_ReadEnd dw _Read,_ReadLine dw _Dispose,0 dw _Mark,_MarkPtr dw _Mark,_ReleasePtr dw _Insert,0 dw _Delete,0 dw _Assign,0 dw _Reset,_ResetFile dw _Reset,_RewriteFile dw _Close,0 dw _Seek,0 dw _Erase,0 dw _Rename,0 dw _Halt,_HaltTurbo dw _Exit,0 dw _GetMem,0 dw _FreeMem,0 dw _Truncate,0 dw _FillChar,0 dw _Move,0 dw _Randomize,0 dw _Str,0 dw _Val,0 dw _GetDir,0 dw _ChDir,_DirSet dw _ChDir,_DirCreate dw _ChDir,_DirRemove dw _Append,_AppendText dw _Append,_FlushText dw _Inc,0 dw _Inc,828h dw _BlockRead,_ReadBlock dw _BlockRead,_WriteBlock dw _SetTextBuf,0 dw _Halt,_HaltError dw _Fail,0 StdProcedure endp Loc _Code,byte,_Halt proc near Entry push ax Invoke CheckOParen jnz @@1 lea di,_Code Invoke GetIntExpr Invoke CastWord Invoke NeedCParen Invoke UseExpr mov al,lvAX Invoke LoadValue jmp short @@2 @@1: mov ax,0c031h ; xor ax,ax Invoke PutWord @@2: pop ax Invoke PutSystemCall Invoke DoneGoal Exit _Halt endp _Exit proc near mov al,cdAlways lea bx,ExitChain Invoke PutJmp Chain DoneGoal _Exit endp _Fail proc near mov es,Dictionary.segm mov di,CurProc test es:[di].psFlags,pfConstructor jz @@1 mov al,cdAlways lea bx,FailChain Invoke PutJmp Chain DoneGoal @@1: mov ax,154 Chain CompileError _Fail endp _Inc proc near Loc X,byte, Loc N,byte, Entry push ax Invoke NeedOParen lea di,X Invoke GetReference les bx,[di].exType mov cx,1 cmp es:[bx].tdType,ttInteger jae @@1 cmp es:[bx].tdType,ttPointer jne @@2 mov si,es:[bx].ptBase.Segm mov bx,es:[bx].ptBase.Offs mov es,es:[si] mov cx,es:[bx].tdSizeOf jcxz @@2 mov [di].exModifier,emWord @@1: lea di,N Invoke CheckComma jz @@3 mov [di].exCode,0 mov [di].exLocation,elImmediate mov [di].exValue.W0,cx mov [di].exValue.W2,0 jmp short @@5 @@2: mov ax,104 Chain CompileError @@3: push cx Invoke GetIntExpr Invoke LoadAddress mov al,X.exModifier Invoke ConvertOrdinal pop cx cmp cx,1 je @@5 cmp [di].exLocation,elImmediate jne @@4 mov ax,[di].exValue.W0 mul cx mov [di].exValue.W0,ax jmp short @@5 @@4: Invoke UseExpr mov al,lvAX Invoke Scale Invoke DoneExpr @@5: Invoke NeedCParen pop dx lea di,X lea si,N Invoke Increment mov si,di Invoke CastOrdinal mov ax,[di].exCode Exit _Inc endp _FillChar proc near Loc X,byte, Loc Count,byte, Loc Value,byte, Entry Invoke NeedOParen lea di,X Invoke PushReference Invoke NeedComma lea di,Count Invoke GetIntExpr Invoke CastWord Invoke PushValue Invoke NeedComma lea di,Value Invoke GetOrdExpr Invoke CastByte Invoke PushValue Invoke NeedCParen mov ax,X.exCode Invoke UseGoal mov ax,Count.exCode Invoke UseGoal mov ax,Value.exCode Invoke UseGoal mov ax,_FillMem Invoke PutSystemCall Invoke DoneGoal Exit _FillChar endp _Move proc near Loc Source,byte, Loc Dest,byte, Loc Count,byte, Entry Invoke NeedOParen lea di,Source Invoke PushReference Invoke NeedComma lea di,Dest Invoke PushReference Invoke NeedComma lea di,Count Invoke GetIntExpr Invoke CastWord Invoke PushValue Invoke NeedCParen mov ax,Source.exCode Invoke UseGoal mov ax,Dest.exCode Invoke UseGoal mov ax,Count.exCode Invoke UseGoal mov ax,_MoveMem Invoke PutSystemCall Invoke DoneGoal Exit _Move endp _Randomize proc near mov ax,_InitRand Invoke PutSystemCall Chain DoneGoal _Randomize endp _NewProc proc near Loc P,byte, Loc Init,byte, Entry Invoke NeedOParen lea di,P Invoke GetPtrRef lea di,Init Invoke _New Invoke NeedCParen mov si,di lea di,P Invoke Store mov ax,[di].exCode Exit _NewProc endp _New proc near push es bx mov si,es:[bx].ptBase.Segm mov bx,es:[bx].ptBase.Offs mov es,es:[si] cmp es:[bx].tdType,ttObject jne @@1 mov al,tComma Invoke CheckToken jnz @@1 xor ax,ax mov [di].exCode,ax mov [di].exRegsUsed,al mov ax,emNewConstruct+pfConstructor*256 mov dx,152 Invoke _GetMethod Invoke PutCall jmp short @@2 @@1: mov ax,es:[bx].tdSizeOf Invoke PushWord mov ax,_NewPtr Invoke PutSystemCall Invoke DoneExpr @@2: pop [di].exType mov [di].exLocation,elRegister mov [di].exModifier,emLongint mov [di].exRegsUsed,erAll mov [di].exMisc,lvAX ret _New endp _Dispose proc near Loc P,byte, Loc Done,byte, Entry Invoke NeedOParen lea di,P Invoke GetPtrExpr mov si,es:[bx].ptBase.Segm mov bx,es:[bx].ptBase.Offs mov es,es:[si] cmp es:[bx].tdType,ttObject jne @@1 mov al,tComma Invoke CheckToken jnz @@1 push es bx Invoke LoadPtr pop bx es mov ax,emDisposeDestr+pfDestructor*256 mov dx,153 Invoke _GetMethod Invoke PutCall jmp short @@2 @@1: push es:[bx].tdSizeOf Invoke UseExpr Invoke PutPush pop ax Invoke PushWord mov ax,_DisposePtr Invoke PutSystemCall Invoke DoneExpr @@2: Invoke NeedCParen mov ax,[di].exCode Exit _Dispose endp _GetMem proc near Loc P,byte, Loc _Size,byte, Entry Invoke NeedOParen lea di,P Invoke GetPtrRef Invoke NeedComma lea di,_Size Invoke GetIntExpr Invoke CastWord Invoke NeedCParen Invoke UseExpr Invoke PutPush mov ax,_NewPtr Invoke PutSystemCall Invoke DoneExpr mov [di].exLocation,elRegister mov [di].exModifier,emLongint mov [di].exRegsUsed,erAll mov [di].exMisc,lvAX Invoke CastPointer mov si,di lea di,P Invoke Store mov ax,[di].exCode Exit _GetMem endp _FreeMem proc near Loc P,byte, Loc _Size,byte, Entry Invoke NeedOParen lea di,P Invoke GetPtrExpr Invoke NeedComma lea di,_Size Invoke GetIntExpr Invoke CastWord Invoke NeedCParen lea di,P Invoke UseExpr Invoke PutPush lea di,_Size Invoke UseExpr Invoke PutPush mov ax,_DisposePtr Invoke PutSystemCall Invoke DoneGoal Exit _FreeMem endp _Mark proc near Loc P,byte, Entry push ax Invoke NeedOParen lea di,P Invoke GetPtrRef Invoke PushAddr Invoke NeedCParen mov ax,P.exCode Invoke UseGoal pop ax Invoke PutSystemCall Invoke DoneGoal Exit _Mark endp _Insert proc near Loc Source,byte, Loc S,byte, Loc Index,byte, Entry Invoke NeedOParen lea di,Source Invoke PushStringExpr Invoke NeedComma lea di,S Invoke PushStringRef Invoke NeedComma lea di,Index Invoke GetIntExpr Invoke CastInt Invoke PushValue Invoke NeedCParen mov ax,Source.exCode Invoke UseGoal mov ax,S.exCode Invoke UseGoal les bx,S.exType mov ax,es:[bx].tdSizeOf dec ax Invoke PushWord mov ax,Index.exCode Invoke UseGoal mov ax,_SInsert Invoke PutSystemCall Invoke DoneGoal Exit _Insert endp _Delete proc near Loc S,byte, Loc Index,byte, Loc Count,byte, Entry Invoke NeedOParen lea di,S Invoke PushStringRef Invoke NeedComma lea di,Index Invoke GetIntExpr Invoke CastInt Invoke PushValue Invoke NeedComma lea di,Count Invoke GetIntExpr Invoke CastInt Invoke PushValue Invoke NeedCParen mov ax,S.exCode Invoke UseGoal mov ax,Index.exCode Invoke UseGoal mov ax,Count.exCode Invoke UseGoal mov ax,_SDelete Invoke PutSystemCall Invoke DoneGoal Exit _Delete endp _Str proc near Loc X,byte, Loc _Width,byte, Loc Decimals,byte, Loc S,byte, Entry Invoke NeedOParen lea di,X Invoke GetNumExpr mov al,es:[bx].tdType cmp al,ttInteger je @@2 test CompilerOptions,co8087 jz @@1 Invoke ConvReal2Ext Invoke PushExt lea di,_Width mov ax,23 Invoke FormatModifier lea di,Decimals mov ax,-1 Invoke FormatModifier mov ax,_StrFloat+fnNeed8087 jmp short @@3 @@1: Invoke ConvExt2Real Invoke PushReal lea di,_Width mov ax,17 Invoke FormatModifier lea di,Decimals mov ax,-1 Invoke FormatModifier mov ax,_StrReal jmp short @@3 @@2: Invoke CastLong Invoke PushValue lea di,_Width xor ax,ax Invoke FormatModifier mov Decimals.exCode,0 mov ax,_StrInt @@3: push ax Invoke NeedComma lea di,S Invoke PushStringRef Invoke NeedCParen mov ax,X.exCode Invoke UseGoal mov ax,_Width.exCode Invoke UseGoal mov ax,Decimals.exCode Invoke UseGoal mov ax,S.exCode Invoke UseGoal les bx,S.exType mov ax,es:[bx].tdSizeOf dec ax Invoke PushWord pop ax Invoke PutSystemCall Invoke DoneGoal Exit _Str endp _Val proc near Loc S,byte, Loc V,byte, Loc Code,byte, Entry Invoke NeedOParen lea di,S Invoke PushStringExpr Invoke NeedComma lea di,V Invoke GetReference Invoke CastReal2Ext mov dx,_ValInt cmp al,ttInteger je @@1 mov dx,_ValFloat+fnNeed8087 cmp al,tt8087 je @@1 mov dx,_ValReal cmp al,ttReal je @@1 mov ax,103 Chain CompileError @@1: push ax dx Invoke NeedComma lea di,Code Invoke PushIntRef Invoke NeedCParen lea di,S Invoke UseExpr mov ax,Code.exCode Invoke UseGoal pop ax Invoke PutSystemCall Invoke DoneExpr pop ax cmp al,ttInteger je @@3 cmp al,ttReal je @@2 mov [di].exLocation,elStack mov [di].exModifier,emExtended Invoke CastExtended jmp short @@4 @@2: mov [di].exLocation,elRegister mov [di].exModifier,emReal Invoke CastReal jmp short @@4 @@3: mov [di].exLocation,elRegister mov [di].exModifier,emLongint mov [di].exMisc,lvAX Invoke CastLongint @@4: mov [di].exRegsUsed,erAll lea si,V Invoke AssignmentCast Invoke CastOrdinal xchg si,di Invoke Store mov ax,[di].exCode Exit _Val endp _GetDir proc near Loc D,byte, Loc S,byte, Entry Invoke NeedOParen lea di,D Invoke GetIntExpr Invoke CastByte Invoke PushValue Invoke NeedComma lea di,S Invoke PushStringRef Invoke NeedCParen mov ax,D.exCode Invoke UseGoal mov ax,S.exCode Invoke UseGoal les bx,S.exType mov ax,es:[bx].tdSizeOf dec ax Invoke PushWord mov ax,_DirGet Invoke PutSystemCall Invoke DoneGoal Exit _GetDir endp _ChDir proc near Loc S,byte, Entry push ax Invoke NeedOParen lea di,S Invoke PushStringExpr Invoke NeedCParen Invoke UseExpr pop ax Invoke PutSystemCall Invoke CheckIOResult Invoke DoneGoal Exit _ChDir endp _Assign proc near Loc F,byte, Loc S,byte, Entry Invoke NeedOParen lea di,F Invoke PushFileRef Invoke NeedComma lea di,S Invoke PushStringExpr Invoke NeedCParen mov ax,F.exCode Invoke UseGoal mov ax,S.exCode Invoke UseGoal mov ax,_AssignFile les bx,F.exType cmp es:[bx].tdType,ttFile je @@1 mov ax,_AssignText @@1: Invoke PutSystemCall Invoke DoneGoal Exit _Assign endp _SetTextBuf proc near Loc F,byte, Loc Buf,byte, Loc _Size,byte, Entry Invoke NeedOParen lea di,F Invoke PushFileRef cmp es:[bx].tdType,ttText jne @@3 Invoke NeedComma lea di,Buf Invoke PushReference lea di,_Size Invoke CheckComma jnz @@1 Invoke GetIntExpr Invoke CastWord Invoke PushValue jmp short @@2 @@1: mov ax,es:[bx].tdSizeOf Invoke PushWord Invoke DoneExpr @@2: Invoke NeedCParen mov ax,F.exCode Invoke UseGoal mov ax,Buf.exCode Invoke UseGoal mov ax,_Size.exCode Invoke UseGoal mov ax,_BufferText Invoke PutSystemCall Invoke CheckIOResult Invoke DoneGoal Exit @@3: mov ax,63 Chain CompileError _SetTextBuf endp _Reset proc near Loc F,byte, Loc Recsize,byte, Entry push ax Invoke NeedOParen lea di,F Invoke PushFileRef lea di,Recsize mov [di].exCode,0 cmp es:[bx].tdType,ttText je @@3 cmp es:[bx].ftBase.Offs,0 jne @@1 Invoke CheckComma mov ax,128 jnz @@2 Invoke GetIntExpr Invoke CastWord Invoke PushValue jmp short @@3 @@1: mov ax,es:[bx].ftBase.Offs mov bx,es:[bx].ftBase.Segm mov es,es:[bx] mov bx,ax mov ax,es:[bx].tdSizeOf @@2: Invoke PushWord Invoke DoneExpr @@3: Invoke NeedCParen mov ax,F.exCode Invoke UseGoal mov ax,Recsize.exCode Invoke UseGoal pop ax les bx,F.exType cmp es:[bx].tdType,ttFile je @@4 add ax,_ResetText-_ResetFile @@4: Invoke PutSystemCall Invoke CheckIOResult Invoke DoneGoal Exit _Reset endp _Append proc near Loc F,byte, Entry push ax Invoke NeedOParen lea di,F Invoke PushFileRef cmp es:[bx].tdType,ttText jne @@1 Invoke NeedCParen mov ax,F.exCode Invoke UseGoal pop ax Invoke PutSystemCall Invoke CheckIOResult Invoke DoneGoal Exit @@1: mov ax,63 Chain CompileError _Append endp _Truncate proc near Loc F,byte, Entry Invoke NeedOParen lea di,F Invoke PushFileRef cmp es:[bx].tdType,ttFile jne @@1 Invoke NeedCParen mov ax,F.exCode Invoke UseGoal mov ax,_TruncFile Invoke PutSystemCall Invoke CheckIOResult Invoke DoneGoal Exit @@1: mov ax,63 Chain CompileError _Truncate endp _Close proc near Loc F,byte, Entry Invoke NeedOParen lea di,F Invoke PushFileRef Invoke NeedCParen mov ax,F.exCode Invoke UseGoal mov ax,_CloseFile les bx,F.exType cmp es:[bx].tdType,ttFile je @@1 mov ax,_CloseText @@1: Invoke PutSystemCall Invoke CheckIOResult Invoke DoneGoal Exit _Close endp _Seek proc near Loc F,byte, Loc N,byte, Entry Invoke NeedOParen lea di,F Invoke PushFileRef cmp es:[bx].tdType,ttFile jne @@1 Invoke NeedComma lea di,N Invoke GetIntExpr Invoke CastLong Invoke PushValue Invoke NeedCParen mov ax,F.exCode Invoke UseGoal mov ax,N.exCode Invoke UseGoal mov ax,_SeekFile Invoke PutSystemCall Invoke CheckIOResult Invoke DoneGoal Exit @@1: mov ax,63 Chain CompileError _Seek endp _Erase proc near Loc F,byte, Entry Invoke NeedOParen lea di,F Invoke PushFileRef Invoke NeedCParen mov ax,F.exCode Invoke UseGoal mov ax,_EraseFile Invoke PutSystemCall Invoke CheckIOResult Invoke DoneGoal Exit _Erase endp _Rename proc near Loc F,byte, Loc Newname,byte, Entry Invoke NeedOParen lea di,F Invoke PushFileRef Invoke NeedComma lea di,Newname Invoke PushStringExpr Invoke NeedCParen mov ax,F.exCode Invoke UseGoal mov ax,Newname.exCode Invoke UseGoal mov ax,_RenameFile Invoke PutSystemCall Invoke CheckIOResult Invoke DoneGoal Exit _Rename endp _BlockRead proc near Loc F,byte, Loc Buf,byte, Loc Count,byte, Loc Result,byte, Entry push ax Invoke NeedOParen lea di,F Invoke PushFileRef cmp es:[bx].tdType,ttFile jne @@3 cmp es:[bx].ftBase.Offs,0 jne @@3 Invoke NeedComma lea di,Buf Invoke PushReference Invoke NeedComma lea di,Count Invoke GetIntExpr Invoke CastWord Invoke PushValue lea di,Result Invoke CheckComma jz @@1 mov ax,0c031h ; xor ax,ax Invoke PutWord mov ax,5050h ; push ax push ax Invoke PutWord Invoke DoneExpr jmp short @@2 @@1: Invoke PushIntRef @@2: Invoke NeedCParen mov ax,F.exCode Invoke UseGoal mov ax,Buf.exCode Invoke UseGoal mov ax,Count.exCode Invoke UseGoal mov ax,Result.exCode Invoke UseGoal pop ax Invoke PutSystemCall Invoke CheckIOResult Invoke DoneGoal Exit @@3: mov ax,63 Chain CompileError _BlockRead endp _Write proc near Loc StoredCall,word,1 Loc File,word,1 Loc Value,byte, Loc _Width,byte, Loc Decimals,byte, Loc Buffer,word,64 Entry mov StoredCall,ax mov File,0 mov Buffer[0],0 Invoke CheckOParen jz @@1 jmp @@16 @@1: lea di,Value Invoke GetExpr les bx,[di].exType cmp es:[bx].tdType,ttFile je @@2 cmp es:[bx].tdType,ttText jne @@5 @@2: Invoke PushAddr mov ax,[di].exCode les bx,[di].exType cmp es:[bx].tdType,ttFile je @@3 mov File,ax jmp @@14 @@3: mov cx,StoredCall mov dx,_WriteFile Invoke RWTypedFile jmp @@17 @@4: lea di,Value Invoke GetExpr @@5: Invoke LoadPackedChar mov Decimals.exCode,0 les bx,[di].exType mov al,es:[bx].tdType cmp al,ttString jne @@6 Invoke PutImmedString Invoke PushAddr lea di,_Width xor ax,ax Invoke FormatModifier mov ax,_WriteStr jmp @@13 @@6: cmp al,tt8087 je @@7 cmp al,ttReal jne @@9 @@7: test CompilerOptions,co8087 jz @@8 Invoke ConvReal2Ext Invoke PushExt lea di,_Width mov ax,23 Invoke FormatModifier lea di,Decimals mov ax,-1 Invoke FormatModifier mov ax,_WriteFloat+fnNeed8087 jmp short @@13 @@8: Invoke ConvExt2Real Invoke PushReal lea di,_Width mov ax,17 Invoke FormatModifier lea di,Decimals mov ax,-1 Invoke FormatModifier mov ax,_WriteReal jmp short @@13 @@9: cmp al,ttInteger jne @@10 Invoke CastLong Invoke PushValue lea di,_Width xor ax,ax Invoke FormatModifier mov ax,_WriteInt jmp short @@13 @@10: cmp al,ttBoolean jne @@11 Invoke PushValue lea di,_Width xor ax,ax Invoke FormatModifier mov ax,_WriteBool jmp short @@13 @@11: cmp al,ttChar jne @@12 Invoke PushValue lea di,_Width xor ax,ax Invoke FormatModifier mov ax,_WriteChar jmp short @@13 @@12: mov ax,64 Chain CompileError @@13: push ax mov ax,Value.exCode Invoke UseGoal mov ax,_Width.exCode Invoke UseGoal mov ax,Decimals.exCode Invoke UseGoal pop ax Invoke PutSystemCall Invoke DoneGoal lea bx,Buffer Invoke AddGoal @@14: Invoke CheckComma jnz @@15 jmp @@4 @@15: Invoke NeedCParen @@16: mov ax,File mov dx,_Output Invoke DefaultFile lea bx,Buffer Invoke FlushGoals mov ax,StoredCall Invoke PutSystemCall Invoke CheckIOResult Invoke DoneGoal @@17: Exit _Write endp _Read proc near Loc StoredCall,word,1 Loc File,word,1 Loc Value,byte, Loc Result,byte, Loc Buffer,word,64 Entry mov StoredCall,ax mov File,0 mov Buffer[0],0 Invoke CheckOParen jz @@1 jmp @@15 @@1: lea di,Value Invoke GetReference les bx,[di].exType cmp es:[bx].tdType,ttFile je @@2 cmp es:[bx].tdType,ttText jne @@5 @@2: Invoke PushAddr mov ax,[di].exCode les bx,[di].exType cmp es:[bx].tdType,ttFile je @@3 mov File,ax jmp @@13 @@3: mov cx,StoredCall mov dx,_ReadFile Invoke RWTypedFile jmp @@16 @@4: lea di,Value Invoke GetReference @@5: Invoke CastReal2Ext cmp al,ttString jne @@6 Invoke PushAddr Invoke UseExpr les bx,[di].exType mov ax,es:[bx].tdSizeOf dec ax Invoke PushWord mov ax,_ReadStr Invoke PutSystemCall Invoke DoneGoal jmp @@12 @@6: lea di,Result cmp al,tt8087 jne @@7 mov [di].exType.Offs,_Extended mov [di].exLocation,elStack mov [di].exModifier,emExtended mov ax,_ReadFloat+fnNeed8087 jmp short @@11 @@7: cmp al,ttReal jne @@8 mov [di].exType.Offs,_Real mov [di].exLocation,elRegister mov [di].exModifier,emReal mov ax,_ReadReal jmp short @@11 @@8: cmp al,ttInteger jne @@9 mov [di].exType.Offs,_Longint mov [di].exLocation,elRegister mov [di].exModifier,emLongint mov [di].exMisc,lvAX mov ax,_ReadInt jmp short @@11 @@9: cmp al,ttChar jne @@10 mov [di].exType.Offs,_Char mov [di].exLocation,elRegister mov [di].exModifier,emByte mov [di].exMisc,lvAX mov ax,_ReadChar jmp short @@11 @@10: mov ax,64 Chain CompileError @@11: Invoke PutSystemCall Invoke DoneExpr mov ax,SystemUnit mov [di].exType.Segm,ax mov [di].exRegsUsed,erAll lea si,Value Invoke AssignmentCast Invoke CastOrdinal xchg si,di Invoke Store mov ax,[di].exCode @@12: lea bx,Buffer Invoke AddGoal @@13: Invoke CheckComma jnz @@14 jmp @@4 @@14: Invoke NeedCParen @@15: mov ax,File mov dx,_Input Invoke DefaultFile lea bx,Buffer Invoke FlushGoals mov ax,StoredCall Invoke PutSystemCall Invoke CheckIOResult Invoke DoneGoal @@16: Exit _Read endp RWTypedFile proc near Loc File,word,1 Loc RWProc,word,1 Loc BaseType,dword,1 Loc Value,byte, Loc Buffer,word,64 Entry mov File,ax mov RWProc,dx cmp cx,_ReadLine je @@2 cmp cx,_WriteLine je @@2 cmp es:[bx].ftBase.Offs,0 je @@2 mov ax,es:[bx].ftBase.Offs mov bx,es:[bx].ftBase.Segm mov bx,es:[bx] mov BaseType.Offs,ax mov BaseType.Segm,bx mov Buffer[0],0 Invoke NeedComma @@1: lea di,Value Invoke PushReference cmp bx,BaseType.Offs jne @@3 mov dx,es cmp dx,BaseType.Segm jne @@3 Invoke UseExpr mov ax,RWProc Invoke PutSystemCall Invoke DoneGoal lea bx,Buffer Invoke AddGoal Invoke CheckComma jz @@1 Invoke NeedCParen mov ax,File Invoke UseGoal lea bx,Buffer Invoke FlushGoals mov ax,0c483h ; add sp,4 Invoke PutWord mov al,4 Invoke PutByte Invoke CheckIOResult Invoke DoneGoal Exit @@2: mov ax,63 Chain CompileError @@3: mov ax,26 Chain CompileError RWTypedFile endp FormatModifier proc near push ax mov al,tColon Invoke CheckToken pop ax jnz @@1 Invoke GetIntExpr Invoke CastInt Chain PushValue @@1: Invoke PushWord Chain DoneExpr FormatModifier endp end