; Goes somewhere else and reads a file by a bare name once it is there. ; ; This exists to prove two things the shell promises and nothing else could test. First ; that osChangeDir works: the file it prints is named with no path at all, so the only way ; to reach it is to be standing in the right place. Second that the shell puts the working ; directory back afterwards: the prompt after this returns says where the shell was, not ; where this went. ; ; Written by Anachronaut #Include services.asm #Program #Base 0x4000 start: ; Where to go is the argument. Nothing else about this program says a directory name, so ; running it anywhere else moves it anywhere else. SETD.0 Where INIB 0d63 SWI osArgument SETD.0 Where LDA.0 BRA noWhere SETD.0 Where SWI osChangeDir BNQ noSuchPlace SETD.0 Went SWI osPrintString ; And now a bare name, which means nothing until you are somewhere. SETD.0 Bare CALL fileStreamOpen BNQ noFile wanderBlock: CALL fileStreamNext BNQ noFile PSHD.3 POPB POPA SETD.2 Left STA.2 INCD.2 STB.2 SETD.2 Left LDA.2 INCD.2 LDB.2 OR BRQ wanderDone SETD.0 FileStreamBlock SETD.2 Left INCD.2 LDB.2 wanderByte: LDA.0 OUTA 0x00 INCD.0 DECB BNB wanderByte BRI wanderBlock wanderDone: RSTA SWI osExit noWhere: SETD.0 NoWhereText SWI osPrintString INIA 0d1 SWI osExit noSuchPlace: SETD.0 NoPlaceText SWI osPrintString INIA 0d1 SWI osExit noFile: SETD.0 NoFileText SWI osPrintString INIA 0d1 SWI osExit #Data #Base 0x2000 Where: #Reserve 0d64 Left: 0x00 0x00 Went: "moved, and reading a bare name from there: " NoWhereText: "wander where? " NoPlaceText: "cannot go there " NoFileText: "nothing of that name here " Bare: "notes.txt" #Include fileStream.asm