package Ġven us . simulator Ċ Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġven us . assembler . Assembler Ċ import Ġven us . linker . Link er Ċ import Ġven us . ris cv . Memory Segments Ċ Ċ class ĠStatic Data Test Ġ{ ĊĠĠĠ Ġ@ Test Ġfun Ġeasy Manual Load () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( prog , Ġ_) Ġ= ĠAs sembler . assemble (""" ĊĠĠĠĠĠĠĠ Ġ. data ĊĠĠĠĠĠĠĠ Ġ. byte Ġ 1 Ġ 2 Ġ 3 Ġ 4 ĊĠĠĠĠĠĠĠ Ġ. text ĊĠĠĠĠĠĠĠ Ġnop ĊĠĠĠĠĠĠĠ Ġ"" ") ĊĠĠĠĠĠĠĠ Ġval Ġlinked Ġ= ĠLink er . link ( listOf ( prog )) ĊĠĠĠĠĠĠĠ Ġval Ġsim Ġ= ĠSimulator ( linked ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġsim . load Byte ( Memory Segments . STATIC _ BEGIN )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġsim . load Byte ( Memory Segments . STATIC _ BEGIN Ġ+ Ġ 1 )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġsim . load Byte ( Memory Segments . STATIC _ BEGIN Ġ+ Ġ 2 )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġsim . load Byte ( Memory Segments . STATIC _ BEGIN Ġ+ Ġ 3 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġasci iz N ul Terminated () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( prog , Ġ_) Ġ= ĠAs sembler . assemble (""" ĊĠĠĠĠĠĠĠ Ġ. data ĊĠĠĠĠĠĠĠ Ġ. asci iz Ġ" a " ĊĠĠĠĠĠĠĠ Ġ. asci iz Ġ" b " ĊĠĠĠĠĠĠĠ Ġ"" ") ĊĠĠĠĠĠĠĠ Ġval Ġlinked Ġ= ĠLink er . link ( listOf ( prog )) ĊĠĠĠĠĠĠĠ Ġval Ġsim Ġ= ĠSimulator ( linked ) ĊĠĠĠĠĠĠĠ Ġval Ġoffset Ġ= ĠMemory Segments . STATIC _ BEGIN ĊĠĠĠĠĠĠĠ ĠassertEquals (' a '. code , Ġsim . load Byte ( offset )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġsim . load Byte ( offset Ġ+ Ġ 1 )) ĊĠĠĠĠĠĠĠ ĠassertEquals (' b '. code , Ġsim . load Byte ( offset Ġ+ Ġ 2 )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġsim . load Byte ( offset Ġ+ Ġ 3 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġlinked Static Bytes () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( prog 1 , Ġ_) Ġ= ĠAs sembler . assemble (""" ĊĠĠĠĠĠĠĠ Ġ. data ĊĠĠĠĠĠĠĠ Ġ. byte Ġ 1 ĊĠĠĠĠĠĠĠ Ġ"" ") ĊĠĠĠĠĠĠĠ Ġval Ġ( prog 2 , Ġ_) Ġ= ĠAs sembler . assemble (""" ĊĠĠĠĠĠĠĠ Ġ. data ĊĠĠĠĠĠĠĠ Ġ. byte Ġ 2 ĊĠĠĠĠĠĠĠ Ġ"" ") ĊĠĠĠĠĠĠĠ Ġval Ġlinked Ġ= ĠLink er . link ( listOf ( prog 1 , Ġprog 2 )) ĊĠĠĠĠĠĠĠ Ġval Ġsim Ġ= ĠSimulator ( linked ) ĊĠĠĠĠĠĠĠ Ġval Ġoffset Ġ= ĠMemory Segments . STATIC _ BEGIN ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġsim . load Byte ( offset )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġsim . load Byte ( offset Ġ+ Ġ 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġword Manual Load () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( prog , Ġ_) Ġ= ĠAs sembler . assemble (""" ĊĠĠĠĠĠĠĠ Ġ. data ĊĠĠĠĠĠĠĠ Ġ. word Ġ- 2 1 2 3 1 2 3 4 ĊĠĠĠĠĠĠĠ Ġ. text ĊĠĠĠĠĠĠĠ Ġnop ĊĠĠĠĠĠĠĠ Ġ"" ") ĊĠĠĠĠĠĠĠ Ġval Ġlinked Ġ= ĠLink er . link ( listOf ( prog )) ĊĠĠĠĠĠĠĠ Ġval Ġsim Ġ= ĠSimulator ( linked ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 2 1 2 3 1 2 3 4 , Ġsim . load Word ( Memory Segments . STATIC _ BEGIN )) ĊĠĠĠ Ġ} Ċ } Ċ