From 5ff8534b969f5ec68be3f10135668f18d1796aa1 Mon Sep 17 00:00:00 2001 From: kake26 Date: Tue, 30 Aug 2022 17:31:14 -0500 Subject: [PATCH] Initial add of original old code circa 2012 --- vm.pb | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 vm.pb diff --git a/vm.pb b/vm.pb new file mode 100644 index 0000000..8b2f0d0 --- /dev/null +++ b/vm.pb @@ -0,0 +1,55 @@ +; vm + +Structure opi +code.l +args.s +EndStructure + +; In theory this is a byte code interpreter +; Also mad science and may not work + + +Procedure writeblock (fid, *opco.opi) +; used by compile to write compiled code to file + WriteByte(fid, *opco\code) + WriteLong(fid, Len(*opco\args)) + WriteData(fid, @*opco\args, Len(*opco\args)) +EndProcedure + +Procedure readblock (fid, *opci.opi) +; should not need to be explained + *opci\code = ReadByte(fid) + *opci\args = Space(ReadLong(fid)) + ReadData(fid, @*opci\args, Len(*opci\args)) +EndProcedure + +;for demo purposes we hard wire the code + +opcobj.opi\code = $01 +opcobj.opi\args = "Hi world" + +; now write bytecode to file + +OpenFile(0,"test.byc") +writeblock(0, opcobj) +CloseFile(0) + +; now read + +OpenFile(1,"test.byc") +readblock(1, opcoobj.opi) +CloseFile(1) + +;run + +Select opcoobj\code + +Case $01 : MessageRequester("ouput",opcoobj\args) + +EndSelect + +; IDE Options = PureBasic 4.61 (Windows - x86) +; CursorPosition = 3 +; Folding = - +; EnableXP +; Executable = ..\Desktop\vm.exe \ No newline at end of file