📄 stdproc.asm
字号:
Invoke PushStringExpr
Invoke NeedCParen
Invoke UseExpr
pop ax
Invoke PutSystemCall
Invoke CheckIOResult
Invoke DoneGoal
Exit
_ChDir endp
_Assign proc near
Loc F,byte,<size TExpr>
Loc S,byte,<size TExpr>
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,<size TExpr>
Loc Buf,byte,<size TExpr>
Loc _Size,byte,<size TExpr>
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,<size TExpr>
Loc Recsize,byte,<size TExpr>
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,<size TExpr>
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,<size TExpr>
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,<size TExpr>
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,<size TExpr>
Loc N,byte,<size TExpr>
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,<size TExpr>
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,<size TExpr>
Loc Newname,byte,<size TExpr>
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,<size TExpr>
Loc Buf,byte,<size TExpr>
Loc Count,byte,<size TExpr>
Loc Result,byte,<size TExpr>
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,<size TExpr>
Loc _Width,byte,<size TExpr>
Loc Decimals,byte,<size TExpr>
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,<size TExpr>
Loc Result,byte,<size TExpr>
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,<size TExpr>
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -