| 
									
										
										
										
											2015-02-24 17:30:14 +01:00
										 |  |  | (** http://bgb.bircd.org/pandocs.htm#cpuregistersandflags *) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | type registers = { | 
					
						
							| 
									
										
										
										
											2015-02-27 14:00:38 +01:00
										 |  |  |   a : char; (* accumulator *) | 
					
						
							| 
									
										
										
										
											2015-02-24 17:30:14 +01:00
										 |  |  |   b : char; | 
					
						
							|  |  |  |   c : char; | 
					
						
							|  |  |  |   d : char; | 
					
						
							|  |  |  |   e : char; | 
					
						
							|  |  |  |   h : char; | 
					
						
							|  |  |  |   l : char; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-27 14:00:38 +01:00
										 |  |  |   sp : int; (* stack pointer *) | 
					
						
							|  |  |  |   pc : int; (* program counter *) | 
					
						
							| 
									
										
										
										
											2015-02-24 17:30:14 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | type flags = { | 
					
						
							| 
									
										
										
										
											2015-02-27 14:00:38 +01:00
										 |  |  |   z  : bool; (* zero *) | 
					
						
							|  |  |  |   n  : bool; (* substraction *) | 
					
						
							|  |  |  |   h  : bool; (* half-carry *) | 
					
						
							|  |  |  |   cy : bool; (* carry *) | 
					
						
							| 
									
										
										
										
											2015-02-24 17:30:14 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | type t = { | 
					
						
							|  |  |  |   reg : registers; | 
					
						
							|  |  |  |   flags : flags; | 
					
						
							|  |  |  | } |