package Ġr azor v ine . k sim 6 5 . components Ċ Ċ /** Ċ Ġ* ĠA Ġsimple Ġparallel Ġoutput Ġdevice Ġ( basic ally , Ġprints Ġbytes Ġas Ġcharacters Ġto Ġthe Ġconsole ) Ċ Ġ* Ċ Ġ* Ġreg . ĠĠ Ġvalue Ċ Ġ* Ġ---- ĠĠ Ġ--------- Ċ Ġ* ĠĠ 0 0 ĠĠĠ Ġdata Ġ( the Ġ 8 Ġparallel Ġbits ) Ċ Ġ* ĠĠ 0 1 ĠĠĠ Ġcontrol Ġl atch Ġ( set Ġbit Ġ 0 Ġto Ġwrite Ġthe Ġdata Ġbyte ) Ċ Ġ*/ Ċ class ĠParallel Port ( start Address : ĠAddress , Ġend Address : ĠAddress ) Ġ: ĠMem Mapped Component ( start Address , Ġend Address ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġdata Byte : ĠU Byte Ġ= Ġ 0 ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( end Address - start Address + 1 Ġ== Ġ 2 ) Ġ{ Ġ" parallel Ġneeds Ġexactly Ġ 2 Ġmemory Ġbytes Ġ( data Ġ+ Ġcontrol )" Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclock () Ġ{} ĊĠĠĠ Ġoverride Ġfun Ġreset () Ġ{} ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġget ( offset : ĠInt ): ĠU Byte Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( offset Ġ== Ġ 0 ) Ġdata Byte ĊĠĠĠĠĠĠĠ Ġelse Ġ 0 xff ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġset ( offset : ĠInt , Ġdata : ĠU Byte ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( offset Ġ== Ġ 0 ) Ġdata Byte Ġ= Ġdata ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( offset Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( data . toInt () Ġand Ġ 1 ) Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchar Ġ= Ġdata Byte . toInt (). to Char () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" PAR ALLEL ĠWRITE : Ġ'$ char '") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ