Metropoli BBS
VIEWER: mars.asm MODE: TEXT (CP437)
PAGE  59,132

;██████████████████████████████████████████████████████████████████████████
;██					                                 ██
;██				MARS	                                 ██
;██					                                 ██
;██      Created:   16-Feb-94		                                 ██
;██      Passes:    9          Analysis	Options on: none                 ██
;██					                                 ██
;██████████████████████████████████████████████████████████████████████████

target		EQU   'M6'                      ; Target assembler: MASM-6.1

include  srmacros.inc


; The following equates show data references outside the range of the program.

data_12e	equ	351h			;*
data_13e	equ	353h			;*
data_14e	equ	355h			;*
data_15e	equ	357h			;*
data_16e	equ	359h			;*
data_17e	equ	35Bh			;*
data_18e	equ	35Dh			;*
data_19e	equ	35Fh			;*
data_20e	equ	364h			;*
data_21e	equ	3A0h			;*
data_22e	equ	7AAh			;*
data_23e	equ	8100h			;*
data_24e	equ	8200h			;*
data_25e	equ	8300h			;*
data_26e	equ	8400h			;*
data_27e	equ	8500h			;*
data_28e	equ	8600h			;*
data_29e	equ	8700h			;*
data_30e	equ	8800h			;*
data_31e	equ	8900h			;*
data_32e	equ	8A00h			;*
data_33e	equ	8B00h			;*
data_34e	equ	8C00h			;*
data_35e	equ	8D00h			;*
data_36e	equ	8E00h			;*
data_37e	equ	8F00h			;*
data_38e	equ	9000h			;*
data_39e	equ	9100h			;*
data_40e	equ	9200h			;*
data_41e	equ	9300h			;*
data_42e	equ	9400h			;*
data_43e	equ	9500h			;*
data_44e	equ	9600h			;*
data_45e	equ	9700h			;*
data_46e	equ	9800h			;*
data_47e	equ	9900h			;*
data_48e	equ	9A00h			;*
data_49e	equ	9B00h			;*
data_50e	equ	9C00h			;*
data_51e	equ	9D00h			;*
data_52e	equ	9E00h			;*
data_53e	equ	9F00h			;*
data_54e	equ	0A000h			;*
data_55e	equ	0A100h			;*
data_56e	equ	0A200h			;*
data_57e	equ	0A300h			;*
data_58e	equ	0A400h			;*
data_59e	equ	0A500h			;*
data_60e	equ	0A600h			;*
data_61e	equ	0A700h			;*
data_62e	equ	0A800h			;*
data_63e	equ	0A900h			;*
data_64e	equ	0AA00h			;*
data_65e	equ	0AB00h			;*
data_66e	equ	0AC00h			;*
data_67e	equ	0AD00h			;*
data_68e	equ	0AE00h			;*
data_69e	equ	0AF00h			;*
data_70e	equ	0B000h			;*
data_71e	equ	0B100h			;*
data_72e	equ	0B200h			;*
data_73e	equ	0B300h			;*
data_74e	equ	0B400h			;*
data_75e	equ	0B500h			;*
data_76e	equ	0B600h			;*
data_77e	equ	0B700h			;*
data_78e	equ	0B800h			;*
data_79e	equ	0B900h			;*
data_80e	equ	0BA00h			;*
data_81e	equ	0BB00h			;*
data_82e	equ	0BC00h			;*
data_83e	equ	0BD00h			;*
data_84e	equ	0BE00h			;*
data_85e	equ	0BF00h			;*
data_86e	equ	0C000h			;*
data_87e	equ	0C100h			;*
data_88e	equ	0C200h			;*
data_89e	equ	0C300h			;*
data_90e	equ	0C400h			;*
data_91e	equ	0C500h			;*
data_92e	equ	0C600h			;*
data_93e	equ	0C700h			;*
data_94e	equ	0C800h			;*
data_95e	equ	0C900h			;*
data_96e	equ	0CA00h			;*
data_97e	equ	0CB00h			;*
data_98e	equ	0CC00h			;*
data_99e	equ	0CD00h			;*
data_100e	equ	0CE00h			;*
data_101e	equ	0CF00h			;*
data_102e	equ	0D000h			;*
data_103e	equ	0D100h			;*
data_104e	equ	0D200h			;*
data_105e	equ	0D300h			;*
data_106e	equ	0D400h			;*
data_107e	equ	0D500h			;*
data_108e	equ	0D600h			;*
data_109e	equ	0D700h			;*
data_110e	equ	0D800h			;*
data_111e	equ	0D900h			;*
data_112e	equ	0DA00h			;*
data_113e	equ	0DB00h			;*
data_114e	equ	0DC00h			;*
data_115e	equ	0DD00h			;*
data_116e	equ	0DE00h			;*
data_117e	equ	0DF00h			;*
data_118e	equ	0E000h			;*
data_119e	equ	0E100h			;*
data_120e	equ	0E200h			;*
data_121e	equ	0E300h			;*
data_122e	equ	0E400h			;*
data_123e	equ	0E500h			;*
data_124e	equ	0E600h			;*
data_125e	equ	0E700h			;*
data_126e	equ	0E800h			;*
data_127e	equ	0E900h			;*
data_128e	equ	0EA00h			;*
data_129e	equ	0EB00h			;*
data_130e	equ	0EC00h			;*
data_131e	equ	0ED00h			;*
data_132e	equ	0EE00h			;*
data_133e	equ	0EF00h			;*
data_134e	equ	0F000h			;*
data_135e	equ	0F100h			;*
data_136e	equ	0F200h			;*
data_137e	equ	0F300h			;*
data_138e	equ	0F400h			;*
data_139e	equ	0F500h			;*
data_140e	equ	0F600h			;*
data_141e	equ	0F700h			;*
data_142e	equ	0F800h			;*
data_143e	equ	0F900h			;*
data_144e	equ	0FA00h			;*
data_145e	equ	0FB00h			;*
data_146e	equ	0FC00h			;*
data_147e	equ	0FD00h			;*
data_148e	equ	0FE00h			;*
data_149e	equ	0FF00h			;*

;------------------------------------------------------------  seg_a   ----

seg_a		segment	byte public
		assume cs:seg_a  , ds:seg_b


;██████████████████████████████████████████████████████████████████████████
;
;                       Program	Entry Point
;
;██████████████████████████████████████████████████████████████████████████


mars		proc	far

start::
		mov	ax,seg_b
		mov	ds,ax
		mov	es,ax
		cld				; Clear direction
		xor	ah,ah			; Zero register
		int	1Ah			; Real time clock   ah=func 00h
						;  get system timer count cx,dx
		and	dh,7Fh
		mov	ds:data_18e,dx
		mov	ax,13h
		int	10h			; Video display   ah=functn 00h
						;  set display mode in al
		xor	ax,ax			; Zero register
		int	33h			; Mouse driver    ax=func 0000h
						;  installed?, ax=0 no, =-1 yes
						;   bx=number of mouse buttons
;*		cmp	ax,0FFFFh
		db	 3Dh,0FFh,0FFh		;  Fixup - byte match
;*		pop	cs			; Dangerous-8088 only
		db	0Fh			;  Fixup - byte match
		xchg	sp,ax
		push	es
		pop	bx
		add	di,ss:data_6[bp]
		cli				; Disable interrupts
		mov	dx,3C8h
		xor	al,al			; Zero register
		out	dx,al			; port 3C8h, VGA pel address
		inc	dx
		mov	cx,300h
		db	0F3h, 6Eh,0FBh, 8Eh, 26h, 3Dh
		db	 03h, 64h,0C6h, 06h,0FFh,0F9h
		db	 60h, 64h,0C6h, 06h,0FEh,0F9h
		db	 60h, 64h,0C6h, 06h,0FDh,0F9h
		db	 60h, 64h,0C6h, 06h,0BDh,0F8h
		db	 60h, 64h,0C6h, 06h, 7Dh,0F7h
		db	 60h, 64h,0C6h, 06h, 7Eh,0F7h
		db	 60h, 64h,0C6h, 06h, 7Fh,0F7h
		db	 60h, 64h,0C6h, 06h, 7Bh,0F7h
		db	 60h, 64h,0C6h, 06h, 7Ah,0F7h
		db	 60h, 64h,0C6h, 06h, 79h,0F7h
		db	 60h, 64h,0C6h, 06h,0BAh,0F8h
		db	 60h, 64h,0C6h, 06h,0FAh,0F9h
		db	 60h, 64h,0C6h, 06h,0F9h,0F9h
		db	 60h, 64h,0C6h, 06h, 77h,0F7h
		db	 60h, 64h,0C6h, 06h, 76h,0F7h
		db	 60h, 64h,0C6h, 06h, 75h,0F7h
		db	 60h, 64h,0C6h, 06h,0B6h,0F8h
		db	 60h, 64h,0C6h, 06h,0F6h,0F9h
		db	 60h,0E8h, 4Bh, 00h,0E8h,0A8h
		db	 00h,0C6h, 06h, 5Fh, 03h, 00h
		db	0C7h, 06h, 51h, 03h,0E8h, 03h
		db	0C7h, 06h, 53h, 03h,0E8h, 03h
		db	0E8h, 49h, 03h,0E8h, 97h, 03h
		db	0E8h, 5Ah, 09h,0BEh,0AAh, 07h
		db	 8Eh, 06h, 3Dh, 03h,0BFh, 20h
		db	 00h,0B3h,0C8h,0B9h, 40h, 00h
		db	0F3h, 66h,0A5h, 83h,0C7h, 40h
		db	0FEh,0CBh, 75h,0F3h, 8Eh, 06h
		db	 45h, 03h, 80h, 3Eh, 5Fh, 03h
		db	 00h, 74h,0D3h,0B8h, 03h, 00h
		db	0CDh, 10h,0B8h, 00h, 4Ch,0CDh
		db	 21h, 8Eh, 06h, 4Bh, 03h, 33h
		db	0FFh, 66h,0B8h,0FFh,0FFh,0FFh
		db	0FFh,0B9h, 00h, 40h,0F3h, 66h
		db	0ABh,0B8h,0ABh, 00h,0F7h, 26h
		db	 5Dh, 03h, 05h,0CDh, 2Bh, 83h
		db	0D2h, 00h,0F7h, 36h, 4Dh, 03h
		db	 89h, 16h, 5Dh, 03h, 8Bh,0F2h
		db	 26h,0C6h, 06h, 00h, 00h, 00h
		db	 26h,0C6h, 06h, 80h, 00h,0FEh
		db	 26h,0C6h, 06h, 00h, 80h,0FEh
		db	 26h,0C6h, 06h, 80h, 80h, 00h
		db	 6Ah, 00h, 68h, 00h, 01h,0E8h
		db	0DDh, 00h, 83h,0C4h, 04h, 33h
		db	0FFh, 26h, 8Ah, 05h,0C0h,0E8h
		db	 03h, 04h, 40h,0AAh, 0Bh,0FFh
		db	 75h,0F3h, 8Eh, 06h, 45h, 03h
		db	0C3h, 8Eh, 06h, 47h, 03h, 8Eh
		db	 26h, 49h, 03h, 33h,0FFh, 66h
		db	0B8h,0FFh,0FFh,0FFh,0FFh,0B9h
		db	 00h, 40h,0F3h, 66h,0ABh,0B8h
		db	0ABh, 00h,0F7h, 26h, 5Dh, 03h
		db	 05h,0CDh, 2Bh, 83h,0D2h, 00h
		db	0F7h, 36h, 4Dh, 03h, 89h, 16h
		db	 5Dh, 03h, 8Bh,0F2h, 26h,0C6h
		db	 06h, 00h, 00h, 80h, 6Ah, 00h
		db	 68h, 00h, 01h,0E8h, 8Bh, 00h
		db	 83h,0C4h, 04h, 33h,0F6h, 8Bh
		db	 3Eh, 4Fh, 03h,0C1h,0E7h, 04h
		db	 8Bh, 9Dh, 1Fh, 03h, 26h, 8Ah
		db	 00h, 32h,0E4h, 8Bh, 9Dh, 21h
		db	 03h, 26h, 02h, 00h, 80h,0D4h
		db	 00h, 8Bh, 9Dh, 23h, 03h, 26h
		db	 02h, 00h, 80h,0D4h, 00h, 8Bh
		db	 9Dh, 25h, 03h, 26h, 02h, 00h
		db	 80h,0D4h, 00h,0C1h,0E8h, 02h
		db	 26h, 88h, 04h, 46h, 75h,0D0h
		db	 33h,0F6h, 26h, 8Ah, 04h, 32h
		db	0E4h, 26h, 2Ah, 44h, 03h, 80h
		db	0DCh, 00h, 05h, 20h, 00h, 79h
		db	 02h, 33h,0C0h
loc_1::
;*		cmp	ax,3Fh
		db	 3Dh, 3Fh, 00h		;  Fixup - byte match
		jbe	$+5			; Jump if below or =
		mov	ax,3Fh
		db	 64h, 88h, 04h, 46h, 75h,0DFh
		db	 33h,0F6h, 26h, 8Ah, 04h, 32h
		db	0E4h, 26h, 02h, 44h, 01h, 80h
		db	0D4h, 00h, 26h, 02h, 84h, 00h
		db	 01h, 80h,0D4h, 00h, 26h, 02h
		db	 84h, 01h, 01h, 80h,0D4h, 00h
		db	0C1h,0E8h, 02h, 26h, 88h, 04h
		db	 46h, 75h,0DBh, 8Eh, 06h, 45h
		db	 03h,0C3h

mars		endp

;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;                              SUBROUTINE
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄

sub_1		proc	near
		mov	bp,sp
		mov	bx,[bp+4]
		mov	cx,[bp+2]
		shr	cx,1			; Shift w/zeros fill
		mov	dl,es:[bx]
		add	bl,cl
		mov	di,bx
		add	bl,cl
		cmp	byte ptr es:[di],0FFh
		jne	$+46h			; Jump if not equal
		xor	dh,dh			; Zero register
		add	dl,es:[bx]
		adc	dh,0
		shr	dx,1			; Shift w/zeros fill
		mov	ch,dl
		mov	ax,0ABh
		mul	si			; dx:ax = reg * ax
		add	ax,2BCDh
		adc	dx,0
		div	word ptr ds:[34Dh]	; ax,dxrem=dx:ax/data
		mov	si,dx
		sub	dx,67C2h
		mov	al,cl
		xor	ah,ah			; Zero register
		imul	dx			; dx:ax = reg * ax
		mov	al,ah
		mov	ah,dl
		db	0C1h,0F8h, 05h, 98h, 02h,0C5h
		db	 80h,0D4h, 00h, 78h, 09h, 3Dh
		db	0FEh, 00h, 76h, 06h,0B0h,0FEh
		db	0EBh, 02h, 32h,0C0h, 26h, 88h
		db	 05h, 26h, 8Ah, 17h, 02h,0F9h
		db	 8Bh,0FBh, 02h,0F9h, 26h, 80h
		db	 3Dh,0FFh, 75h, 44h, 32h,0F6h
		db	 26h, 02h, 17h, 80h,0D6h, 00h
		db	0D1h,0EAh, 8Ah,0EAh,0B8h,0ABh
		db	 00h,0F7h,0E6h, 05h,0CDh, 2Bh
		db	 83h,0D2h, 00h,0F7h, 36h, 4Dh
		db	 03h, 8Bh,0F2h, 81h,0EAh,0C2h
		db	 67h, 8Ah,0C1h, 32h,0E4h,0F7h
		db	0EAh, 8Ah,0C4h, 8Ah,0E2h,0C1h
		db	0F8h, 05h, 98h, 02h,0C5h, 80h
		db	0D4h, 00h, 78h, 09h, 3Dh,0FEh
		db	 00h, 76h, 06h,0B0h,0FEh,0EBh
		db	 02h, 32h,0C0h, 26h, 88h, 05h
		db	 26h, 8Ah, 17h, 2Ah,0D9h, 8Bh
		db	0FBh, 2Ah,0D9h, 26h, 80h, 3Dh
		db	0FFh, 75h, 44h, 32h,0F6h, 26h
		db	 02h, 17h, 80h,0D6h, 00h,0D1h
		db	0EAh, 8Ah,0EAh,0B8h,0ABh, 00h
		db	0F7h,0E6h, 05h,0CDh, 2Bh, 83h
		db	0D2h, 00h,0F7h, 36h, 4Dh, 03h
		db	 8Bh,0F2h, 81h,0EAh,0C2h, 67h
		db	 8Ah,0C1h, 32h,0E4h,0F7h,0EAh
		db	 8Ah,0C4h, 8Ah,0E2h,0C1h,0F8h
		db	 05h, 98h, 02h,0C5h, 80h,0D4h
		db	 00h, 78h, 09h, 3Dh,0FEh, 00h
		db	 76h, 06h,0B0h,0FEh,0EBh, 02h
		db	 32h,0C0h, 26h, 88h, 05h, 26h
		db	 8Ah, 17h, 2Ah,0F9h, 8Bh,0FBh
		db	 2Ah,0F9h, 26h, 80h, 3Dh,0FFh
		db	 75h, 44h, 32h,0F6h, 26h, 02h
		db	 17h, 80h,0D6h, 00h,0D1h,0EAh
		db	 8Ah,0EAh,0B8h,0ABh, 00h,0F7h
		db	0E6h, 05h,0CDh, 2Bh, 83h,0D2h
		db	 00h,0F7h, 36h, 4Dh, 03h, 8Bh
		db	0F2h, 81h,0EAh,0C2h, 67h, 8Ah
		db	0C1h, 32h,0E4h,0F7h,0EAh, 8Ah
		db	0C4h, 8Ah,0E2h,0C1h,0F8h, 05h
		db	 98h, 02h,0C5h, 80h,0D4h, 00h
		db	 78h, 09h, 3Dh,0FEh, 00h, 76h
		db	 06h,0B0h,0FEh,0EBh, 02h, 32h
		db	0C0h, 26h, 88h, 05h, 26h, 8Ah
		db	 17h, 32h,0F6h, 02h,0D9h, 02h
		db	0D9h, 26h, 02h, 17h, 80h,0D6h
		db	 00h, 02h,0F9h, 02h,0F9h, 26h
		db	 02h, 17h, 80h,0D6h, 00h, 2Ah
		db	0D9h, 2Ah,0D9h, 26h, 02h, 17h
		db	 80h,0D6h, 00h,0C1h,0EAh, 02h
		db	 8Ah,0EAh,0B8h,0ABh, 00h,0F7h
		db	0E6h, 05h,0CDh, 2Bh, 83h,0D2h
		db	 00h,0F7h, 36h, 4Dh, 03h, 8Bh
		db	0F2h, 81h,0EAh,0C2h, 67h, 8Ah
		db	0C1h, 32h,0E4h,0F7h,0EAh, 8Ah
		db	0C4h, 8Ah,0E2h,0C1h,0F8h, 05h
		db	 98h, 02h,0C5h, 80h,0D4h, 00h
		db	 78h, 09h, 3Dh,0FEh, 00h, 76h
		db	 06h,0B0h,0FEh,0EBh, 02h, 32h
		db	0C0h, 02h,0D9h, 2Ah,0F9h, 26h
		db	 88h, 07h, 80h,0F9h, 01h, 74h
		db	 2Fh, 32h,0EDh, 2Ah,0D9h, 2Ah
		db	0F9h, 53h, 51h,0E8h, 36h,0FEh
		db	 8Bh,0ECh, 8Ah, 4Eh, 00h, 00h
		db	 4Eh, 02h,0E8h, 2Bh,0FEh, 8Bh
		db	0ECh, 8Ah, 4Eh, 00h, 00h, 4Eh
		db	 03h,0E8h, 20h,0FEh, 8Bh,0ECh
		db	 8Ah, 4Eh, 00h, 28h, 4Eh, 02h
		db	0E8h, 15h,0FEh, 83h,0C4h, 04h

loc_ret_2::
		retn
sub_1		endp


;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;                              SUBROUTINE
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄

sub_2		proc	near
		xor	cx,cx			; Zero register
		xor	dx,dx			; Zero register
		xor	ax,ax			; Zero register
		cmp	byte ptr ds:data_17e,0
		je	loc_3			; Jump if equal
		mov	ax,0Bh
		int	33h			; Mouse driver    ax=func 000Bh
						;  read motion counters, cx & dx
		push	cx
		push	dx
		mov	ax,5
		int	33h			; Mouse driver    ax=func 0005h
						;  get button bx status in ax
						;   bx=count, cx=horiz, dx=vert
		pop	dx
		pop	cx
loc_3::
		add	ds:data_12e,cx
		sub	ds:data_13e,dx
		mov	cx,ds:data_12e
		mov	dx,ds:data_13e
		mov	ds:data_14e,cx
		mov	ds:data_15e,dx
		call	sub_5
		add	ah,19h
		jnc	loc_4			; Jump if carry=0
		mov	ax,0FFFFh
loc_4::
		mov	ds:data_16e,ax
		mov	ah,1
		int	16h			; Keyboard i/o  ah=function 01h
						;  get status, if zf=0  al=char
		jz	loc_ret_5		; Jump if zero
		mov	byte ptr ds:data_19e,1
		xor	ah,ah			; Zero register
		int	16h			; Keyboard i/o  ah=function 00h
						;  get keybd char in al, ah=scan

loc_ret_5::
		retn
sub_2		endp


;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;                              SUBROUTINE
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄

sub_3		proc	near
		mov	di,data_22e
		db	 66h,0B9h, 63h, 00h, 00h, 00h
		db	 66h, 33h,0C0h,0A1h, 59h, 03h
		db	0F7h,0D8h,0C1h,0E8h, 03h, 05h
		db	 00h, 40h, 66h,0C1h,0E0h, 0Dh
		db	 66h,0A3h, 60h, 03h, 66h, 33h
		db	0C0h,0A1h, 55h, 03h, 66h,0C1h
		db	0E0h, 09h, 66h,0A3h, 64h, 03h
		db	 66h, 33h,0C0h,0A1h, 57h, 03h
		db	 66h,0C1h,0E0h, 09h, 66h,0A3h
		db	 68h, 03h, 1Eh, 8Eh, 2Eh, 45h
		db	 03h, 8Eh, 1Eh, 4Bh, 03h, 66h
		db	 65h,0A1h, 60h, 03h, 66h, 33h
		db	0D2h, 66h,0F7h,0F1h, 66h, 65h
		db	 8Bh, 36h, 64h, 03h, 66h, 65h
		db	 8Bh, 2Eh, 68h, 03h, 66h, 2Bh
		db	0F0h, 66h, 03h,0E8h, 66h,0C1h
		db	0E8h, 07h, 8Bh,0DEh, 66h,0C1h
		db	0EEh, 10h, 81h,0E6h,0FFh, 00h
		db	 66h,0C1h,0EDh, 08h, 81h,0E5h
		db	 00h,0FFh, 0Bh,0F5h, 66h, 8Bh
		db	0E8h, 66h,0C1h,0EDh, 10h, 4Dh
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h, 03h,0D8h
		db	 13h,0F5h,0A4h, 03h,0D8h, 13h
		db	0F5h,0A4h, 03h,0D8h, 13h,0F5h
		db	0A4h, 03h,0D8h, 13h,0F5h,0A4h
		db	 03h,0D8h, 13h,0F5h,0A4h, 03h
		db	0D8h, 13h,0F5h,0A4h,0FEh,0C9h
		db	 0Fh, 85h,0C1h,0FAh, 1Fh, 66h
		db	0B8h, 50h, 50h, 50h, 50h,0B9h
		db	 40h, 00h,0F3h, 66h,0ABh, 8Bh
		db	 36h, 59h, 03h,0D1h,0EEh, 83h
		db	0C6h, 0Ah,0BBh, 04h, 00h, 8Bh
		db	0C6h, 33h,0D2h,0F7h,0F3h,0C1h
		db	0E8h, 07h, 3Dh, 3Fh, 00h, 76h
		db	 02h,0B0h, 3Fh, 8Ah,0E0h, 8Ah
		db	0D0h, 66h,0C1h,0E0h, 10h, 8Ah
		db	0C2h, 8Ah,0E0h,0B9h, 40h, 00h
		db	0F3h, 66h,0ABh,0FEh,0C3h, 80h
		db	0FBh, 2Ch, 75h,0D7h,0C3h

;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀

sub_4::
		db	 8Eh, 26h, 47h, 03h, 8Eh, 2Eh
		db	 49h, 03h, 66h,0B8h, 00h, 7Dh
		db	 00h, 7Dh,0BFh,0AAh, 03h,0B9h
		db	 80h, 00h,0F3h, 66h,0ABh, 66h
		db	 33h,0C0h,0BFh,0AAh, 05h,0B9h
		db	 80h, 00h,0F3h, 66h,0ABh,0C7h
		db	 06h,0A0h, 03h, 78h, 00h, 8Bh
		db	 36h,0A0h, 03h, 8Bh,0B4h, 90h
		db	 01h,0C1h,0E6h, 04h,0A1h, 57h
		db	 03h, 25h, 0Fh, 00h, 34h, 0Fh
		db	 03h,0F0h,0A1h, 59h, 03h, 33h
		db	0D2h,0F7h,0F6h, 05h, 64h, 00h
		db	0A3h,0A2h, 03h, 66h, 33h,0C0h
		db	 8Bh,0C6h, 66h,0C1h,0E0h, 06h
		db	 66h,0A3h,0A6h, 03h, 83h, 3Eh
		db	0A0h, 03h, 02h, 75h, 0Eh,0C7h
		db	 06h,0A2h, 03h, 00h, 7Dh,0C7h
		db	 06h,0A4h, 03h, 00h, 00h,0EBh
		db	 0Ah, 33h,0C0h,0BAh, 01h, 00h
		db	0F7h,0F6h,0A3h,0A4h, 03h, 66h
		db	 33h,0C9h, 8Bh, 0Eh, 55h, 03h
		db	 66h,0C1h,0E1h, 0Ch, 66h,0A1h
		db	0A6h, 03h, 66h,0C1h,0E0h, 07h
		db	 66h, 2Bh,0C8h, 8Bh, 16h, 57h
		db	 03h,0C1h,0E2h, 04h, 66h, 8Bh
		db	0D9h, 66h,0C1h,0EBh, 10h, 8Ah
		db	0FEh, 8Bh,0C6h,0C1h,0E8h, 04h
		db	 02h,0F8h,0D1h,0E9h,0BEh,0FEh
		db	 01h,0C7h, 06h, 64h, 03h,0AAh
		db	 07h,0D1h,0E1h, 03h, 0Eh,0A6h
		db	 03h, 12h, 1Eh,0A8h, 03h,0D1h
		db	0E9h, 64h, 8Ah, 47h, 01h, 32h
		db	0E4h, 64h, 2Ah, 07h, 80h,0DCh
		db	 00h,0F7h,0E9h, 0Fh,0ACh,0D0h
		db	 07h, 64h, 02h, 27h,0F7h, 26h
		db	0A4h, 03h, 8Bh, 3Eh,0A2h, 03h
		db	 2Bh,0FAh, 79h, 03h,0BFh,0FFh
		db	0FFh, 81h,0FFh,0C8h, 00h, 7Ch
		db	 03h,0BFh,0C7h, 00h, 8Bh,0ACh
		db	0AAh, 03h, 89h,0BCh,0AAh, 03h
		db	 2Bh,0EFh, 0Fh, 89h, 05h, 05h
		db	0C1h,0E7h, 08h, 03h, 3Eh, 64h
		db	 03h, 65h, 8Ah, 47h, 01h, 65h
		db	 2Ah, 07h,0F6h,0EDh,0D1h,0E0h
		db	 65h, 02h, 27h, 8Bh,0D0h, 87h
		db	 84h,0AAh, 05h, 50h, 2Bh,0C2h
		db	 99h,0F7h,0FDh, 5Ah,0D1h,0E5h
		db	 3Eh,0FFh,0A6h, 90h, 01h, 88h
		db	0B5h, 00h, 39h, 03h,0D0h, 88h
		db	0B5h, 00h, 3Ah, 03h,0D0h, 88h
		db	0B5h, 00h, 3Bh, 03h,0D0h, 88h
		db	0B5h, 00h, 3Ch, 03h,0D0h, 88h
		db	0B5h, 00h, 3Dh, 03h,0D0h, 88h
		db	0B5h, 00h, 3Eh, 03h,0D0h, 88h
		db	0B5h, 00h, 3Fh, 03h,0D0h, 88h
		db	0B5h, 00h, 40h, 03h,0D0h, 88h
		db	0B5h, 00h, 41h, 03h,0D0h, 88h
		db	0B5h, 00h, 42h, 03h,0D0h, 88h
		db	0B5h, 00h, 43h, 03h,0D0h, 88h
		db	0B5h, 00h, 44h, 03h,0D0h, 88h
		db	0B5h, 00h, 45h, 03h,0D0h, 88h
		db	0B5h, 00h, 46h, 03h,0D0h, 88h
		db	0B5h, 00h, 47h, 03h,0D0h, 88h
		db	0B5h, 00h, 48h, 03h,0D0h, 88h
		db	0B5h, 00h, 49h, 03h,0D0h, 88h
		db	0B5h, 00h, 4Ah, 03h,0D0h, 88h
		db	0B5h, 00h, 4Bh, 03h,0D0h, 88h
		db	0B5h, 00h, 4Ch, 03h,0D0h, 88h
		db	0B5h, 00h, 4Dh, 03h,0D0h, 88h
		db	0B5h, 00h, 4Eh, 03h,0D0h, 88h
		db	0B5h, 00h, 4Fh, 03h,0D0h, 88h
		db	0B5h, 00h, 50h, 03h,0D0h, 88h
		db	0B5h, 00h, 51h, 03h,0D0h, 88h
		db	0B5h, 00h, 52h, 03h,0D0h, 88h
		db	0B5h, 00h, 53h, 03h,0D0h, 88h
		db	0B5h, 00h, 54h, 03h,0D0h, 88h
		db	0B5h, 00h, 55h, 03h,0D0h, 88h
		db	0B5h, 00h, 56h, 03h,0D0h, 88h
		db	0B5h, 00h, 57h, 03h,0D0h, 88h
		db	0B5h, 00h, 58h, 03h,0D0h, 88h
		db	0B5h, 00h, 59h, 03h,0D0h, 88h
		db	0B5h, 00h, 5Ah, 03h,0D0h, 88h
		db	0B5h, 00h, 5Bh, 03h,0D0h, 88h
		db	0B5h, 00h, 5Ch, 03h,0D0h, 88h
		db	0B5h, 00h, 5Dh, 03h,0D0h, 88h
		db	0B5h, 00h, 5Eh, 03h,0D0h, 88h
		db	0B5h, 00h, 5Fh, 03h,0D0h, 88h
		db	0B5h, 00h, 60h, 03h,0D0h, 88h
		db	0B5h, 00h, 61h, 03h,0D0h, 88h
		db	0B5h, 00h, 62h, 03h,0D0h, 88h
		db	0B5h, 00h, 63h, 03h,0D0h, 88h
		db	0B5h, 00h, 64h, 03h,0D0h, 88h
		db	0B5h, 00h, 65h, 03h,0D0h, 88h
		db	0B5h, 00h, 66h, 03h,0D0h, 88h
		db	0B5h, 00h, 67h, 03h,0D0h, 88h
		db	0B5h, 00h, 68h, 03h,0D0h, 88h
		db	0B5h, 00h, 69h, 03h,0D0h, 88h
		db	0B5h, 00h, 6Ah, 03h,0D0h, 88h
		db	0B5h, 00h, 6Bh, 03h,0D0h, 88h
		db	0B5h, 00h, 6Ch, 03h,0D0h, 88h
		db	0B5h, 00h, 6Dh, 03h,0D0h, 88h
		db	0B5h, 00h, 6Eh, 03h,0D0h, 88h
		db	0B5h, 00h, 6Fh, 03h,0D0h, 88h
		db	0B5h, 00h, 70h, 03h,0D0h, 88h
		db	0B5h, 00h, 71h, 03h,0D0h, 88h
		db	0B5h, 00h, 72h, 03h,0D0h, 88h
		db	0B5h, 00h, 73h, 03h,0D0h, 88h
		db	0B5h, 00h, 74h, 03h,0D0h, 88h
		db	0B5h, 00h, 75h, 03h,0D0h, 88h
		db	0B5h, 00h, 76h, 03h,0D0h, 88h
		db	0B5h, 00h, 77h, 03h,0D0h, 88h
		db	0B5h, 00h, 78h, 03h,0D0h, 88h
		db	0B5h, 00h, 79h, 03h,0D0h, 88h
		db	0B5h, 00h, 7Ah, 03h,0D0h, 88h
		db	0B5h, 00h, 7Bh, 03h,0D0h, 88h
		db	0B5h
loc_6::
		add	[si+3],bh
		ror	byte ptr data_2+14h[bx+si],1	; ('') Rotate
;*		jge	loc_8			;*Jump if > or =
		db	 7Dh, 03h		;  Fixup - byte match
		ror	byte ptr data_2+14h[bx+si],1	; ('') Rotate
;*		jle	loc_9			;*Jump if < or =
		db	 7Eh, 03h		;  Fixup - byte match
		ror	byte ptr data_2+14h[bx+si],1	; ('') Rotate
;*		jg	loc_10			;*Jump if >
		db	 7Fh, 03h		;  Fixup - byte match
		ror	byte ptr data_2+14h[bx+si],1	; ('') Rotate
		add	byte ptr [bp+di],0D0h
		mov	ds:data_23e[di],dh
		add	dx,ax
		mov	ds:data_24e[di],dh
		add	dx,ax
		mov	ds:data_25e[di],dh
		add	dx,ax
		mov	ds:data_26e[di],dh
		add	dx,ax
		mov	ds:data_27e[di],dh
		add	dx,ax
		mov	ds:data_28e[di],dh
		add	dx,ax
		mov	ds:data_29e[di],dh
		add	dx,ax
		mov	ds:data_30e[di],dh
		add	dx,ax
		mov	ds:data_31e[di],dh
		add	dx,ax
		mov	ds:data_32e[di],dh
		add	dx,ax
		mov	ds:data_33e[di],dh
		add	dx,ax
		mov	ds:data_34e[di],dh
		add	dx,ax
		mov	ds:data_35e[di],dh
		add	dx,ax
		mov	ds:data_36e[di],dh
		add	dx,ax
		mov	ds:data_37e[di],dh
		add	dx,ax
		mov	ds:data_38e[di],dh
		add	dx,ax
		mov	ds:data_39e[di],dh
		add	dx,ax
		mov	ds:data_40e[di],dh
		add	dx,ax
		mov	ds:data_41e[di],dh
		add	dx,ax
		mov	ds:data_42e[di],dh
		add	dx,ax
		mov	ds:data_43e[di],dh
		add	dx,ax
		mov	ds:data_44e[di],dh
		add	dx,ax
		mov	ds:data_45e[di],dh
		add	dx,ax
		mov	ds:data_46e[di],dh
		add	dx,ax
		mov	ds:data_47e[di],dh
		add	dx,ax
		mov	ds:data_48e[di],dh
		add	dx,ax
		mov	ds:data_49e[di],dh
		add	dx,ax
		mov	ds:data_50e[di],dh
		add	dx,ax
		mov	ds:data_51e[di],dh
		add	dx,ax
		mov	ds:data_52e[di],dh
		add	dx,ax
		mov	ds:data_53e[di],dh
		add	dx,ax
		mov	ds:data_54e[di],dh
		add	dx,ax
		mov	ds:data_55e[di],dh
		add	dx,ax
		mov	ds:data_56e[di],dh
		add	dx,ax
		mov	ds:data_57e[di],dh
		add	dx,ax
		mov	ds:data_58e[di],dh
		add	dx,ax
		mov	ds:data_59e[di],dh
		add	dx,ax
		mov	ds:data_60e[di],dh
		add	dx,ax
		mov	ds:data_61e[di],dh
		add	dx,ax
		mov	ds:data_62e[di],dh
		add	dx,ax
		mov	ds:data_63e[di],dh
		add	dx,ax
		mov	ds:data_64e[di],dh
		add	dx,ax
		mov	ds:data_65e[di],dh
		add	dx,ax
		mov	ds:data_66e[di],dh
		add	dx,ax
		mov	ds:data_67e[di],dh
		add	dx,ax
		mov	ds:data_68e[di],dh
		add	dx,ax
		mov	ds:data_69e[di],dh
		add	dx,ax
		mov	ds:data_70e[di],dh
		add	dx,ax
		mov	ds:data_71e[di],dh
		add	dx,ax
		mov	ds:data_72e[di],dh
		add	dx,ax
		mov	ds:data_73e[di],dh
		add	dx,ax
		mov	ds:data_74e[di],dh
		add	dx,ax
		mov	ds:data_75e[di],dh
		add	dx,ax
		mov	ds:data_76e[di],dh
		add	dx,ax
		mov	ds:data_77e[di],dh
		add	dx,ax
		mov	ds:data_78e[di],dh
		add	dx,ax
		mov	ds:data_79e[di],dh
		add	dx,ax
		mov	ds:data_80e[di],dh
		add	dx,ax
		mov	ds:data_81e[di],dh
		add	dx,ax
		mov	ds:data_82e[di],dh
		add	dx,ax
		mov	ds:data_83e[di],dh
		add	dx,ax
		mov	ds:data_84e[di],dh
		add	dx,ax
		mov	ds:data_85e[di],dh
		add	dx,ax
		mov	ds:data_86e[di],dh
		add	dx,ax
		mov	ds:data_87e[di],dh
		add	dx,ax
		mov	ds:data_88e[di],dh
		add	dx,ax
		mov	ds:data_89e[di],dh
		add	dx,ax
		mov	ds:data_90e[di],dh
		add	dx,ax
		mov	ds:data_91e[di],dh
		add	dx,ax
		mov	ds:data_92e[di],dh
		add	dx,ax
		mov	ds:data_93e[di],dh
		add	dx,ax
		mov	ds:data_94e[di],dh
		add	dx,ax
		mov	ds:data_95e[di],dh
		add	dx,ax
		mov	ds:data_96e[di],dh
		add	dx,ax
		mov	ds:data_97e[di],dh
		add	dx,ax
		mov	ds:data_98e[di],dh
		add	dx,ax
		mov	ds:data_99e[di],dh
		add	dx,ax
		mov	ds:data_100e[di],dh
		add	dx,ax
		mov	ds:data_101e[di],dh
		add	dx,ax
		mov	ds:data_102e[di],dh
		add	dx,ax
		mov	ds:data_103e[di],dh
		add	dx,ax
		mov	ds:data_104e[di],dh
		add	dx,ax
		mov	ds:data_105e[di],dh
		add	dx,ax
		mov	ds:data_106e[di],dh
		add	dx,ax
		mov	ds:data_107e[di],dh
		add	dx,ax
		mov	ds:data_108e[di],dh
		add	dx,ax
		mov	ds:data_109e[di],dh
		add	dx,ax
		mov	ds:data_110e[di],dh
		add	dx,ax
		mov	ds:data_111e[di],dh
		add	dx,ax
		mov	ds:data_112e[di],dh
		add	dx,ax
		mov	ds:data_113e[di],dh
		add	dx,ax
		mov	ds:data_114e[di],dh
		add	dx,ax
		mov	ds:data_115e[di],dh
		add	dx,ax
		mov	ds:data_116e[di],dh
		add	dx,ax
		mov	ds:data_117e[di],dh
		add	dx,ax
		mov	ds:data_118e[di],dh
		add	dx,ax
		mov	ds:data_119e[di],dh
		add	dx,ax
		mov	ds:data_120e[di],dh
		add	dx,ax
		mov	ds:data_121e[di],dh
		add	dx,ax
		mov	ds:data_122e[di],dh
		add	dx,ax
		mov	ds:data_123e[di],dh
		add	dx,ax
		mov	ds:data_124e[di],dh
		add	dx,ax
		mov	ds:data_125e[di],dh
		add	dx,ax
		mov	ds:data_126e[di],dh
		add	dx,ax
		mov	ds:data_127e[di],dh
		add	dx,ax
		mov	ds:data_128e[di],dh
		add	dx,ax
		mov	ds:data_129e[di],dh
		add	dx,ax
		mov	ds:data_130e[di],dh
		add	dx,ax
		mov	ds:data_131e[di],dh
		add	dx,ax
		mov	ds:data_132e[di],dh
		add	dx,ax
		mov	ds:data_133e[di],dh
		add	dx,ax
		mov	ds:data_134e[di],dh
		add	dx,ax
		mov	ds:data_135e[di],dh
		add	dx,ax
		mov	ds:data_136e[di],dh
		add	dx,ax
		mov	ds:data_137e[di],dh
		add	dx,ax
		mov	ds:data_138e[di],dh
		add	dx,ax
		mov	ds:data_139e[di],dh
		add	dx,ax
		mov	ds:data_140e[di],dh
		add	dx,ax
		mov	ds:data_141e[di],dh
		add	dx,ax
		mov	ds:data_142e[di],dh
		add	dx,ax
		mov	ds:data_143e[di],dh
		add	dx,ax
		mov	ds:data_144e[di],dh
		add	dx,ax
		mov	ds:data_145e[di],dh
		add	dx,ax
		mov	ds:data_146e[di],dh
		add	dx,ax
		mov	ds:data_147e[di],dh
		add	dx,ax
		mov	ds:data_148e[di],dh
		add	dx,ax
		mov	ds:data_149e[di],dh
		add	dx,ax
		mov	[di],dh
		inc	word ptr ds:data_20e
		sub	si,2
;*		pop	cs			; Dangerous-8088 only
		db	0Fh			;  Fixup - byte match
;*		mov	cx,bx
		db	 89h,0D9h		;  Fixup - byte match
		cli				; Disable interrupts
		sub	word ptr ds:data_21e,2
		mov	si,ds:data_21e
		mov	si,data_4[si]
		test	si,3
		jnz	loc_11			; Jump if not zero
		db	0C1h,0EEh, 02h, 83h,0FEh, 0Fh
		db	 77h, 00h
loc_11::
		cmp	word ptr ds:data_21e,0
;*		pop	cs			; Dangerous-8088 only
		db	0Fh			;  Fixup - byte match
		test	bp,[bx]
		cli				; Disable interrupts
		retn
sub_3		endp

		db	 65h, 8Ah, 47h, 01h, 65h, 2Ah
		db	 07h,0F6h,0EDh,0D1h,0E0h, 65h
		db	 02h, 27h, 89h, 84h,0AAh, 05h
		db	0FFh, 06h, 64h, 03h, 83h,0EEh
		db	 02h, 0Fh, 89h, 97h,0FAh, 83h
		db	 2Eh,0A0h, 03h, 02h, 8Bh, 36h
		db	0A0h, 03h, 8Bh,0B4h, 90h, 01h
		db	0F7h,0C6h, 03h, 00h, 75h, 08h
		db	0C1h,0EEh, 02h, 83h,0FEh, 0Fh
		db	 77h, 00h, 83h, 3Eh,0A0h, 03h
		db	 00h, 0Fh, 85h,0EDh,0F9h,0C3h

;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;                              SUBROUTINE
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄

sub_5		proc	near
		db	 8Eh, 26h, 47h, 03h,0C1h,0C9h
		db	 04h,0C1h,0CAh, 04h, 8Ah,0D9h
		db	 8Ah,0FAh,0C1h,0E9h, 0Ch,0C1h
		db	0EAh, 0Ch,0FEh,0C3h, 64h, 8Ah
		db	 07h, 32h,0E4h,0FEh,0CBh, 64h
		db	 2Ah, 07h, 80h,0DCh, 00h, 52h
		db	0F7h,0E9h, 64h, 8Ah, 17h, 32h
		db	0F6h,0C1h,0E2h, 04h, 03h,0C2h
		db	 5Ah, 8Bh,0F0h,0FEh,0C7h,0FEh
		db	0C3h, 64h, 8Ah, 07h, 32h,0E4h
		db	0FEh,0CBh, 64h, 2Ah, 07h, 80h
		db	0DCh, 00h, 52h,0F7h,0E9h, 64h
		db	 8Ah, 17h, 32h,0F6h,0C1h,0E2h
		db	 04h, 03h,0C2h, 5Ah, 8Bh,0F8h
		db	 8Bh,0C7h, 2Bh,0C6h,0F7h,0EAh
		db	0C1h,0E6h, 04h, 03h,0C6h,0C3h
		db	 00h, 00h, 00h, 00h
sub_5		endp


seg_a		ends



;------------------------------------------------------------  seg_b   ----

seg_b		segment	byte public
		assume cs:seg_b  , ds:seg_b

		db	 3Eh, 0Bh, 44h, 0Bh, 4Ah, 0Bh
		db	 50h, 0Bh, 56h, 0Bh, 5Ch, 0Bh
		db	 62h, 0Bh, 68h, 0Bh, 6Eh, 0Bh
		db	 74h, 0Bh, 7Ah, 0Bh, 80h, 0Bh
		db	 86h, 0Bh, 8Ch, 0Bh, 92h, 0Bh
		db	 98h, 0Bh, 9Eh, 0Bh,0A4h, 0Bh
		db	0AAh, 0Bh,0B0h, 0Bh,0B6h, 0Bh
		db	0BCh, 0Bh,0C2h, 0Bh,0C8h, 0Bh
		db	0CEh, 0Bh,0D4h, 0Bh,0DAh, 0Bh
		db	0E0h, 0Bh,0E6h, 0Bh,0ECh, 0Bh
		db	0F2h, 0Bh,0F8h, 0Bh,0FEh, 0Bh
		db	 04h, 0Ch, 0Ah, 0Ch, 10h, 0Ch
		db	 16h, 0Ch, 1Ch
		db	0Ch, '"', 0Ch, '(', 0Ch, '.', 0Ch
		db	'4', 0Ch, ':', 0Ch, '@', 0Ch, 'F', 0Ch
		db	'L', 0Ch, 'R', 0Ch, 'X', 0Ch, '^', 0Ch
		db	'd', 0Ch, 'j', 0Ch, 'p', 0Ch, 'v', 0Ch
		db	'|', 0Ch
		db	 82h, 0Ch, 88h, 0Ch, 8Eh, 0Ch
		db	 94h, 0Ch, 9Ah, 0Ch,0A0h, 0Ch
		db	0A6h, 0Ch,0ACh, 0Ch,0B2h, 0Ch
		db	0B8h, 0Ch,0BEh, 0Ch,0C4h, 0Ch
		db	0CAh, 0Ch,0D0h, 0Ch,0D6h, 0Ch
		db	0DCh, 0Ch,0E2h, 0Ch,0E8h, 0Ch
		db	0EEh, 0Ch,0F4h, 0Ch,0FAh, 0Ch
		db	 00h, 0Dh, 06h, 0Dh, 0Ch, 0Dh
		db	 12h, 0Dh, 18h, 0Dh, 1Eh
data_2		db	0Dh, '$'
		db	0Dh, '*', 0Dh, '0', 0Dh, '6', 0Dh
		db	'<', 0Dh, 'B', 0Dh, 'H', 0Dh, 'N', 0Dh
		db	'T', 0Dh, 'Z', 0Dh, '`', 0Dh, 'f', 0Dh
		db	'l', 0Dh, 'r', 0Dh, 'x', 0Dh, '~', 0Dh
		db	 84h, 0Dh, 8Ah, 0Dh, 90h, 0Dh
		db	 96h, 0Dh, 9Ch, 0Dh,0A2h, 0Dh
		db	0A8h, 0Dh,0AEh, 0Dh,0B4h, 0Dh
		db	0BAh, 0Dh,0C0h, 0Dh,0C6h, 0Dh
		db	0CCh, 0Dh,0D2h, 0Dh,0D8h, 0Dh
		db	0DEh, 0Dh,0E4h, 0Dh,0EAh, 0Dh
		db	0F0h, 0Dh,0F6h, 0Dh,0FCh, 0Dh
		db	 02h, 0Eh, 08h, 0Eh, 0Eh, 0Eh
		db	 14h, 0Eh, 1Ah, 0Eh, 20h, 0Eh
		db	 26h, 0Eh, 2Ch, 0Eh, 32h, 0Eh
		db	 38h, 0Eh, 3Eh, 0Eh, 44h, 0Eh
		db	 4Ah, 0Eh, 50h, 0Eh, 56h, 0Eh
		db	 5Ch, 0Eh, 62h, 0Eh, 68h, 0Eh
		db	 6Eh, 0Eh, 74h, 0Eh, 7Ah, 0Eh
		db	 80h, 0Eh, 86h, 0Eh, 8Ch, 0Eh
		db	 92h, 0Eh, 98h, 0Eh, 9Eh, 0Eh
		db	0A4h, 0Eh,0AAh, 0Eh,0B0h, 0Eh
		db	0B6h, 0Eh,0BCh, 0Eh,0C2h, 0Eh
		db	0C8h, 0Eh,0CEh, 0Eh,0D4h, 0Eh
		db	0DAh, 0Eh,0E0h, 0Eh,0E6h, 0Eh
		db	0ECh, 0Eh,0F2h, 0Eh,0F8h, 0Eh
		db	0FEh, 0Eh, 04h, 0Fh, 0Ah, 0Fh
		db	 10h, 0Fh, 16h, 0Fh, 1Ch, 0Fh
		db	 22h, 0Fh, 28h, 0Fh, 2Eh, 0Fh
		db	 34h, 0Fh, 3Ah, 0Fh, 40h, 0Fh
		db	 46h, 0Fh, 4Ch, 0Fh, 52h, 0Fh
		db	 58h, 0Fh, 5Eh, 0Fh, 64h, 0Fh
		db	 6Ah, 0Fh, 70h, 0Fh, 76h, 0Fh
		db	 7Ch, 0Fh, 82h, 0Fh, 88h, 0Fh
		db	 8Eh, 0Fh, 94h, 0Fh, 9Ah, 0Fh
		db	0A0h, 0Fh,0A6h, 0Fh,0ACh, 0Fh
		db	0B2h, 0Fh,0B8h, 0Fh,0BEh, 0Fh
		db	0C4h, 0Fh,0CAh, 0Fh,0D0h, 0Fh
		db	0D6h, 0Fh,0DCh, 0Fh,0E2h, 0Fh
		db	0E8h, 0Fh
data_4		dw	0			; Data table (indexed access)
		db	 01h, 00h, 02h, 00h, 03h, 00h
		db	 04h, 00h, 05h, 00h, 06h, 00h
		db	 07h, 00h, 08h, 00h, 09h, 00h
		db	 0Ah, 00h, 0Bh, 00h, 0Ch, 00h
		db	 0Dh, 00h, 0Eh, 00h, 0Fh, 00h
		db	 10h, 00h, 11h, 00h, 12h, 00h
		db	 13h, 00h, 14h, 00h, 15h, 00h
		db	 16h, 00h, 17h, 00h, 18h, 00h
		db	 19h, 00h, 1Ah, 00h, 1Bh, 00h
		db	 1Ch, 00h, 1Dh, 00h, 1Eh, 00h
		db	 1Fh, 00h, 20h, 00h, 21h, 00h
		db	 22h, 00h, 23h, 00h, 24h, 00h
		db	 25h, 00h, 26h, 00h, 27h, 00h
		db	 28h, 00h, 2Ah, 00h, 2Ch, 00h
		db	 2Eh, 00h, 30h, 00h, 32h, 00h
		db	 34h, 00h, 36h, 00h, 38h, 00h
		db	 3Ah, 00h, 3Ch, 00h, 40h, 00h
		db	 44h, 00h, 48h, 00h, 4Ch, 00h
		db	 50h, 00h, 54h, 00h
		db	58h
data_5		db	0
		db	 5Ch, 00h, 60h, 00h, 64h, 00h
data_6		dw	0			; Data table (indexed access)
		db	 00h, 01h, 00h, 00h, 02h, 00h
		db	 00h, 03h, 00h, 00h, 03h, 01h
		db	 00h, 04h, 00h, 00h, 05h, 00h
		db	 00h, 06h, 00h, 00h, 07h, 00h
		db	 00h, 08h, 00h, 00h, 09h, 00h
		db	 00h, 0Ah, 00h, 00h, 0Bh, 00h
		db	 00h, 0Ch, 00h, 00h, 0Dh, 00h
		db	 00h, 0Eh, 00h, 00h, 0Fh, 00h
		db	 00h, 10h, 00h, 00h, 11h, 00h
		db	 00h, 12h, 00h, 00h, 13h, 00h
		db	 00h, 14h, 00h, 00h, 15h, 00h
		db	 00h, 16h, 00h, 00h, 17h, 00h
		db	 00h, 18h, 00h, 00h, 19h, 00h
		db	 00h, 1Ah, 00h, 00h, 1Bh, 00h
		db	 00h, 1Ch, 00h, 00h, 1Dh, 01h
		db	 00h, 1Eh, 02h, 00h, 1Fh, 03h
		db	 00h, 20h, 04h, 00h, 21h, 05h
		db	 00h, 22h, 06h, 00h, 23h, 07h
		db	 01h, 24h, 08h, 02h, 25h, 09h
		db	 03h, 26h, 0Ah, 04h, 27h, 0Bh
		db	 05h, 28h, 0Ch, 06h, 29h, 0Dh
		db	 07h, 2Ah, 0Eh, 08h, 2Bh, 0Fh
		db	 09h, 2Ch, 10h, 0Ah, 2Dh, 11h
		db	 0Bh, 2Eh, 12h, 0Ch, 2Fh, 13h
		db	 0Dh, 30h, 14h, 0Eh, 31h, 15h
		db	 0Fh, 32h, 16h, 10h, 33h, 17h
		db	 11h, 34h, 18h, 12h, 35h, 19h
		db	 13h, 36h, 1Ah, 14h, 37h, 1Bh
		db	 15h, 38h, 1Ch, 16h, 39h, 1Dh
		db	 17h, 3Ah, 1Eh, 18h, 3Bh, 1Fh
		db	 19h, 3Ch, 20h, 1Ah, 3Dh, 21h
		db	 1Bh, 3Eh, 22h, 1Ch, 32h, 0Ah
		db	 0Ah, 32h, 0Bh, 0Bh, 32h, 0Ch
		db	 0Ch, 32h, 0Dh, 0Dh, 32h, 0Eh
		db	 0Eh, 32h, 0Fh, 0Fh, 32h, 10h
		db	 10h, 32h, 11h, 11h, 32h, 12h
		db	 12h, 32h, 13h, 13h, 32h, 14h
		db	 14h, 32h, 15h, 15h, 32h, 16h
		db	 16h, 32h, 17h, 17h, 32h, 18h
		db	 18h, 32h, 19h, 19h, 32h, 1Ah
		db	 1Ah, 32h, 1Bh, 1Bh, 32h, 1Ch
		db	 1Ch, 32h, 1Dh, 1Dh, 32h, 1Eh
		db	 1Eh, 32h, 1Fh, 1Fh
		db	'2  2!!2""2##2$$'
		db	'2%%2'
data_8		dw	2626h			; Data table (indexed access)
		db	'2', 27h, 27h, '2((2))???'
		db	 9Dh, 30h, 00h, 00h, 04h, 00h
		db	 02h, 02h,0FFh,0FEh, 00h, 00h
		db	 00h, 00h, 00h, 00h
data_9		dw	0A000h
		db	 00h, 00h, 40h, 00h
		dw	seg_a
		dw	seg_b
data_10		dw	48D1h
		dw	58D1h
data_11		dw	68D1h
		db	 85h,0CFh, 01h, 00h

seg_b		ends



		end	start
[ RETURN TO DIRECTORY ]