This program will test macroinstructions defined in library linf32.htm.
EUROASM debug=on tlinf32 PROGRAM Format=ELFX, Width=32, Entry=Main: INCLUDE linapi.htm, linf32.htm, cpuext32.htm [.data] 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 DB "This file was written by FileStore.",10,"It will be read by FileLoad and compared.",13,10 EncloseText DB "Line appended with FileEnclose.",10 Enclose$Text DB "Line appended with FileEnclose$.",10,0 EncloseLnText DB "Line appended with FileEncloseLn." AppendedText DB "Line appended with FileAppend, FileWrite.",10 StreamWrite$Text DB "Line appended with FileStreamWrite$.",10,0 StreamWriteLnText DB "Line appended with FileStreamWriteLn." [.bss] TestFile DS FILE MovedFile DS FILE DeletedFile DS FILE WrittenFile DS FILE MappedFile DS FILE StreamFile DS FILE [.text] OnError %MACRO FileMacroName JNC .Skip%.: MOV ESI,="%FileMacroName" CALL OnError@RT .Skip%.: OnError@RT: PROC1 StoH HexEAX StdOutput ="error.",Eol=Yes StdOutput ESI, =" 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$ StdOutput TestFile.Name,Eol=Yes OnError FileAssign FileMkDir TestFile OnError FileMkDir StdOutput Passed$ StdOutput ="Testing FileNameParse: Path=""" MOV ESI,TestFile.Name FileNameParse ESI PUSH EAX SUB EAX,ESI StdOutput ESI,Size=EAX StdOutput =""", Name=""" POP EAX PUSH ECX SUB ECX,EAX StdOutput EAX,Size=ECX StdOutput =""", Ext=""" POP ECX SUB EDX,ECX StdOutput ECX,Size=EDX 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 EAX,SIZE# AtOnceText JNE .10: MOV EDI,AtOnceText MOV ECX,EAX REPNE CMPSB MOV EDX,Passed$ JE .15: .10: MOV EDX,Failed$ .15: StdOutput EDX FileClose TestFile StdOutput ="Testing FileMove, FileDelete, FileExists? ... " FileAssign MovedFile,TempPath$,MovedName$ OnError FileAssign FileMove TestFile, MovedFile OnError FileMove FileExists? MovedFile MOV EDX,Failed$ JC .20: FileDelete DeletedFile OnError FileDelete FileExists? DeletedFile JNC .20: MOV EDX,Passed$ .20: StdOutput EDX 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 EAX,SIZE#AtOnceText+SIZE#EncloseText+SIZE#Enclose$Text+SIZE#EncloseLnText MOV EDX,Passed$ JE .30: MOV EDX,Failed$ .30: StdOutput EDX StdOutput ="Testing FileOpen, FileCreate, FileRead, FileWrite, FileClose ... " FileOpen MovedFile OnError FileOpen FileAssign WrittenFile,TempPath$,WrittenName$ OnError FileAssign FileCreate WrittenFile OnError FileCreate 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 MOV EDX,Passed$ JE .60: MOV EDX,Failed$ .60: StdOutput EDX FileClose WrittenFile StdOutput ="Testing FileMapOpen, FileMapCreate ... " FileMapOpen WrittenFile ; Mapped contents is expected at ESI,EAX. OnError FileMapOpen MOV ECX,EAX FileAssign MappedFile,TempPath$,MappedName$ OnError FileAssign FileMapCreate MappedFile,ECX ; Returns empty contents at EDI,EAX. OnError FileMapCreate REP MOVSB FileClose WrittenFile , MappedFile ; MappedFile should be identical with WrittenFile. 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,ESI,ECX 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 MOV EDX,Passed$ CMP EBX,[StreamFile.Size] JE .95: .90: MOV EDX,Failed$ .95: StdOutput EDX FileClose StreamFile StdOutput ="Test %^PROGRAM terminated.",Eol=Yes TerminateProgram ENDPROGRAM tlinf32