|  | @@ -28,117 +28,117 @@ static const DigitalPort LCD_E  = DigitalPort::D17 ;
 | 
	
		
			
				|  |  |  //   UTILITY ROUTINES — ANY MODE                                                                                                  *
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void driveHighE (void) {
 | 
	
		
			
				|  |  | -  digitalWrite (LCD_E, true) ;
 | 
	
		
			
				|  |  | +	digitalWrite (LCD_E, true) ;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void driveLowE (void) {
 | 
	
		
			
				|  |  | -  digitalWrite (LCD_E, false) ;
 | 
	
		
			
				|  |  | +	digitalWrite (LCD_E, false) ;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void driveHighRS (void) {
 | 
	
		
			
				|  |  | -  digitalWrite (LCD_RS, true) ;
 | 
	
		
			
				|  |  | +	digitalWrite (LCD_RS, true) ;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void driveLowRS (void) {
 | 
	
		
			
				|  |  | -  digitalWrite (LCD_RS, false) ;
 | 
	
		
			
				|  |  | +	digitalWrite (LCD_RS, false) ;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void setD4 (const bool inValue) {
 | 
	
		
			
				|  |  | -  digitalWrite (LCD_D4, inValue) ;
 | 
	
		
			
				|  |  | +	digitalWrite (LCD_D4, inValue) ;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void setD5 (const bool inValue) {
 | 
	
		
			
				|  |  | -  digitalWrite (LCD_D5, inValue) ;
 | 
	
		
			
				|  |  | +	digitalWrite (LCD_D5, inValue) ;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void setD6 (const bool inValue) {
 | 
	
		
			
				|  |  | -  digitalWrite (LCD_D6, inValue) ;
 | 
	
		
			
				|  |  | +	digitalWrite (LCD_D6, inValue) ;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void setD7 (const bool inValue) {
 | 
	
		
			
				|  |  | -  digitalWrite (LCD_D7, inValue) ;
 | 
	
		
			
				|  |  | +	digitalWrite (LCD_D7, inValue) ;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void programLcd4BitDataBusOutput (const uint8_t inValue) {
 | 
	
		
			
				|  |  | -  setD4 ((inValue & 0x01) != 0) ;
 | 
	
		
			
				|  |  | -  setD5 ((inValue & 0x02) != 0) ;
 | 
	
		
			
				|  |  | -  setD6 ((inValue & 0x04) != 0) ;
 | 
	
		
			
				|  |  | -  setD7 ((inValue & 0x08) != 0) ;
 | 
	
		
			
				|  |  | +	setD4 ((inValue & 0x01) != 0) ;
 | 
	
		
			
				|  |  | +	setD5 ((inValue & 0x02) != 0) ;
 | 
	
		
			
				|  |  | +	setD6 ((inValue & 0x04) != 0) ;
 | 
	
		
			
				|  |  | +	setD7 ((inValue & 0x08) != 0) ;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  //   UTILITY ROUTINES — INIT_MODE
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void write4BitCommand_initMode (INIT_MODE_ const uint8_t inCommand) {
 | 
	
		
			
				|  |  | -  busyWaitDuring_initMode (MODE_ 1) ;
 | 
	
		
			
				|  |  | -  driveLowRS () ;
 | 
	
		
			
				|  |  | -  programLcd4BitDataBusOutput (inCommand) ;
 | 
	
		
			
				|  |  | -  driveHighE () ;
 | 
	
		
			
				|  |  | -  busyWaitDuring_initMode (MODE_ 1) ;
 | 
	
		
			
				|  |  | -  driveLowE () ;
 | 
	
		
			
				|  |  | +	busyWaitDuring_initMode (MODE_ 1) ;
 | 
	
		
			
				|  |  | +	driveLowRS () ;
 | 
	
		
			
				|  |  | +	programLcd4BitDataBusOutput (inCommand) ;
 | 
	
		
			
				|  |  | +	driveHighE () ;
 | 
	
		
			
				|  |  | +	busyWaitDuring_initMode (MODE_ 1) ;
 | 
	
		
			
				|  |  | +	driveLowE () ;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void write8bitCommand_initMode (INIT_MODE_ const uint8_t inCommand) {
 | 
	
		
			
				|  |  | -  busyWaitDuring_initMode (MODE_ 1) ;
 | 
	
		
			
				|  |  | -  driveLowRS () ;
 | 
	
		
			
				|  |  | -  programLcd4BitDataBusOutput ((uint8_t) (inCommand >> 4)) ;
 | 
	
		
			
				|  |  | -  driveHighE () ;
 | 
	
		
			
				|  |  | -  busyWaitDuring_initMode (MODE_ 1) ;
 | 
	
		
			
				|  |  | -  driveLowE () ;
 | 
	
		
			
				|  |  | -  busyWaitDuring_initMode (MODE_ 1) ;
 | 
	
		
			
				|  |  | -  programLcd4BitDataBusOutput (inCommand) ;
 | 
	
		
			
				|  |  | -  driveHighE () ;
 | 
	
		
			
				|  |  | -  busyWaitDuring_initMode (MODE_ 1) ;
 | 
	
		
			
				|  |  | -  driveLowE () ;
 | 
	
		
			
				|  |  | +	busyWaitDuring_initMode (MODE_ 1) ;
 | 
	
		
			
				|  |  | +	driveLowRS () ;
 | 
	
		
			
				|  |  | +	programLcd4BitDataBusOutput ((uint8_t) (inCommand >> 4)) ;
 | 
	
		
			
				|  |  | +	driveHighE () ;
 | 
	
		
			
				|  |  | +	busyWaitDuring_initMode (MODE_ 1) ;
 | 
	
		
			
				|  |  | +	driveLowE () ;
 | 
	
		
			
				|  |  | +	busyWaitDuring_initMode (MODE_ 1) ;
 | 
	
		
			
				|  |  | +	programLcd4BitDataBusOutput (inCommand) ;
 | 
	
		
			
				|  |  | +	driveHighE () ;
 | 
	
		
			
				|  |  | +	busyWaitDuring_initMode (MODE_ 1) ;
 | 
	
		
			
				|  |  | +	driveLowE () ;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  //   LCD INIT
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void setupLCD (INIT_MODE) {
 | 
	
		
			
				|  |  | -//--- Step 1: Configure ports
 | 
	
		
			
				|  |  | -  pinMode (LCD_D4, DigitalMode::OUTPUT) ;
 | 
	
		
			
				|  |  | -  pinMode (LCD_D5, DigitalMode::OUTPUT) ;
 | 
	
		
			
				|  |  | -  pinMode (LCD_D6, DigitalMode::OUTPUT) ;
 | 
	
		
			
				|  |  | -  pinMode (LCD_D7, DigitalMode::OUTPUT) ;
 | 
	
		
			
				|  |  | -  pinMode (LCD_RS, DigitalMode::OUTPUT) ;
 | 
	
		
			
				|  |  | -  pinMode (LCD_E,  DigitalMode::OUTPUT) ;
 | 
	
		
			
				|  |  | -//--- Step 2: wait for 15 ms
 | 
	
		
			
				|  |  | -  busyWaitDuring_initMode (MODE_ 15) ;
 | 
	
		
			
				|  |  | -//--- Step 3: write command 0x30
 | 
	
		
			
				|  |  | -  write4BitCommand_initMode (MODE_ 0x3) ;
 | 
	
		
			
				|  |  | -//--- Step 4: wait for 4,1 ms (actually 5 ms)
 | 
	
		
			
				|  |  | -  busyWaitDuring_initMode (MODE_ 5) ;
 | 
	
		
			
				|  |  | -//--- Step 5: write command 0x30 again
 | 
	
		
			
				|  |  | -  write4BitCommand_initMode (MODE_ 0x3) ;
 | 
	
		
			
				|  |  | -//--- Step 6: wait for 100 µs (actually 1 ms)
 | 
	
		
			
				|  |  | -  busyWaitDuring_initMode (MODE_ 1) ;
 | 
	
		
			
				|  |  | -//--- Step 7: write command 0x30 (third)
 | 
	
		
			
				|  |  | -  write4BitCommand_initMode (MODE_ 0x3) ;
 | 
	
		
			
				|  |  | -//--- Step 8: write command 0x20 (4-bit mode)
 | 
	
		
			
				|  |  | -  write4BitCommand_initMode (MODE_ 0x2) ;
 | 
	
		
			
				|  |  | -//--- Step 9: write command 'Set Interface Length' : 0 0 1 DL N F * *
 | 
	
		
			
				|  |  | -//    DL : Data interface length : 0 (4 bits)
 | 
	
		
			
				|  |  | -//    N : Number of Display lines : 1 (2 lines)
 | 
	
		
			
				|  |  | -//    F : Character Font : 0 (5x7)
 | 
	
		
			
				|  |  | -  write8bitCommand_initMode (MODE_ 0x28) ;
 | 
	
		
			
				|  |  | -//--- Step 10: write command 'Display Off'
 | 
	
		
			
				|  |  | -  write8bitCommand_initMode (MODE_ 0x08) ;
 | 
	
		
			
				|  |  | -//--- Step 11: write command 'Clear Display'
 | 
	
		
			
				|  |  | -  write8bitCommand_initMode (MODE_ 0x01) ;
 | 
	
		
			
				|  |  | -//--- Step 12: write command 'Set Cursor Move Direction' : 0 0 0 0 0 1 ID S
 | 
	
		
			
				|  |  | -//    ID : Increment Cursor after Each Byte Written to Display : 1 (yes)
 | 
	
		
			
				|  |  | -//    S : Shift Display When Byte Written : 0 (no)
 | 
	
		
			
				|  |  | -  write8bitCommand_initMode (MODE_ 0x06) ;
 | 
	
		
			
				|  |  | -//--- Step 13: write command 'Move Cursor / Shift Display' : 0 0 0 1 SC RL * *
 | 
	
		
			
				|  |  | -//    SC : Display Shift On : 1 (oui)
 | 
	
		
			
				|  |  | -//    RL : Direction of Shift : 1 (to right)
 | 
	
		
			
				|  |  | -  write8bitCommand_initMode (MODE_ 0x1C) ;
 | 
	
		
			
				|  |  | -//--- Step 14: write command 'Return Cursor and LCD to Home Position'
 | 
	
		
			
				|  |  | -  write8bitCommand_initMode (MODE_ 0x02) ;
 | 
	
		
			
				|  |  | -//--- Step 15: write command 'Enable Display / Cursor' : 0 0 0 0 1 D C B
 | 
	
		
			
				|  |  | -//    D : Turn Display On : 1 (yes)
 | 
	
		
			
				|  |  | -//    C : Turn Cursor On : 0 (no)
 | 
	
		
			
				|  |  | -//    B : Cursor Blink On : 0 (no)
 | 
	
		
			
				|  |  | -  write8bitCommand_initMode (MODE_ 0x0C) ;
 | 
	
		
			
				|  |  | +	//--- Step 1: Configure ports
 | 
	
		
			
				|  |  | +	pinMode (LCD_D4, DigitalMode::OUTPUT) ;
 | 
	
		
			
				|  |  | +	pinMode (LCD_D5, DigitalMode::OUTPUT) ;
 | 
	
		
			
				|  |  | +	pinMode (LCD_D6, DigitalMode::OUTPUT) ;
 | 
	
		
			
				|  |  | +	pinMode (LCD_D7, DigitalMode::OUTPUT) ;
 | 
	
		
			
				|  |  | +	pinMode (LCD_RS, DigitalMode::OUTPUT) ;
 | 
	
		
			
				|  |  | +	pinMode (LCD_E,  DigitalMode::OUTPUT) ;
 | 
	
		
			
				|  |  | +	//--- Step 2: wait for 15 ms
 | 
	
		
			
				|  |  | +	busyWaitDuring_initMode (MODE_ 15) ;
 | 
	
		
			
				|  |  | +	//--- Step 3: write command 0x30
 | 
	
		
			
				|  |  | +	write4BitCommand_initMode (MODE_ 0x3) ;
 | 
	
		
			
				|  |  | +	//--- Step 4: wait for 4,1 ms (actually 5 ms)
 | 
	
		
			
				|  |  | +	busyWaitDuring_initMode (MODE_ 5) ;
 | 
	
		
			
				|  |  | +	//--- Step 5: write command 0x30 again
 | 
	
		
			
				|  |  | +	write4BitCommand_initMode (MODE_ 0x3) ;
 | 
	
		
			
				|  |  | +	//--- Step 6: wait for 100 µs (actually 1 ms)
 | 
	
		
			
				|  |  | +	busyWaitDuring_initMode (MODE_ 1) ;
 | 
	
		
			
				|  |  | +	//--- Step 7: write command 0x30 (third)
 | 
	
		
			
				|  |  | +	write4BitCommand_initMode (MODE_ 0x3) ;
 | 
	
		
			
				|  |  | +	//--- Step 8: write command 0x20 (4-bit mode)
 | 
	
		
			
				|  |  | +	write4BitCommand_initMode (MODE_ 0x2) ;
 | 
	
		
			
				|  |  | +	//--- Step 9: write command 'Set Interface Length' : 0 0 1 DL N F * *
 | 
	
		
			
				|  |  | +	//    DL : Data interface length : 0 (4 bits)
 | 
	
		
			
				|  |  | +	//    N : Number of Display lines : 1 (2 lines)
 | 
	
		
			
				|  |  | +	//    F : Character Font : 0 (5x7)
 | 
	
		
			
				|  |  | +	write8bitCommand_initMode (MODE_ 0x28) ;
 | 
	
		
			
				|  |  | +	//--- Step 10: write command 'Display Off'
 | 
	
		
			
				|  |  | +	write8bitCommand_initMode (MODE_ 0x08) ;
 | 
	
		
			
				|  |  | +	//--- Step 11: write command 'Clear Display'
 | 
	
		
			
				|  |  | +	write8bitCommand_initMode (MODE_ 0x01) ;
 | 
	
		
			
				|  |  | +	//--- Step 12: write command 'Set Cursor Move Direction' : 0 0 0 0 0 1 ID S
 | 
	
		
			
				|  |  | +	//    ID : Increment Cursor after Each Byte Written to Display : 1 (yes)
 | 
	
		
			
				|  |  | +	//    S : Shift Display When Byte Written : 0 (no)
 | 
	
		
			
				|  |  | +	write8bitCommand_initMode (MODE_ 0x06) ;
 | 
	
		
			
				|  |  | +	//--- Step 13: write command 'Move Cursor / Shift Display' : 0 0 0 1 SC RL * *
 | 
	
		
			
				|  |  | +	//    SC : Display Shift On : 1 (oui)
 | 
	
		
			
				|  |  | +	//    RL : Direction of Shift : 1 (to right)
 | 
	
		
			
				|  |  | +	write8bitCommand_initMode (MODE_ 0x1C) ;
 | 
	
		
			
				|  |  | +	//--- Step 14: write command 'Return Cursor and LCD to Home Position'
 | 
	
		
			
				|  |  | +	write8bitCommand_initMode (MODE_ 0x02) ;
 | 
	
		
			
				|  |  | +	//--- Step 15: write command 'Enable Display / Cursor' : 0 0 0 0 1 D C B
 | 
	
		
			
				|  |  | +	//    D : Turn Display On : 1 (yes)
 | 
	
		
			
				|  |  | +	//    C : Turn Cursor On : 0 (no)
 | 
	
		
			
				|  |  | +	//    B : Cursor Blink On : 0 (no)
 | 
	
		
			
				|  |  | +	write8bitCommand_initMode (MODE_ 0x0C) ;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  MACRO_INIT_ROUTINE (setupLCD) ;
 | 
	
	
		
			
				|  | @@ -146,38 +146,38 @@ MACRO_INIT_ROUTINE (setupLCD) ;
 | 
	
		
			
				|  |  |  //   UTILITY ROUTINES — USER MODE
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void write8bitCommand (USER_MODE_ const uint8_t inCommand) {
 | 
	
		
			
				|  |  | -  busyWaitDuring (MODE_ 1) ;
 | 
	
		
			
				|  |  | -  driveLowRS () ;
 | 
	
		
			
				|  |  | -  programLcd4BitDataBusOutput ((uint8_t) (inCommand >> 4)) ;
 | 
	
		
			
				|  |  | -  driveHighE () ;
 | 
	
		
			
				|  |  | -  busyWaitDuring (MODE_ 1) ;
 | 
	
		
			
				|  |  | -  driveLowE () ;
 | 
	
		
			
				|  |  | -  busyWaitDuring (MODE_ 1) ;
 | 
	
		
			
				|  |  | -  programLcd4BitDataBusOutput (inCommand) ;
 | 
	
		
			
				|  |  | -  driveHighE () ;
 | 
	
		
			
				|  |  | -  busyWaitDuring (MODE_ 1) ;
 | 
	
		
			
				|  |  | -  driveLowE () ;
 | 
	
		
			
				|  |  | +	busyWaitDuring (MODE_ 1) ;
 | 
	
		
			
				|  |  | +	driveLowRS () ;
 | 
	
		
			
				|  |  | +	programLcd4BitDataBusOutput ((uint8_t) (inCommand >> 4)) ;
 | 
	
		
			
				|  |  | +	driveHighE () ;
 | 
	
		
			
				|  |  | +	busyWaitDuring (MODE_ 1) ;
 | 
	
		
			
				|  |  | +	driveLowE () ;
 | 
	
		
			
				|  |  | +	busyWaitDuring (MODE_ 1) ;
 | 
	
		
			
				|  |  | +	programLcd4BitDataBusOutput (inCommand) ;
 | 
	
		
			
				|  |  | +	driveHighE () ;
 | 
	
		
			
				|  |  | +	busyWaitDuring (MODE_ 1) ;
 | 
	
		
			
				|  |  | +	driveLowE () ;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void writeData (USER_MODE_ const uint8_t inData) {
 | 
	
		
			
				|  |  | -  busyWaitDuring (MODE_ 1) ;
 | 
	
		
			
				|  |  | -  driveHighRS () ;
 | 
	
		
			
				|  |  | -  programLcd4BitDataBusOutput (inData >> 4) ;
 | 
	
		
			
				|  |  | -  driveHighE () ;
 | 
	
		
			
				|  |  | -  busyWaitDuring (MODE_ 1) ;
 | 
	
		
			
				|  |  | -  driveLowE () ;
 | 
	
		
			
				|  |  | -  busyWaitDuring (MODE_ 1) ;
 | 
	
		
			
				|  |  | -  programLcd4BitDataBusOutput (inData) ;
 | 
	
		
			
				|  |  | -  driveHighE () ;
 | 
	
		
			
				|  |  | -  busyWaitDuring (MODE_ 1) ;
 | 
	
		
			
				|  |  | -  driveLowE () ;
 | 
	
		
			
				|  |  | +	busyWaitDuring (MODE_ 1) ;
 | 
	
		
			
				|  |  | +	driveHighRS () ;
 | 
	
		
			
				|  |  | +	programLcd4BitDataBusOutput (inData >> 4) ;
 | 
	
		
			
				|  |  | +	driveHighE () ;
 | 
	
		
			
				|  |  | +	busyWaitDuring (MODE_ 1) ;
 | 
	
		
			
				|  |  | +	driveLowE () ;
 | 
	
		
			
				|  |  | +	busyWaitDuring (MODE_ 1) ;
 | 
	
		
			
				|  |  | +	programLcd4BitDataBusOutput (inData) ;
 | 
	
		
			
				|  |  | +	driveHighE () ;
 | 
	
		
			
				|  |  | +	busyWaitDuring (MODE_ 1) ;
 | 
	
		
			
				|  |  | +	driveLowE () ;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  //   PRINT ROUTINES — USER MODE
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void clearScreen (USER_MODE) {
 | 
	
		
			
				|  |  | -  write8bitCommand (MODE_ 0x01) ;
 | 
	
		
			
				|  |  | +	write8bitCommand (MODE_ 0x01) ;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Line 0 : 00 -> 19
 | 
	
	
		
			
				|  | @@ -186,99 +186,99 @@ void clearScreen (USER_MODE) {
 | 
	
		
			
				|  |  |  // Line 3 : 84 -> 103
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void gotoLineColumn (USER_MODE_ const uint32_t inLine, const uint32_t inColumn) {
 | 
	
		
			
				|  |  | -  static const uint8_t tab [4] = {0, 64, 20, 84} ;
 | 
	
		
			
				|  |  | -  if ((inLine < 4) && (inColumn < 20)) {
 | 
	
		
			
				|  |  | -    write8bitCommand (MODE_ tab [inLine] + inColumn + 0x80U) ;
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | +	static const uint8_t tab [4] = {0, 64, 20, 84} ;
 | 
	
		
			
				|  |  | +	if ((inLine < 4) && (inColumn < 20)) {
 | 
	
		
			
				|  |  | +		write8bitCommand (MODE_ tab [inLine] + inColumn + 0x80U) ;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void printString (USER_MODE_ const char * inString) {
 | 
	
		
			
				|  |  | -  if (NULL != inString) {
 | 
	
		
			
				|  |  | -    while ('\0' != *inString) {
 | 
	
		
			
				|  |  | -      writeData (MODE_ *inString) ;
 | 
	
		
			
				|  |  | -      inString ++ ;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | +	if (NULL != inString) {
 | 
	
		
			
				|  |  | +		while ('\0' != *inString) {
 | 
	
		
			
				|  |  | +			writeData (MODE_ *inString) ;
 | 
	
		
			
				|  |  | +			inString ++ ;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void printChar (USER_MODE_ const char inChar) {
 | 
	
		
			
				|  |  | -  writeData (MODE_ inChar) ;
 | 
	
		
			
				|  |  | +	writeData (MODE_ inChar) ;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void printSpaces (USER_MODE_ const uint32_t inCount) {
 | 
	
		
			
				|  |  | -  uint32_t count = inCount ;
 | 
	
		
			
				|  |  | -  while (count > 0) {
 | 
	
		
			
				|  |  | -    printChar (MODE_ ' ') ;
 | 
	
		
			
				|  |  | -    count -- ;
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | +	uint32_t count = inCount ;
 | 
	
		
			
				|  |  | +	while (count > 0) {
 | 
	
		
			
				|  |  | +		printChar (MODE_ ' ') ;
 | 
	
		
			
				|  |  | +		count -- ;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void printUnsigned (USER_MODE_ const uint32_t inValue) {
 | 
	
		
			
				|  |  | -  uint32_t divisor = 1000 * 1000 * 1000 ; // 10**9
 | 
	
		
			
				|  |  | -  uint32_t value = inValue ;
 | 
	
		
			
				|  |  | -  bool isPrinting = false ;
 | 
	
		
			
				|  |  | -  while (divisor > 0) {
 | 
	
		
			
				|  |  | -    if (isPrinting || (value >= divisor)) {
 | 
	
		
			
				|  |  | -      printChar (MODE_ '0' + value / divisor) ;
 | 
	
		
			
				|  |  | -      value %= divisor ;
 | 
	
		
			
				|  |  | -      isPrinting = true ;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    divisor /= 10 ;
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -  if (!isPrinting) {
 | 
	
		
			
				|  |  | -    printChar (MODE_ '0') ;
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | +	uint32_t divisor = 1000 * 1000 * 1000 ; // 10**9
 | 
	
		
			
				|  |  | +	uint32_t value = inValue ;
 | 
	
		
			
				|  |  | +	bool isPrinting = false ;
 | 
	
		
			
				|  |  | +	while (divisor > 0) {
 | 
	
		
			
				|  |  | +		if (isPrinting || (value >= divisor)) {
 | 
	
		
			
				|  |  | +			printChar (MODE_ '0' + value / divisor) ;
 | 
	
		
			
				|  |  | +			value %= divisor ;
 | 
	
		
			
				|  |  | +			isPrinting = true ;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		divisor /= 10 ;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if (!isPrinting) {
 | 
	
		
			
				|  |  | +		printChar (MODE_ '0') ;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void printUnsigned64 (USER_MODE_ const uint64_t inValue) {
 | 
	
		
			
				|  |  | -  char buffer [20] ;
 | 
	
		
			
				|  |  | -  buffer [19] = '\0' ;
 | 
	
		
			
				|  |  | -  buffer [18] = (inValue % 10) + '0' ;
 | 
	
		
			
				|  |  | -  uint32_t idx = 18 ;
 | 
	
		
			
				|  |  | -  uint64_t v = inValue / 10 ;
 | 
	
		
			
				|  |  | -  while (v != 0) {
 | 
	
		
			
				|  |  | -    idx -- ;
 | 
	
		
			
				|  |  | -    buffer [idx] = (v % 10) + '0' ;
 | 
	
		
			
				|  |  | -    v /= 10 ;
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -  printString (MODE_ & buffer [idx]) ;
 | 
	
		
			
				|  |  | +	char buffer [20] ;
 | 
	
		
			
				|  |  | +	buffer [19] = '\0' ;
 | 
	
		
			
				|  |  | +	buffer [18] = (inValue % 10) + '0' ;
 | 
	
		
			
				|  |  | +	uint32_t idx = 18 ;
 | 
	
		
			
				|  |  | +	uint64_t v = inValue / 10 ;
 | 
	
		
			
				|  |  | +	while (v != 0) {
 | 
	
		
			
				|  |  | +		idx -- ;
 | 
	
		
			
				|  |  | +		buffer [idx] = (v % 10) + '0' ;
 | 
	
		
			
				|  |  | +		v /= 10 ;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	printString (MODE_ & buffer [idx]) ;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void printSigned (USER_MODE_ const int32_t inValue) {
 | 
	
		
			
				|  |  | -  if (inValue < 0) {
 | 
	
		
			
				|  |  | -    printChar (MODE_ '-') ;
 | 
	
		
			
				|  |  | -    printUnsigned (MODE_ (uint32_t) -inValue) ;
 | 
	
		
			
				|  |  | -  }else{
 | 
	
		
			
				|  |  | -    printUnsigned (MODE_ (uint32_t) inValue) ;
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | +	if (inValue < 0) {
 | 
	
		
			
				|  |  | +		printChar (MODE_ '-') ;
 | 
	
		
			
				|  |  | +		printUnsigned (MODE_ (uint32_t) -inValue) ;
 | 
	
		
			
				|  |  | +	}else{
 | 
	
		
			
				|  |  | +		printUnsigned (MODE_ (uint32_t) inValue) ;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void printHex1 (USER_MODE_ const uint32_t inValue) {
 | 
	
		
			
				|  |  | -  const uint32_t v = inValue & 0xF ;
 | 
	
		
			
				|  |  | -  if (v < 10) {
 | 
	
		
			
				|  |  | -    printChar (MODE_ '0' + v) ;
 | 
	
		
			
				|  |  | -  }else{
 | 
	
		
			
				|  |  | -    printChar (MODE_ 'A' + v - 10) ;
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | +	const uint32_t v = inValue & 0xF ;
 | 
	
		
			
				|  |  | +	if (v < 10) {
 | 
	
		
			
				|  |  | +		printChar (MODE_ '0' + v) ;
 | 
	
		
			
				|  |  | +	}else{
 | 
	
		
			
				|  |  | +		printChar (MODE_ 'A' + v - 10) ;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void printHex2 (USER_MODE_ const uint32_t inValue) {
 | 
	
		
			
				|  |  | -  printHex1 (MODE_ inValue >> 4) ;
 | 
	
		
			
				|  |  | -  printHex1 (MODE_ inValue) ;
 | 
	
		
			
				|  |  | +	printHex1 (MODE_ inValue >> 4) ;
 | 
	
		
			
				|  |  | +	printHex1 (MODE_ inValue) ;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void printHex4 (USER_MODE_ const uint32_t inValue) {
 | 
	
		
			
				|  |  | -  printHex2 (MODE_ inValue >> 8) ;
 | 
	
		
			
				|  |  | -  printHex2 (MODE_ inValue) ;
 | 
	
		
			
				|  |  | +	printHex2 (MODE_ inValue >> 8) ;
 | 
	
		
			
				|  |  | +	printHex2 (MODE_ inValue) ;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void printHex8 (USER_MODE_ const uint32_t inValue) {
 | 
	
		
			
				|  |  | -  printHex4 (MODE_ inValue >> 16) ;
 | 
	
		
			
				|  |  | -  printHex4 (MODE_ inValue) ;
 | 
	
		
			
				|  |  | +	printHex4 (MODE_ inValue >> 16) ;
 | 
	
		
			
				|  |  | +	printHex4 (MODE_ inValue) ;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void printHex16 (USER_MODE_ const uint64_t inValue) {
 | 
	
		
			
				|  |  | -  printHex8 (MODE_ (uint32_t) (inValue >> 32)) ;
 | 
	
		
			
				|  |  | -  printHex8 (MODE_ (uint32_t) inValue) ;
 | 
	
		
			
				|  |  | +	printHex8 (MODE_ (uint32_t) (inValue >> 32)) ;
 | 
	
		
			
				|  |  | +	printHex8 (MODE_ (uint32_t) inValue) ;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 |