imul = 0x68
	MAR = SP = SP-1; rd
	PC = PC+1; fetch
	OPC = MDR
	MDR = 0
imul_test:
	Z = TOS; if (Z) goto while; else goto imul_end;
imul_while:
	H = 1;
	Z = H AND TOS; if (Z) goto imul_ulige;
imul_lige:
	H = TOS
	TOS = H >> 1
	H = OPC
	OPC = OPC + H; goto imul_test
imul_ulige:
	MDR = MDR + H; goto imul_lige
imul_end:
	TOS = MDR; wr
	goto main


idiv =  0x6c
        MDR = LV; wr   
        MAR = SP = SP - 1; rd
	LV = TOS
	OPC = MDR
	MDR = PC; wr
	PC = OPC    

idiv_test1:
	H = TOS
	N = OPC - H; if (N) goto idiv_while2 
idiv_while1:
	H = TOS
	TOS = TOS + H; goto idiv_test1
	
idiv_test2:
	Z = LV - TOS; if (Z) goto idiv_end2
idiv_while2:
	TOS = H >> 1
	H = MDR
	MDR = MDR + H
	H = TOS
	Z = OPC - H; if (Z) goto idiv_test2
	OPC = OPC + 1
	MDR = MDR + 1; goto idiv_test2   
idiv_end2:
        TOS = MDR; rd; wr
	SP = SP + 1
	PC = MDR; rd
	SP = SP - 1
	MAR = TOS; wr
	LV = MDR
	goto main

ishl = 0x78
        PC = PC + 1; fetch
ishl_test:
	Z = MBR; if (Z) goto ishl_end		     
        H = TOS
	TOS = TOS + H 
	MBR = MBR - 1; goto ishl_test
ishl_end:                
	MAR = TOS; wr
	goto main

ishr =  0x7a
        PC = PC + 1; fetch
	H = TOS OR 31
ishr_test:
	Z = MBR; if (Z) goto ishr_end		     
        TOS = TOS >> 1
	MBR = MBR - 1; goto ishr_test
ishr_end:                
	TOS = TOS AND H
	TOS = TOS OR H
	MAR = TOS; wr
	goto main

iushr = 0x7c
        PC = PC + 1; fetch
	H = 1
	H = H << 8
	H = H << 8
	H = H << 8
	H = H >> 1
	H = H << 8
iushr_test:
	Z = MBR; if (Z) goto iushr_end		     
        TOS = TOS >> 1
	MBR = MBR - 1
	Z = TOS AND H; if (Z) goto iushr_test
	TOS = TOS - H; goto iushr_test
iushr_end:
	MAR = TOS; wr
	goto main

if_icmplt = 0xA1
	MAR = SP = SP - 1; rd
	MAR = SP = SP - 1
	OPC = MDR; rd
	H = TOS
	TOS = MDR
	N = OPC - H; if (N) goto T; else goto F
