EuroAssembler Index Manual Download Source Macros


Sitemap Links Forum Tests Projects

tlinf64.htm

This program will test macroinstructions defined in library linf64.htm.

Format
ELFX 64-bit
Platform
Linux 64-bit
Build
euroasm.exe tlinf64.htm
Run
./tlinf64.x
Expected output
This program tlinf64 will test macros from EuroAssembler library "maclib/linf64.htm". Testing FileAssign, FileMkDir ... tlinf64.dir/temp/AtOnce.txt passed. Testing FileNameParse: Path="tlinf64.dir/temp/", Name="AtOnce", Ext=".txt". Testing FileStore, FileLoad, FileDelete ... passed. Testing FileMove, FileDelete, FileExists? ... passed. Testing FileEnclose, FileEnclose$, FileEncloseLn ... passed. Testing FileOpen, FileCreate, FileRead, FileWrite, FileClose ... passed. Testing FileMapOpen, FileMapCreate ... passed. Testing FileStreamOpen, ~Create, ~Append, ~Read, ~Write ... passed. Testing FileEach: ls tlinf64.dir/temp/*.txt Mapped.txt Moved.txt Streamed.txt Written.txt Test tlinf64 terminated.
See also
tlinf32.htm.
        EUROASM CPU=X64
tlinf64 PROGRAM Format=ELFX, Width=64, Entry=Main:
         INCLUDE linabi.htm, linf64.htm, cpuext64.htm
[.data]
Mask$             D "*.txt",0
Passed$           D "passed.",10,0
Failed$           D "failed.",10,0
HexEAX            D "xxxxxxxx"
                  D B 0
TempPath$         D "%^PROGRAM.dir/temp/",0
AtOnceName$       D "AtOnce.txt",0
MovedName$        D "Moved.txt",0
DeletedName$      D "Deleted.txt",0
WrittenName$      D "Written.txt",0
MappedName$       D "Mapped.txt",0
StreamedName$     D "Streamed.txt",0
AtOnceText        D "This file was written by FileStore.",10,"It will be read by FileLoad and compared.",13,10
EncloseText       D "Line appended with FileEnclose.",10
Enclose$Text      D "Line appended with FileEnclose$.",10,0
EncloseLnText     D "Line appended with FileEncloseLn."
AppendedText      D "Line appended with FileAppend, FileWrite.",10
StreamWrite$Text  D "Line appended with FileStreamWrite$.",10,0
StreamWriteLnText D "Line appended with FileStreamWriteLn."
[.bss]
TestFile          DS FILE64
MovedFile         DS FILE64
DeletedFile       DS FILE64
WrittenFile       DS FILE64
MappedFile        DS FILE64
StreamFile        DS FILE64
EachFile          DS FILE64
DataBlock         D 16 * BYTE

[.text]
OnError %MACRO FileMacroName
        JNC .Skip%.:
        MOV RSI,="%FileMacroName"
        CALL OnError@RT
.Skip%.:
OnError@RT: PROC1
        StoH HexEAX
        StdOutput ="error.",Eol=Yes
        StdOutput RSI, =" returned CF=1, EAX=0x", HexEAX, Eol=Yes
        TerminateProgram 8
      ENDP1 OnError@RT
   %ENDMACRO OnError

Main: StdOutput ="This program %^PROGRAM will test macros from EuroAssembler library ""maclib/linf%^WIDTH.htm"".",Eol=Yes
      StdOutput ="Testing FileAssign, FileMkDir ... "
      FileAssign TestFile,TempPath$,AtOnceName$
      OnError FileAssign
      StdOutput TestFile.Name,Eol=Yes
      FileMkDir  TestFile
      OnError FileMkDir
      StdOutput Passed$
      StdOutput ="Testing FileNameParse: Path="""
      LEA RSI,[TestFile.Name]
      FileNameParse RSI
      PUSH RAX
        SUB RAX,RSI
        StdOutput RSI,Size=RAX
        StdOutput =""", Name="""
      POP RAX
      PUSH RCX
        SUB RCX,RAX
        StdOutput RAX,Size=RCX
        StdOutput =""", Ext="""
      POP RCX
      SUB RDX,RCX
      StdOutput RCX,Size=RDX
      StdOutput =""".",Eol=Yes

      StdOutput ="Testing FileStore, FileLoad, FileDelete ... "
      FileAssign TestFile,TempPath$,AtOnceName$
      OnError FileAssign
      FileStore  TestFile,AtOnceText,SIZE# AtOnceText
      OnError FileStore
      FileAssign DeletedFile,TempPath$,DeletedName$
      OnError FileAssign
      FileStore  DeletedFile,AtOnceText,SIZE# AtOnceText
      OnError FileStore
      FileLoad TestFile
      OnError FileLoad
      CMP RAX,SIZE# AtOnceText
      JNE .10:
      LEA RDI,[AtOnceText]
      MOV RCX,RAX
      REPNE CMPSB
      LEA RDX,[Passed$]
      JE .15:
.10:  LEA RDX,[Failed$]
.15:  StdOutput RDX
      FileClose TestFile

      StdOutput ="Testing FileMove, FileDelete, FileExists? ... "
      FileAssign MovedFile,TempPath$,MovedName$
      OnError FileAssign
      FileMove TestFile, MovedFile
      OnError FileMove
      FileExists? MovedFile
      LEA RDX,[Failed$]
      JC .20:
      FileDelete DeletedFile
      OnError FileDelete
      FileExists? DeletedFile
      JNC .20:
      LEA RDX,[Passed$]
.20:  StdOutput RDX

      StdOutput ="Testing FileEnclose, FileEnclose$, FileEncloseLn ... "
      FileEnclose MovedFile,EncloseText, SIZE# EncloseText
      OnError FileEnclose
      FileEnclose$ MovedFile,Enclose$Text
      OnError FileEnclose$
      FileEncloseLn MovedFile,EncloseLnText, SIZE# EncloseLnText
      OnError FileEncloseLn
      FileLoad MovedFile
      CMP RAX,SIZE#AtOnceText+SIZE#EncloseText+SIZE#Enclose$Text+SIZE#EncloseLnText
      LEA RDX,[Passed$]
      JE .30:
      LEA RDX,[Failed$]
.30:  StdOutput RDX

      StdOutput ="Testing FileOpen, FileCreate, FileRead, FileWrite, FileClose ... "
      FileOpen MovedFile
      OnError FileOpen
      FileAssign WrittenFile,TempPath$,WrittenName$
      OnError FileAssign
      FileCreate WrittenFile
      OnError FileCreate
.40:  FileRead MovedFile,DataBlock, SIZE# DataBlock
      JZ .50:
      OnError FileRead
      FileWrite WrittenFile,DataBlock,RAX
      OnError FileWrite
      JMP .40:
.50:  FileClose MovedFile, WrittenFile
      FileAppend WrittenFile
      OnError FileAppend
      MOV ECX,EAX
      FileWrite WrittenFile,AppendedText, SIZE# AppendedText
      OnError FileWrite
      ADD ECX,EAX
      FileClose WrittenFile
      FileOpen  WrittenFile
      OnError FileOpen
      CMP EAX,ECX
      LEA RDX,[Passed$]
      JE .60:
      LEA RDX,[Failed$]
.60:  StdOutput RDX
      FileClose WrittenFile

      StdOutput ="Testing FileMapOpen, FileMapCreate ... "
      FileMapOpen WrittenFile           ; Mapped contents is expected at RSI,RAX.
      OnError FileMapOpen
      MOV ECX,EAX
      FileAssign MappedFile,TempPath$,MappedName$
      OnError FileAssign
      FileMapCreate MappedFile,RCX      ; Returns empty contents at RDI,RAX.
      OnError FileMapCreate
      REP MOVSB
      FileClose WrittenFile, MappedFile ; MappedFile should be identical with WrittenFile now.
      StdOutput Passed$

      StdOutput ="Testing FileStreamOpen, ~Create, ~Append, ~Read, ~Write ... "
      FileStreamOpen MappedFile
      OnError FileStreamOpen
      MOV EBX,EAX                     ; File size.
      FileAssign StreamFile,TempPath$,StreamedName$
      OnError FileAssign
      FileStreamCreate StreamFile
      OnError FileStreamCreate
.70:  FileStreamReadLn MappedFile
      OnError FileStreamReadLn
      JZ .80:
      MOV ECX,EAX
      FileStreamWrite StreamFile,RSI,RCX
      OnError FileStreamWrite
      JMP .70:
.80:  FileStreamWrite$ StreamFile,StreamWrite$Text
      OnError FileStreamWrite$
      FileStreamWriteLn StreamFile,StreamWriteLnText, SIZE# StreamWriteLnText
      OnError FileStreamWriteLn
      FileClose MappedFile, StreamFile
      ADD EBX,SIZE# StreamWrite$Text + SIZE# StreamWriteLnText
      FileStreamAppend StreamFile
      OnError FileStreamAppend
      CMP EAX,EBX
      JNE .90:
      MOV EAX,'DDDD'
      FileStreamWriteDword StreamFile
      OnError FileStreamWriteDword
      MOV AX,'WW'
      FileStreamWriteWord StreamFile
      OnError FileStreamWriteWord
      MOV AL,'B'
      FileStreamWriteByte StreamFile
      OnError FileStreamWriteByte
      ADD EBX,SIZE# EAX + SIZE# AX + SIZE# AL
      LEA RDX,[Passed$]
      CMP EBX,[StreamFile.Size]
      JE .95:
.90:  LEA RDX,[Failed$]
.95:  StdOutput RDX
      FileClose StreamFile

      StdOutput ="Testing FileEach: ls ",TempPath$,Mask$,Eol=Yes
      FileAssign EachFile,TempPath$,Mask$
      OnError FileAssign
      FileEach EachFile,DirProc:
DirProc:PROC1
         StdOutput RSI, Eol=Yes
         RET
        ENDP1 DirProc:
      StdOutput ="Test %^PROGRAM terminated.",Eol=Yes
      TerminateProgram
    ENDPROGRAM tlinf64

▲Back to the top▲