package Ġcom . kot cr ab . xg bc . io Ċ Ċ import Ġcom . kot cr ab . xg bc . Em ulator Ċ import Ġcom . kot cr ab . xg bc . Interrupt Ċ Ċ /** Ġ@ author ĠK ot cr ab Ġ*/ Ċ class ĠSerial Port ( private Ġval Ġemulator : ĠEm ulator ) Ġ: ĠIO Device Ġ{ ĊĠĠĠ Ġval ĠSB Ġ= Ġ 0 xFF 0 1 ĊĠĠĠ Ġval ĠSC Ġ= Ġ 0 xFF 0 2 ĊĊĠĠĠ Ġvar Ġcycle Counter Ġ= Ġ 0 ĊĠĠĠ Ġval Ġcycle Update Ġ= Ġ 5 1 2 Ġ// Ġ 8 1 9 2 Ġkh z ĊĊĠĠĠ Ġoverride Ġfun Ġregister ( regist rar : Ġ( Int ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġregist rar ( SB ) ĊĠĠĠĠĠĠĠ Ġregist rar ( SC ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtick ( cycles Elapsed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcycle Counter Ġ+= Ġcycles Elapsed ĊĠĠĠĠĠĠĠ Ġif Ġ( cycle Counter Ġ>= Ġcycle Update ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcycle Counter Ġ-= Ġcycle Update ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsc Ġ= Ġemulator . readInt ( SC ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sc Ġ== Ġ 0 x 8 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint ( emulator . read ( SB ). to Char ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemulator . write ( SB , Ġ 0 xFF ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemulator . write ( SC , Ġ 0 x 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemulator . interrupt ( Interrupt . SERIAL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠ Ġcycle Counter Ġ= Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Read ( addr : ĠInt ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Write ( addr : ĠInt , Ġvalue : ĠByte ) Ġ{ ĊĠĠĠ Ġ} Ċ } Ċ