     1                                  ; ****************************************************************************
     2                                  ; sncomni.s (TRDOS 386, TRDOS v2.0 - sample binary file, 'sncomni.prg')
     3                                  ; ----------------------------------------------------------------------------
     4                                  ; SNCOMNI.PRG ! TEST program !  TRDOS 386 VGA Functionality test !
     5                                  ;
     6                                  ; 02/09/2016
     7                                  ;
     8                                  ; [ Last Modification: 06/02/2017 ]
     9                                  ;
    10                                  ; Derived from source code of 'OMNISCENT.ASM' by Dirk Kppers
    11                                  ;          SNC_OMNI.COM	 (MSDOS) intro file, 1997
    12                                  ;
    13                                  ; Assembler: NASM 2.11
    14                                  
    15                                  ; (Original TASM -msdos- code has been modifed for TRDOS 386 system calls and
    16                                  ; other protected mode (TRDOS 386) interrupts.)
    17                                  ; ****************************************************************************
    18                                  
    19                                  ;		   ----====> Omniscent <====----
    20                                  ;
    21                                  ;   Omniscent was done by Pinker of SANCTION for the Mekka '97. The song
    22                                  ;   was written by Nyphton. It place XXX out of XXX.
    23                                  ;
    24                                  ;   Special thanks in alphabetical order :
    25                                  ;
    26                                  ;       Andreas Mautsch     (beta testing)
    27                                  ;       Axel Scheel Meyer   (MACM sources, nice IRC chat's)
    28                                  ;       Christian Cohnen    (for his help on perspective texture mapping and
    29                                  ;	   		designing world and script)
    30                                  ;       Daniel Weinand	    (song)
    31                                  ;       Funk                (for give me the idea trying a 4K Descent)
    32                                  ;       Stephanie Schepers  (moral and food support ;-) )
    33                                  ;
    34                                  ;       and all other SANCTION dudes for supporting this product !
    35                                  
    36                                  ; 16/10/2016
    37                                  ; 29/04/2016
    38                                  ; TRDOS 386 system calls (temporary list!)
    39                                  _ver 	equ 0
    40                                  _exit 	equ 1
    41                                  _fork 	equ 2
    42                                  _read 	equ 3
    43                                  _write	equ 4
    44                                  _open	equ 5
    45                                  _close 	equ 6
    46                                  _wait 	equ 7
    47                                  _creat 	equ 8
    48                                  _link 	equ 9
    49                                  _unlink	equ 10
    50                                  _exec	equ 11
    51                                  _chdir	equ 12
    52                                  _time 	equ 13
    53                                  _mkdir 	equ 14
    54                                  _chmod	equ 15
    55                                  _chown	equ 16
    56                                  _break	equ 17
    57                                  _stat	equ 18
    58                                  _seek	equ 19
    59                                  _tell 	equ 20
    60                                  _mount	equ 21
    61                                  _umount	equ 22
    62                                  _setuid	equ 23
    63                                  _getuid	equ 24
    64                                  _stime	equ 25
    65                                  _quit	equ 26	
    66                                  _intr	equ 27
    67                                  _fstat	equ 28
    68                                  _emt 	equ 29
    69                                  _mdate 	equ 30
    70                                  _video 	equ 31
    71                                  _audio	equ 32
    72                                  _timer	equ 33
    73                                  _sleep	equ 34
    74                                  _msg    equ 35
    75                                  _geterr	equ 36
    76                                  _rsvd1	equ 37
    77                                  _pri	equ 38
    78                                  _rele	equ 39
    79                                  _fff	equ 40
    80                                  _fnf	equ 41
    81                                  
    82                                  %macro sys 1-4
    83                                      ; 29/04/2016 - TRDOS 386 (TRDOS v2.0)	
    84                                      ; 03/09/2015	
    85                                      ; 13/04/2015
    86                                      ; Retro UNIX 386 v1 system call.	
    87                                      %if %0 >= 2   
    88                                          mov ebx, %2
    89                                          %if %0 >= 3    
    90                                              mov ecx, %3
    91                                              %if %0 = 4
    92                                                 mov edx, %4   
    93                                              %endif
    94                                          %endif
    95                                      %endif
    96                                      mov eax, %1
    97                                      ;int 30h
    98                                      int 40h ; TRDOS 386 (TRDOS v2.0)	   
    99                                  %endmacro
   100                                  
   101                                  ; TRDOS 386 (and Retro UNIX 386 v1) system call format:
   102                                  ; sys systemcall (eax) <arg1 (ebx)>, <arg2 (ecx)>, <arg3 (edx)>
   103                                  
   104                                  ; SNCOMNI.ASM
   105                                  ; ͻ
   106                                  ; 	This file is generated by The Interactive Disassembler (IDA)	    
   107                                  ; 	Copyright (c) 2010 by Hex-Rays SA, <support@hex-rays.com>	    
   108                                  ; 			 Licensed to: Freeware version			    
   109                                  ; ͼ
   110                                  ;
   111                                  ; Input	MD5   :	933E2716A5E585459024215F4468CDBC
   112                                  
   113                                  ; File Name   :	C:\dosprogs\MEMDUMP.COM ; SNC_OMNI.COM UNPACKED!
   114                                  ; Format      :	MS-DOS COM-file
   115                                  ; Base Address:	0h Range: 100h-60100h Loaded length: 60000h
   116                                  
   117                                  ; NASM version: Erdogan Tan, 14/08/2016 (Modified from MEMDUMP.ASM)
   118                                  ; (SNC_OMNI.COM -> unpacking by using DosBox Debug -> MEMDUMP.COM ->
   119                                  ; disassembling by using IDA Pro Free -> MEMDUMP.ASM -> converting to
   120                                  ; NASM syntax (manual) -> test with DosBox -> correcting different code by
   121                                  ; matching MEMDUMP.LST and SNCOMNI.LST files -> this file !!!)
   122                                  
   123                                  ;==============================================================================
   124                                  ;		   constants
   125                                  ;==============================================================================
   126                                  
   127                                  GMPort		equ 0331h
   128                                  CMD_NOTEON      equ 090h
   129                                  CMD_NOTEOFF     equ 080h
   130                                  CMD_CHANGEPARAM equ 0B0h
   131                                  CMD_CHANGEPRG   equ 0C0h
   132                                  MOD_ALLNOTESOFF equ 07Bh
   133                                  MAXFACES	equ 400
   134                                  MAXPOINTS	equ 400
   135                                  SONGSPEED   	equ 29
   136                                  XMAX		equ 320
   137                                  YMIN		equ 21
   138                                  YMAX		equ 179
   139                                  SUBRANGE	equ 16
   140                                  %define ASPECT_RATIO 1.2
   141                                  CENTERX		equ 160
   142                                  CENTERY		equ 100
   143                                  
   144                                  ;==============================================================================
   145                                  ;		   structures
   146                                  ;==============================================================================
   147                                  
   148                                  struc channel
   149 00000000 <res 00000002>           .del:	resw 1
   150 00000002 <res 00000001>           .trk:	resb 1
   151 00000003 <res 00000001>           .ln:	resb 1
   152 00000004 <res 00000002>           .adr:	resw 1
   153                                  endstruc
   154                                  
   155                                  struc matrix
   156 00000000 <res 00000024>          	resd 9
   157                                   .size:
   158                                  endstruc
   159                                  
   160                                  struc vector
   161 00000000 <res 00000004>           .x:	resd 1
   162 00000004 <res 00000004>           .y:	resd 1
   163 00000008 <res 00000004>           .z:	resd 1
   164                                   .size:
   165                                  endstruc
   166                                  
   167                                  struc point
   168 00000000 <res 00000002>           .x:	resw 1
   169 00000002 <res 00000002>           .y:	resw 1
   170 00000004 <res 00000002>           .z:	resw 1
   171 00000006 <res 00000002>           .s:	resw 1
   172                                   .size:
   173                                  endstruc
   174                                  
   175                                  struc face
   176 00000000 <res 0000000A>          	resw 5
   177                                   .size: 	
   178                                  endstruc
   179                                  
   180                                  struc object
   181 00000000 <res 00000002>           .panz:	resw 1
   182 00000002 <res 00000002>           .fanz:	resw 1
   183 00000004 <res 00000C80>           .p:	resb point.size*MAXPOINTS
   184 00000C84 <res 00000FA0>           .f:	resb face.size*MAXFACES
   185                                   .size:
   186                                  endstruc
   187                                  
   188                                  struc edges
   189 00000000 <res 00000004>           .x:	resd 1
   190 00000004 <res 00000004>           .u:	resd 1
   191 00000008 <res 00000004>           .v:	resd 1
   192 0000000C <res 00000004>           .w:	resd 1
   193 00000010 <res 00000004>           .s:	resd 1
   194                                   .size:	
   195                                  endstruc
   196                                  
   197                                  struc edge
   198 00000000 <res 0000000C>           .p:	resb vector.size
   199 0000000C <res 00000004>           .py:	resd 1
   200 00000010 <res 00000014>           .e:	resb edges.size
   201                                   .size:
   202                                  endstruc
   203                                  
   204                                  struc poly
   205 00000000 <res 000000B4>          	resb edge.size*5
   206                                   .size:	
   207                                  endstruc
   208                                  
   209                                  ;==============================================================================
   210                                  ;		      %macros
   211                                  ;==============================================================================
   212                                  ;***********************************************
   213                                  ;* descript. : start timer interrupt 70/s      *
   214                                  ;* parameter : none			       *
   215                                  ;* sideeffect: all		 	       *
   216                                  ;* back      : none			       *
   217                                  ;***********************************************
   218                                  %macro		startTimer 0
   219                                                  ;mov     ax,03508h
   220                                                  ;int     21h
   221                                                  ;mov     [word ptr Old08Irqseg],es
   222                                                  ;mov     [word ptr Old08Irqofs],bx
   223                                                  ;mov     ax,02508h
   224                                                  ;mov     dx,offset irqHandler08
   225                                                  ;int     21h
   226                                  		
   227                                  		mov	bx, 3409 ; 1193180/3409 = 350 ticks per second (*!)
   228                                  		call	setTimer
   229                                  
   230                                  		; start timer event
   231                                  		mov	ebx, 8400h ; Current Timer setup, Callback method 	
   232                                  		mov	ecx, 1	 ; 1 tick 
   233                                  		mov	edx, timer_callback ; timer callback service addr
   234                                  		mov	eax, 33	; 'systimer'
   235                                  		int	40h	; TRDOS 386 system call
   236                                  		jc	loc_err_exit
   237                                  
   238                                  		mov	[timer_event_number], al 
   239                                  
   240                                  %endmacro
   241                                  
   242                                  ;***********************************************
   243                                  ;* descript. : stop timer interrupt            *
   244                                  ;* parameter : none			       *
   245                                  ;* sideeffect: all		 	       *
   246                                  ;* back      : none			       *
   247                                  ;***********************************************
   248                                  %macro		stopTimer 0
   249                                                  ;push    ds
   250                                                  ;xor     bx,bx                  ; set timer to default
   251                                                  ;call    setTimer		; 18.2 ticks per second
   252                                                  ;mov     ax,02508h              ; restore old IRQ-vector
   253                                                  ;lds     dx,[Old08Irqptr]
   254                                                  ;int     21h
   255                                                  ;pop     ds
   256                                  
   257                                  		xor	bx, bx	; set timer to default (18.2 Hz) value
   258                                  		call	setTimer
   259                                  
   260                                  		; Stop timer event
   261                                  		movzx	ebx, byte [timer_event_number]
   262                                  		;and	bl, bl
   263                                  		;jz	short r_t_m ; 0 = error (no timer event)
   264                                   		; bh = 0 -> stop timer event
   265                                  		mov	eax, 33	; 'systimer'
   266                                  		int	40h	; TRDOS 386 system call
   267                                  ;r_t_m:
   268                                  %endmacro
   269                                  
   270                                  ;***********************************************
   271                                  ;* descript. : start keyboard handler          *
   272                                  ;* parameter : none			       *
   273                                  ;* sideeffect: all		 	       *
   274                                  ;* back      : none			       *
   275                                  ;***********************************************
   276                                  %macro		startKBDHandler 0
   277                                                  ;mov     ax,03509h
   278                                                  ;int     21h
   279                                                  ;mov     [word ptr Old09Irqseg],es
   280                                                  ;mov     [word ptr Old09Irqofs],bx
   281                                                  ;mov     ax,02509h
   282                                                  ;mov     dx,offset irqHandler09
   283                                                  ;int     21h
   284                                  
   285                                  		; TRDOS 386 already have a CRTL+BRK
   286                                  		; preview feature to call 'sysexit'
   287                                  		; /// nothing to do here ! ///
   288                                  		; 10/12/2016 - Erdogan Tan
   289                                  		nop
   290                                  %endmacro
   291                                  
   292                                  ;***********************************************
   293                                  ;* descript. : stop keyboard handler           *
   294                                  ;* parameter : none			       *
   295                                  ;* sideeffect: all		               *
   296                                  ;* back      : none		               *
   297                                  ;***********************************************
   298                                  %macro		stopKBDHandler 0
   299                                                  ;push    ds
   300                                                  ;mov     ax,02509h             ; restore old IRQ-vector
   301                                                  ;lds     dx,[Old09Irqptr]      ;
   302                                                  ;int     21h
   303                                                  ;pop     ds
   304                                  
   305                                  		; TRDOS 386 already have a CRTL+BRK
   306                                  		; preview feature to call 'sysexit'
   307                                  		; /// nothing to do here ! ///
   308                                  		; 10/12/2016 - Erdogan Tan
   309                                  		nop
   310                                  %endmacro
   311                                  
   312                                  ;***********************************************
   313                                  ;* descript. : zero null-initialized data      *
   314                                  ;* parameter : none			       *
   315                                  ;* sideeffect: all		               *
   316                                  ;* back      : none		               *
   317                                  ;***********************************************
   318                                  %macro		nullData 0
   319                                  		;mov	di, nullstart
   320                                                  mov	edi, nullstart
   321                                  		;mov	cx, nullend-nullstart
   322                                                  mov	ecx, nullend-nullstart ; ??
   323                                  		xor	eax, eax
   324                                                  rep	stosb
   325                                  %endmacro
   326                                  
   327                                  ;***********************************************
   328                                  ;* descript. : set textmode		       *
   329                                  ;* parameter : none		               *
   330                                  ;* sideeffect: all		               *
   331                                  ;* back      : none		               *
   332                                  ;***********************************************
   333                                  %macro		set80x25 0
   334                                  		mov	ax, 3
   335                                  		;int	10h	; - VIDEO - SET	VIDEO MODE
   336                                  				; AL = mode
   337                                  		int	31h	; TRDOS 386 Video interrupt 
   338                                  %endmacro
   339                                  
   340                                  ;***********************************************
   341                                  ;* descript. : set gfx-mode 320x200            *
   342                                  ;* parameter : none		               *
   343                                  ;* sideeffect: all		               *
   344                                  ;* back      : none		               *
   345                                  ;***********************************************
   346                                  %macro		set320x200 0
   347                                  		mov	ax, 13h
   348                                  		;int	10h		; - VIDEO - SET	VIDEO MODE
   349                                  					; AL = mode
   350                                  		int	31h ; TRDOS 386 - Video interrupt
   351                                  %endmacro
   352                                  
   353                                  ;***********************************************
   354                                  ;* descript. : calculate a smooth colorrange   *
   355                                  ;* parameter : none             	       *
   356                                  ;* sideeffect: all              	       *
   357                                  ;* back	     : none                	       *
   358                                  ;***********************************************
   359                                  %macro		makePalette 0
   360                                  		;mov	bx, 3
   361                                  		mov	ebx, 3
   362                                  mPcolor:
   363                                  		;mov	si, colors
   364                                  		mov	esi, colors
   365                                  		mov	edi, palette
   366                                  		xor	dh, dh
   367                                  		lodsb
   368                                  		;movzx	cx, al
   369                                  		movzx	ecx, al ; ??
   370                                  mPouter:
   371                                  		push	ecx
   372                                  		mov	cl, [esi]
   373                                  		mov	ah, [ebx+esi]
   374                                  		sub	ax, dx
   375                                  		push	edx
   376                                  		cwd
   377                                  		idiv	cx
   378                                  		pop	edx
   379                                  mPinner:
   380                                  		add	dx, ax
   381                                  		mov	[edi+ebx-1], dh
   382                                  		add	di, 3
   383                                  		loop	mPinner
   384                                  		add	si, 4
   385                                  		pop	ecx
   386                                  		loop	mPouter
   387                                  		dec	bx
   388                                  		jnz	short mPcolor
   389                                  %endmacro
   390                                  
   391                                  ;***********************************************
   392                                  ;* descript. : reset the GM-Port and switch to *
   393                                  ;*             UART mode.		       *
   394                                  ;* parameter : none			       *
   395                                  ;* sideeffect: dx,al		               *
   396                                  ;* back      : none		               *
   397                                  ;***********************************************
   398                                  %macro		resetGM 0
   399                                  		mov	dx, GMPort
   400                                  		mov	al, 0FFh
   401                                  		;out	dx, al
   402                                  	
   403                                  		mov	ah, 1 ; out (byte)
   404                                  		int	34h ; TRDOS 386 - IOCTL interrupt
   405                                  		; cl = 0
   406                                  		dec	ah ; 0
   407                                  		;sub	cl, cl
   408                                  resGMbusy1:
   409                                  		dec	cl
   410                                  		jz	short rGMerror	;{ timeout }
   411                                  		;in	al, dx		;{ read acknowledge }
   412                                  		
   413                                  		;mov	ah, 0 ; in (byte)
   414                                  		int	34h ; TRDOS 386 - IOCTL interrupt
   415                                  		
   416                                  		test	al, 80h
   417                                  		jnz	short resGMbusy1
   418                                  		dec	dx
   419                                  		;in	al, dx
   420                                  
   421                                  		;mov	ah, 0 ; in (byte)
   422                                  		int	34h ; TRDOS 386 - IOCTL interrupt
   423                                  
   424                                  		cmp	al, 0FEh
   425                                  		jne	short rGMerror
   426                                  		inc	dx		;{ switch into UART mode }
   427                                  resGMbusy2:
   428                                  		;in	al, dx
   429                                  
   430                                  		;mov	ah, 0 ; in (byte)
   431                                  		int	34h ; TRDOS 386 - IOCTL interrupt
   432                                  		
   433                                  		test	al, 40h
   434                                  		jnz	short resGMbusy2
   435                                  		mov	al, 3Fh
   436                                  		;out	dx, al
   437                                  
   438                                  		;mov	ah, 1 ; out (byte)
   439                                  		inc	ah ; 1
   440                                  		int	34h ; TRDOS 386 - IOCTL interrupt
   441                                  rGMerror:
   442                                  %endmacro
   443                                  
   444                                  ;***********************************************
   445                                  ;* descript. : mute midi channels 0..15        *
   446                                  ;* parameter : none                	       *
   447                                  ;* sideeffect: ax,cx		               *
   448                                  ;* back		 : none                	       *
   449                                  ;***********************************************
   450                                  %macro		silence 0
   451                                  		mov	cx, 15 ; 0Fh
   452                                  Siloop:	
   453                                  		mov	ax, cx
   454                                  		add	al, CMD_CHANGEPARAM ; 0B0h
   455                                  		call	writeGM
   456                                  		mov	al, MOD_ALLNOTESOFF ; 7Bh
   457                                  		call	writeGM
   458                                  		xor	al, al
   459                                  		call	writeGM
   460                                  		loop	Siloop
   461                                  Sinosound:
   462                                  %endmacro
   463                                  
   464                                  ;***********************************************
   465                                  ;* descript. : create the reactor wall texture *
   466                                  ;* parameter : none		               *
   467                                  ;* sideeffect: ax,bx,cx,di,es                  *
   468                                  ;* back      : none			       *
   469                                  ;* length    : 45 bytes		               *
   470                                  ;***********************************************
   471                                  %macro		reactorWall 0
   472                                  		movzx	edi, word [tseg] ; 05/02/2017
   473                                  		shl	edi, 4 ; *16
   474                                  		mov	cx, 4096 ; 1000h
   475                                  rsmloop:
   476                                  		mov	ax, di
   477                                  		;and	ax, 0FFFh 
   478                                  		test	al, 8
   479                                  		jle	short rsnonot1
   480                                  		not	al
   481                                  rsnonot1:
   482                                  		and	al, 15 ; 0Fh
   483                                  		mov	bx, ax
   484                                  		mov	ax, di
   485                                  		and	ax, 0FFFh ; 18/12/2016
   486                                  		shr	ax, 6
   487                                  		test	al, 8
   488                                  		jle	short rsnonot2
   489                                  		not	al
   490                                  rsnonot2:
   491                                  		and	al, 15 ; 0Fh
   492                                  		cmp	al, bl
   493                                  		jle	short rstakeal
   494                                  		mov	ax, bx
   495                                  rstakeal:
   496                                  		add	al, 224 ; 0E0h
   497                                  		stosb
   498                                  		loop	rsmloop
   499                                  %endmacro
   500                                  
   501                                  ;***********************************************
   502                                  ;* descript. : calc background-fractal         *
   503                                  ;* parameter : none		               *
   504                                  ;* sideeffect: ax,bx,cx,si,di,es	       *
   505                                  ;* back      : none			       *
   506                                  ;***********************************************
   507                                  %macro		createFrac2 0
   508                                  		movzx	edi, word [tseg+36] ; 05/02/2017
   509                                  		shl	edi, 4 ;*16
   510                                  		mov	ebx, edi
   511                                  		mov	al, 20	; 14h
   512                                  		call	setFrac
   513                                  		mov	edi, ebx
   514                                  		add	di, 64  ; 16/01/2017
   515                                  		;mov	cx, 4096-64 ; 0FC0h
   516                                  		mov	ecx, 4096-64 ; ??
   517                                  		mov	ebx, 4  ; 16/12/2016
   518                                  cF1loop:
   519                                  		;mov	bx, 4
   520                                  		call	rnd
   521                                  		add	al, [edi-64]  ; byte [es:di-64] (*) 16 bit
   522                                  		add	al, [edi-63]  ; byte [es:di-63] (*)
   523                                  		dec	ax
   524                                  		shr	ax, 1
   525                                  		stosb
   526                                  		loop	cF1loop
   527                                  %endmacro
   528                                  
   529                                  ;***********************************************
   530                                  ;* descript. : calc random noise fractal       *
   531                                  ;* parameter : none		               *
   532                                  ;* sideeffect: ax,bx,cx,si,di,es	       *
   533                                  ;* back      : none			       *
   534                                  ;***********************************************
   535                                  %macro		createFrac3 0
   536                                  		movzx	edi, word [tseg+38] ; 05/02/2017
   537                                  		shl	edi, 4 ; *16
   538                                  		mov	dword [_es], edi ; 06/02/2017
   539                                  		mov	al, 3
   540                                  		call	setFrac
   541                                  		;mov	cx, 4096 ; 1000h
   542                                  		mov	ecx, 4096 ; ??
   543                                  		mov	ebx, ecx
   544                                  cF3loop:
   545                                  		;mov	bx, 4096 ; 1000h
   546                                  		call	rnd
   547                                  		mov	edi, dword [_es] ; 06/02/2017
   548                                  		add	di, ax ; 16/01/2017
   549                                  		inc	byte [edi]
   550                                  		loop	cF3loop
   551                                  %endmacro
   552                                  
   553                                  ;***********************************************
   554                                  ;* descript. : init stars (positions and state)*
   555                                  ;* parameter : none			       *
   556                                  ;* sideeffect: eax,bx,cx,edx,si,di,es          *
   557                                  ;* back      : none		               *
   558                                  ;***********************************************
   559                                  %macro		initStars 0
   560                                  		;mov	cx, 30 ; 1Eh
   561                                  		mov	ecx, 30 ; ??
   562                                  		mov	edi, stars
   563                                  		xor	ebx, ebx ; ? 18/12/2016
   564                                  iSloop:	
   565                                  		mov	bx, 256 ; 100h
   566                                  		call	rnd
   567                                  		stosb
   568                                  		mov	bx, 4096-(64*5) ; 0EC0h
   569                                  		add	bx, 128 ; 80h
   570                                  		call	rnd
   571                                  		add	ax, 64  ; 40h
   572                                  		stosw
   573                                  		loop	iSloop
   574                                  %endmacro
   575                                  
   576                                  ;***********************************************
   577                                  ;* descript. : add effects to fractals	       *
   578                                  ;* parameter : none		               *
   579                                  ;* sideeffect: ax,bx,cx,di,es		       *
   580                                  ;* back      : none		               *
   581                                  ;***********************************************
   582                                  %macro		effects 0
   583                                  		; effects
   584                                  		;mov	cx, 26		; 1Ah
   585                                  		mov	ecx, 26 ; ??
   586                                  		mov	esi, aE
   587                                  		;mov	si, aE
   588                                  		xor	ebx, ebx
   589                                  		xor	edi, edi
   590                                  effmloop:
   591                                  		push	cx
   592                                  		mov	bl, [esi]	; mseg+effect
   593                                  		mov	dl, bl
   594                                  		shr	dl, 4
   595                                  		and	bl, 0Fh ; 15
   596                                  		shl	bl, 1
   597                                  		movzx	ebp, word [ebx+tseg] ; 05/02/2017
   598                                  		shl	ebp, 4 ; *16
   599                                  		movzx	cx, byte [esi+2] ; y1
   600                                  effyloop:
   601                                  		movzx	bx, byte [esi+1] ; x1
   602                                  effxloop:
   603                                  		mov	di, cx
   604                                  		shl	di, 6
   605                                  		add	di, bx
   606                                  		mov	al, dl
   607                                  		dec	al
   608                                  		jz	short effect1
   609                                  		dec	al
   610                                  		jz	short effect2
   611                                  		mov	ax, bx
   612                                  		add	ax, cx
   613                                  		and	al, 4
   614                                  		;jz	short effdonot
   615                                  		jz	short effect1
   616                                  		mov	al, 152 ; 98h
   617                                  effdonot:
   618                                  		jmp	short effect1
   619                                  effect2:
   620                                  		mov	al, [ebp+edi] ; 16/12/2016
   621                                  effect1:
   622                                  		add	al, [esi+5]	; value
   623                                  		mov	[ebp+edi], al ; 16/12/2016
   624                                  		inc	bx
   625                                  		cmp	bl, [esi+3]	; x2
   626                                  		jle	short effxloop
   627                                  		inc	cx
   628                                  		cmp	cl, [esi+4]	; y2
   629                                  		jle	short effyloop
   630                                  		add	si, 6
   631                                  		pop	cx
   632                                  		loop	effmloop
   633                                  %endmacro
   634                                  
   635                                  ;***********************************************
   636                                  ;* descript. : copy fractals and add value     *
   637                                  ;* parameter : none		               *
   638                                  ;* sideeffect: al,cx,di,es,fs		       *
   639                                  ;* back      : none		               *
   640                                  ;***********************************************
   641                                  %macro		addFractals 0
   642                                  		mov	esi, aF
   643                                  		;mov	si, aF
   644                                  		mov	dl, 4
   645                                  		xor	ebx, ebx
   646                                  aFloop:
   647                                  		mov	bl, dl
   648                                  		movzx	edi, word [ebx+tseg] ; es: ; 05/02/2017
   649                                  		shl	edi, 4 ; *16
   650                                  		lodsw
   651                                  		mov	bl, al ; 16 bit offset (original)
   652                                  		movzx	ebp, word [ebx+tseg] ; fs: ; 05/02/2017
   653                                  		shl	ebp, 4 ; *16 
   654                                  		;mov	cx, 4096 ; 1000h
   655                                  		mov	ecx, 4096 ; ??
   656                                  aFiloop:
   657                                  		mov	al, [ebp]  ; [fs:di]
   658                                  		add	al, ah
   659                                  		stosb
   660                                  		inc	ebp
   661                                  		loop	aFiloop
   662                                  		add	dl, 2
   663                                  		cmp	dl, 30
   664                                  		jle	short aFloop
   665                                  %endmacro
   666                                  
   667                                  ;***********************************************
   668                                  ;* descript. : calculate and initalize textures*
   669                                  ;* parameter : none			       *
   670                                  ;* sideeffect: al,cx,di,es,fs		       *
   671                                  ;* back      : none			       *
   672                                  ;***********************************************
   673                                  %macro		addLava 0
   674                                  		movzx	ebp, word [tseg+22] ; 05/02/2017
   675                                  		shl	ebp, 4 ; *16
   676                                  		mov	edi, 4095	; 0FFFh
   677                                  		;mov	cx, 20		; 14h
   678                                  		mov	ecx, 20 ; ??
   679                                  		mov	al, 94		; 5Eh
   680                                  aLyloop:
   681                                  		push	ecx
   682                                  		shl	cx, 3
   683                                  aLxloop:
   684                                  		push	edi
   685                                  		push	eax
   686                                  		;mov	bx, 64		; 40h
   687                                  		mov	ebx, 64
   688                                  		call	rnd
   689                                  		sub	di, ax
   690                                  		pop	eax
   691                                  		mov	[ebp+edi], al ; 17/01/2017
   692                                  		pop	edi
   693                                  		loop	aLxloop
   694                                  		pop	ecx
   695                                  		dec	al
   696                                  		sub	di, 64 		; 40h
   697                                  		loop	aLyloop
   698                                  %endmacro
   699                                  
   700                                  ;***********************************************
   701                                  ;* descript. : calculate and initalize textures*
   702                                  ;* parameter : none		               *
   703                                  ;* sideeffect: al,cx,di,es,fs		       *
   704                                  ;* back      : none		               *
   705                                  ;***********************************************
   706                                  %macro		initTextures 0
   707                                  		;mov	bx, 34	; 22h
   708                                  		mov	ebx, 34
   709                                  		push	800	; 320h
   710                                  		push	5
   711                                  		call	createFrac1
   712                                  		;mov	bx, 32	; 20h
   713                                  		mov	ebx, 32
   714                                  		push	112	; 70h
   715                                  		push	15	; 0Fh
   716                                  		call	createFrac1
   717                                  		createFrac2
   718                                  		createFrac3
   719                                  		initStars
   720                                  		reactorWall
   721                                  		addFractals
   722                                  		effects
   723                                  		addLava
   724                                  %endmacro
   725                                  
   726                                  ;***********************************************
   727                                  ;* descript. : cycle "range" colors at "base"  *
   728                                  ;* parameter : none		               *
   729                                  ;* sideeffect: ax,(bl),cx,si,di,es             *
   730                                  ;* back      : none			       *
   731                                  ;***********************************************
   732                                  %macro		colorCycle 0
   733                                  		base	equ 6*32
   734                                                  range	equ 32
   735                                  		
   736                                  		mov	edi, palette+(base*3)
   737                                  		mov	esi, edi
   738                                  		lodsw
   739                                  		;mov	bl,[esi]  ; works only with fire (no blue)
   740                                  		inc	esi
   741                                  		;mov	cx, (range*3-3)
   742                                  		mov	ecx, (range*3-3) ; ??
   743                                  		rep movsb
   744                                  		stosw
   745                                  		;mov	[edi],bl  ; works only with fire (no blue)
   746                                  %endmacro
   747                                  
   748                                  ;***********************************************
   749                                  ;* descript. : animate the stars	       *
   750                                  ;* parameter : none			       *
   751                                  ;* sideeffect: ax,bx,cx,dl,si,di,es            *
   752                                  ;* back      : none			       *
   753                                  ;***********************************************
   754                                  %macro		animStars 0
   755                                  		_base	equ 7*32
   756                                  
   757                                  		movzx	edi, word [tseg+2] ; 05/02/2017
   758                                  		shl	edi, 4 ; *16
   759                                  		mov	ebp, edi
   760                                  		call	clearFrac
   761                                  
   762                                  		;mov	ecx, 30
   763                                  		;mov	cl, 30	; 1Eh
   764                                  		mov	ecx, 30 ; ??
   765                                  		mov	ebx, stars
   766                                  		;mov	bx, stars
   767                                  aSoloop:
   768                                  		dec	byte [ebx]
   769                                  		mov	ah, byte [ebx]
   770                                  		and	ah, 63	; 3Fh
   771                                  		cmp	ah, 31	; 1Fh
   772                                  		jbe	short aSnonot
   773                                  		not	ah
   774                                  		and	ah, 31	; 1Fh
   775                                  aSnonot:
   776                                  		shr	ah, 1
   777                                  		; 05/02/2017
   778                                  		movzx	edi, word [ebx+1]
   779                                  		add	edi, ebp
   780                                  
   781                                  		push	cx
   782                                  		push	bx
   783                                  
   784                                  		mov	edx, 64-5 ; 3Bh
   785                                  		mov	cx, _base*256+0 ; 0E000h
   786                                  		call	setstarbob
   787                                  
   788                                  		pop	bx
   789                                  		pop	cx
   790                                  		add	bx, 3
   791                                  		loop	aSoloop
   792                                  %endmacro
   793                                  
   794                                  ;***********************************************
   795                                  ;* descript. : calculate shading tab           *
   796                                  ;* parameter : none		               *
   797                                  ;* sideeffect: ax,bl,cx,di,es                  *
   798                                  ;* back      : none		               *
   799                                  ;***********************************************
   800                                  %macro		calcShadeTab 0
   801                                  		mov	edi, shadetab
   802                                  		xor	bl, bl
   803                                  cSolp:
   804                                  		inc	bl
   805                                  		;xor	cx, cx
   806                                  		xor	ecx, ecx ; ??
   807                                  cSilp1:
   808                                  		mov	al, cl
   809                                  		and	al, 31	; 1Fh
   810                                  		mul	bl
   811                                  		add	ax, ax
   812                                  		mov	al, cl
   813                                  		and	al, 224	; 0E0h
   814                                  		add	al, ah
   815                                  		stosb
   816                                  		inc	cl
   817                                  		cmp	cl, 192 ; 0C0h
   818                                  		jne	short cSilp1
   819                                  cSilp2:
   820                                  		mov	al, cl
   821                                  		stosb
   822                                  		inc	cl
   823                                  		jnz	short cSilp2
   824                                  		cmp	bl, 128	; 80h
   825                                  		jne	short cSolp
   826                                  %endmacro
   827                                  
   828                                  ;***********************************************
   829                                  ;* descript. : expand a song       	       *
   830                                  ;* parameter : si:song base adress	       *
   831                                  ;* sideeffect: ax,bx,cx,dx,si,di               *
   832                                  ;* back      : none                	       *
   833                                  ;***********************************************
   834                                  %macro		expandSong 0
   835                                                  mov	esi, credits
   836                                                  mov	ebx, channels
   837                                                  mov	edi, songdata
   838                                  EPSwhile:	lodsw
   839                                                  dec	al
   840                                                  js      short EPSendwhile
   841                                                  mov	[ebx+channel.trk], al ; [ebx+2]
   842                                                  add	al, CMD_CHANGEPRG ; 0C0h
   843                                                  call	setinstr
   844                                                  mov	[ebx+channel.adr], di ; [ebx+4]	
   845                                                 	call	expand
   846                                                  xor	al, al
   847                                                  stosb
   848                                                  add	bx, 6
   849                                                  inc	word [tracks]
   850                                                  jmp	short EPSwhile
   851                                  EPSendwhile:
   852                                  %endmacro
   853                                  
   854                                  ;***********************************************
   855                                  ;* descript. : parse the script,rotate and move*
   856                                  ;* parameter : none                	       *
   857                                  ;* sideeffect: all		               *
   858                                  ;* back      : none		               *
   859                                  ;***********************************************
   860                                  %macro		scriptIt 0
   861                                   		; scriptIt
   862                                  		;mov	cx, [ticker]
   863                                  		movzx	ecx, word [ticker] ; 22/01/2017
   864                                  		mov	word [ticker], 0
   865                                  		or	cx, cx
   866                                  		jz	sItickerNull
   867                                  sImloop:
   868                                  		push	ecx
   869                                  		mov	esi, zspeed
   870                                  		;mov	si, zspeed
   871                                  		;dec	word  [esi+10]	      ;	scriptanz
   872                                  		dec	word [scriptanz]
   873                                  		jns	short sIwaitTimer
   874                                  		;mov	bx, [esi+8]	      ;	scriptptr
   875                                  		;movzx	ebx, word [esi+8]	
   876                                  		movzx	ebx, word [scriptptr]
   877                                  		mov	al, [ebx+script]
   878                                  		or	al, al
   879                                  		jz	_exit_
   880                                  		mov	bx, ax
   881                                  		and	bl, 7
   882                                  		;mov	[esi+12], bl	      ;	scriptins
   883                                  		mov	[scriptins], bl
   884                                  		dec	bl
   885                                  		jnz	short sInegateTurn
   886                                  		; (cmd = NEG ZSTEP)  
   887                                  		neg	word [zstep]
   888                                  sInegateTurn:
   889                                  		and	ax, 0F8h
   890                                  		add	ax, ax
   891                                  		;mov	[esi+10], ax	      ; scriptanz
   892                                  		mov	[scriptanz], ax
   893                                  		;inc	word [esi+8]	      ; scriptptr
   894                                  		inc	word [scriptptr]
   895                                  sIwaitTimer:
   896                                  		;mov	al, [esi+12]	      ;	scriptins
   897                                  		mov	al, [scriptins]
   898                                  		cbw
   899                                  		sub	ch, ch ; 23/01/2017
   900                                  		dec	ax
   901                                  		jnz	short sInoturn
   902                                  		; (cmd = NEG ZSTEP)  
   903                                  		mov	bx, [zstep]
   904                                  		;add	[esi+6], bx	      ; ozw
   905                                  		add	[ozw], bx
   906                                  		jmp	short sI_1 ; 23/01/2017	
   907                                  sInoturn:
   908                                  		mov	cl, 3
   909                                  sIrotateLoop:
   910                                  		dec	ax
   911                                  		jnz	short sInoIncrement
   912                                  		; (cmd = INC SPEED or INC XSTEP or INC YSTEP)  
   913                                  		inc	word [esi]	      ; zspeed, oxw, oyw
   914                                  		jmp	short sI_1 ; 23/01/2017	 	   	
   915                                  sInoIncrement:
   916                                  		dec	ax
   917                                  		jnz	short sInoDecrement
   918                                  		; (cmd = DEC SPEED or DEC XSTEP or DEC YSTEP)  
   919                                  		dec	word [esi]	      ; zspeed, oxw, oyw
   920                                  		jmp	short sI_1 ; 23/01/2017	 
   921                                  sInoDecrement:
   922                                  		inc	esi
   923                                  		inc	esi
   924                                  		loop	sIrotateLoop
   925                                  sI_1: ; 23/01/2017
   926                                  		;mov	si, zspeed+2	      ; oxw 	
   927                                  		mov	si, oxw	
   928                                  		mov	cl, 3
   929                                  		xor	eax, eax
   930                                  sIpushloop:
   931                                  		lodsw			      ; oxw, oyw, ozw	
   932                                  		sar	ax, 2
   933                                  		push	eax
   934                                  		loop	sIpushloop
   935                                  
   936                                  		imul	ax, word [si-4], 16   ; [oyw]*16 	
   937                                  		push	eax		        	
   938                                  		call	calcRotMat
   939                                  
   940                                  		mov	cl, 3
   941                                  		xor	esi, esi
   942                                  sImoveLoop:
   943                                  		fld	dword [esi+owmat+24]
   944                                  		fimul	word [zspeed]
   945                                  		fidiv	word [CONST1792]
   946                                  		fadd	dword [esi+ob]
   947                                  		fstp	dword [esi+ob]
   948                                  		add	si, 4
   949                                  		loop	sImoveLoop
   950                                  		pop	ecx
   951                                  		dec	cx
   952                                  		jnz	sImloop
   953                                  sItickerNull:
   954                                  %endmacro
   955                                  
   956                                  ;***********************************************
   957                                  ;* descript. : rotate all points from o -> rp  *
   958                                  ;* parameter : none                	       *
   959                                  ;* sideeffect: all		               *
   960                                  ;* back      : none		               *
   961                                  ;***********************************************
   962                                  %macro		rotation 0
   963                                  		;mov	cx, [o+object.panz]
   964                                  		movzx	ecx, word [o+object.panz] ; ??
   965                                  		mov	esi, o+object.p
   966                                  		mov	edi, rp
   967                                  rotmlp:
   968                                  		;mov	bx, wmat
   969                                  		mov	ebx, wmat
   970                                  		mov	dx, 3
   971                                  rotilp:	
   972                                  		fild	word [esi+0] ; point.x
   973                                  		fsub	dword [ob+vector.x]
   974                                  		fmul	dword [ebx+0]
   975                                  		fild	word [esi+2] ; point.y
   976                                  		fsub	dword [ob+vector.y]
   977                                  		fmul	dword [ebx+4]
   978                                  		fild	word [esi+4] ; point.z
   979                                  		fsub	dword [ob+vector.z]
   980                                  		fmul	dword [ebx+8]
   981                                  		;fadd	
   982                                  		;fadd
   983                                  		faddp
   984                                  		faddp
   985                                  		fstp	dword [edi]
   986                                  		add	di, 4
   987                                  		;add	edi, 4
   988                                  		add	bx, 12	; 0Ch
   989                                  		dec	dx
   990                                  		jnz	short rotilp
   991                                  		add	si, 8 ; next point (29/01/2017)
   992                                  		;add	esi, 8
   993                                  		loop	rotmlp
   994                                  %endmacro
   995                                  
   996                                  ;***********************************************
   997                                  ;* descript. : sort faces by z-koord	       *
   998                                  ;* parameter : none		               *
   999                                  ;* sideeffect: ax,bx,cx,dx,si,di,es            *
  1000                                  ;* back      : none		               *
  1001                                  ;***********************************************
  1002                                  %macro		sortFaces 0
  1003                                  		mov	edi, facei
  1004                                  		push	edi ; facei
  1005                                  		mov	esi, o+object.f
  1006                                  		;mov	si, o+object.f
  1007                                  		mov	eax, esi ; pointer to faces
  1008                                  		;mov	cx, [o+object.fanz]
  1009                                  		movzx	ecx, word [o+object.fanz] ; ??
  1010                                  
  1011                                  		xor	ebx, ebx ; ?
  1012                                  sFmloop:
  1013                                  		fldz
  1014                                  		push	ecx
  1015                                  		mov	cx, 4
  1016                                  sFiloop:
  1017                                  		imul	bx, word [esi], 12 ; number of points (of face)
  1018                                  		inc	esi
  1019                                  		inc	esi
  1020                                  		fsub	dword [ebx+rp+vector.z]
  1021                                  		loop	sFiloop
  1022                                  		pop	ecx
  1023                                  		fistp	word [edi] ; z distance (face total) (29/01/2017) 
  1024                                  		inc	edi
  1025                                  		inc	edi
  1026                                  		stosw		   ; face address (in 'o+object.f')
  1027                                  		add	ax, 10
  1028                                  
  1029                                  		inc	esi
  1030                                  		inc	esi
  1031                                  		loop	sFmloop
  1032                                  		push	edi	; facei+4*(o+object.fanz-1)
  1033                                  		call	qsort
  1034                                  %endmacro
  1035                                  
  1036                                  ;***********************************************
  1037                                  ;* descript. : animate the door  	       *
  1038                                  ;* parameter : none		               *
  1039                                  ;* sideeffect: ax,cx,si,di,es                  *
  1040                                  ;* back      : none		               *
  1041                                  ;***********************************************
  1042                                  %macro		animDoor 0
  1043                                  		;mov	ax, [doortimer]
  1044                                  		movzx	eax, word [doortimer]
  1045                                  		or	ax, ax
  1046                                  		jns	short aDnounder
  1047                                  		xor	ax, ax
  1048                                  		jmp	short alreadydrawed
  1049                                  aDnounder:
  1050                                  		cmp	byte [once], 0
  1051                                  		jne	short alreadydrawed
  1052                                  		inc	byte [once]
  1053                                  		push	ax
  1054                                  		starbackground
  1055                                  		pop	ax
  1056                                  alreadydrawed:
  1057                                  		cmp	ax, 24
  1058                                  		jle	short aDnoover
  1059                                  		mov	ax, 24
  1060                                  aDnoover:
  1061                                  		shl	ax, 6
  1062                                  		; 05/02/2017
  1063                                  		movzx	edi, word [tseg+26]
  1064                                  		shl	edi, 4 ; *16
  1065                                  		mov	ebp, edi
  1066                                  		movzx	esi, word [tseg+30]
  1067                                  		shl	esi, 4 ; *16
  1068                                  		mov	ebx, esi ; 05/02/2017
  1069                                  		add	si, ax ; 16/01/2017
  1070                                  		;mov	cx, 1024
  1071                                  		mov	ecx, 1024 ; ??
  1072                                  		rep movsw
  1073                                  		mov	esi, ebx
  1074                                  		add	si, 2048 ; 16/01/2017
  1075                                  		sub	si, ax
  1076                                  		push	si
  1077                                  		mov	ch, 4  ; cx = 1024
  1078                                  		rep movsw
  1079                                  		; 16/01/2017
  1080                                  		pop	cx
  1081                                  		and	cx, 4095 ; 0FFFh
  1082                                  		mov	edi, ebp ; 05/02/2017
  1083                                  		add	di, cx
  1084                                  		;
  1085                                  		mov	cx, ax
  1086                                  		xor	ax, ax
  1087                                  		rep stosw
  1088                                  %endmacro
  1089                                  
  1090                                  ;***********************************************
  1091                                  ;* descript. : play a tick of the song	       *
  1092                                  ;* parameter : none                	       *
  1093                                  ;* sideeffect: ax,bx,cx,dx,si		       *
  1094                                  ;* back      : none                	       *
  1095                                  ;***********************************************
  1096                                  %macro		playsong 0
  1097                                  		;mov	cx, [tracks]
  1098                                  		movzx	ecx, word [tracks] ; ??
  1099                                  		;mov	si, channels
  1100                                  		mov	esi, channels
  1101                                  PSmloop:
  1102                                  		dec	word [esi+channel.del]
  1103                                  		jg	short PSdelayed
  1104                                  		mov	ax, [esi+channel.trk]
  1105                                  		add	al, CMD_NOTEOFF	; 80h
  1106                                  		call	setnote
  1107                                  		;mov	bx, [esi+channel.adr]
  1108                                  		movzx	ebx, word [esi+channel.adr] ; ??
  1109                                  		mov	ah, 127 	; 7Fh
  1110                                  		cmp	byte [ebx], 0
  1111                                  		jz	short PStrackend
  1112                                  		mov	ah, [ebx]
  1113                                  		mov	[esi+channel.ln], ah
  1114                                  		mov	al, [esi+channel.trk]
  1115                                  		add	al, CMD_NOTEON	; 90h
  1116                                  		call	setnote
  1117                                  		mov	al, [ebx+1]
  1118                                  		mov	bl, SONGSPEED	; 1Dh
  1119                                  		mul	bl
  1120                                  PStrackend:
  1121                                  		mov	[esi+channel.del], ax
  1122                                  		add	word [esi+channel.adr], 2
  1123                                  PSdelayed:
  1124                                  		add	si, 6
  1125                                  		loop	PSmloop
  1126                                  PSnosound:
  1127                                  %endmacro
  1128                                  
  1129                                  ;***********************************************
  1130                                  ;* descript. : dump palette to CRT             *
  1131                                  ;* parameter : bl:intensity (0..255)           *
  1132                                  ;* sideeffect: ax,es,di,cx,dx                  *
  1133                                  ;* back      : none		               *
  1134                                  ;***********************************************
  1135                                  %macro		setPalette2 0
  1136                                  		xor	al, al
  1137                                  		mov	dx, 3C8h
  1138                                  		;out	dx, al
  1139                                  		
  1140                                  		mov 	ah, 1 ; out (byte)
  1141                                  		int	34h ; TRDOS 386 - IOCTL interrupt
  1142                                  		
  1143                                  		inc	dx
  1144                                  		mov	esi, palette
  1145                                  		;mov	cx, 768 ; 300h
  1146                                  		mov	ecx, 768 ; ??
  1147                                  _sp2loop:
  1148                                  		;rep outsb
  1149                                  		
  1150                                  		lodsb	
  1151                                  		;mov 	ah, 1 ; out (byte)
  1152                                  		;mov 	dx, 3C9h
  1153                                  		;out 	dx, al
  1154                                  		int	34h ; TRDOS 386 - IOCTL interrupt
  1155                                  		loop	_sp2loop
  1156                                  %endmacro
  1157                                  
  1158                                  ;***********************************************
  1159                                  ;* descript. : clear starbackground            *
  1160                                  ;* parameter : none		               *
  1161                                  ;* sideeffect: ax,es,di,cx,dx                  *
  1162                                  ;* back      : none		               *
  1163                                  ;***********************************************
  1164                                  %macro		cls 0
  1165                                  		movzx	edi, word [bseg] ; 05/02/2017
  1166                                  		shl	edi, 4 ; *16
  1167                                  		mov	esi, 0A0000h + (320*5) ; 0A0640h
  1168                                  		;mov	cx, 32000 ; 7D00h
  1169                                  		mov	ecx, 32000 ; ??
  1170                                  clsloop:
  1171                                  		lodsb
  1172                                  		stosb
  1173                                  		stosb
  1174                                  		loop	clsloop
  1175                                  %endmacro
  1176                                  
  1177                                  ;***********************************************
  1178                                  ;* descript. : draw starbackground             *
  1179                                  ;* parameter : none		               *
  1180                                  ;* sideeffect: ax,es,di,cx,dx                  *
  1181                                  ;* back      : none		               *
  1182                                  ;***********************************************
  1183                                  %macro		starbackground 0
  1184                                  		movzx	edi, word [bseg] ; 05/02/2017
  1185                                  		shl	edi, 4 ; *16
  1186                                  		mov	ebp, edi
  1187                                  		;mov	cx, 100 ; 64h
  1188                                  		mov	ecx, 100 ; ??
  1189                                  starbackloop:
  1190                                  		push	cx
  1191                                  		;mov	bx, 320*155 ; 0C1C0h
  1192                                  		mov	ebx, 320*155 ; ??
  1193                                  		call	rnd
  1194                                  		add	ax, 320*20  ; 1900h
  1195                                  		; 05/02/2017
  1196                                  		movzx	edi, ax
  1197                                  		add	edi, ebp 
  1198                                  		and	ah, 7
  1199                                  		;mov	dx, 320-5   ; 13Bh
  1200                                  		mov	edx, 320-5 ; ?? 
  1201                                  		mov	cx, 2
  1202                                  		call	setstarbob
  1203                                  		pop	cx
  1204                                  		loop	starbackloop
  1205                                  %endmacro
  1206                                  
  1207                                  ;***********************************************
  1208                                  ;* descript. : create identity matrix	       *
  1209                                  ;* parameter : ds:di address                   *
  1210                                  ;* sideeffect: cx,di		   	       *
  1211                                  ;* back      : none			       *
  1212                                  ;***********************************************
  1213                                  %macro		identityMat 0
  1214                                  		mov	ch, 2
  1215                                  iMolp:
  1216                                  		mov	cl, 2
  1217                                  iMilp:
  1218                                  		fldz
  1219                                  		cmp	ch, cl
  1220                                  		jne	short iMwritezero
  1221                                  		fstp	st0
  1222                                  		fld1
  1223                                  iMwritezero:
  1224                                  		fstp	dword [edi]
  1225                                  		add	di, 4
  1226                                  		dec	cl
  1227                                  		jns	short iMilp
  1228                                  		dec	ch
  1229                                  		jns	short iMolp
  1230                                  %endmacro
  1231                                  
  1232                                  ;=============================================================================
  1233                                  ;               entry point
  1234                                  ;=============================================================================
  1235                                  ;***********************************************
  1236                                  ;* descript. : entry point		       *
  1237                                  ;* parameter : none		               *
  1238                                  ;* sideeffect: all		               *
  1239                                  ;* back      : none		               *
  1240                                  ;***********************************************
  1241                                  
  1242                                  [BITS 32] ; 80386 Protected Mode (32 bit) intructions
  1243                                  
  1244                                  [ORG 0] 
  1245                                  
  1246                                  start:
  1247                                  		; DIRECT VGA MEMORY ACCESS
  1248                                  		;xor	ebx, ebx
  1249 00000000 B705                    		mov	bh, 5 ; Direct access/map to VGA memory (0A0000h)
  1250                                  		;mov	eax, _video ; 1Fh
  1251 00000002 66B81F00                		mov	ax, 1Fh ; sys _video ; TRDOS 386 Video functions
  1252 00000006 CD40                    		int	40h   ; TRDOS 386 system call
  1253                                  
  1254                                  		; eax = 0A0000h
  1255 00000008 21C0                    		and	eax, eax
  1256 0000000A 0F84D8050000            		jz      terminate ; error (eax = 0)
  1257                                  
  1258                                  		; clear bss (18/12/2016)
  1259 00000010 BF[9A160000]            		mov	edi, bss_start ; ??		
  1260                                  		;mov	di, bss_start
  1261 00000015 B9E52E0000              		mov	ecx, (bss_end - bss_start)/4 ; ??
  1262                                  		;mov	cx, (bss_end - bss_start)/4
  1263 0000001A 31C0                    		xor	eax, eax
  1264 0000001C F3AB                    		rep	stosd
  1265                                  
  1266                                  		; 05/02/2017 (16 bit segments)
  1267 0000001E BF[1C370000]            		mov	edi, vseg ; ??
  1268                                  		;mov	di, vseg
  1269 00000023 66B80010                		mov	ax, 1000h
  1270 00000027 66AB                    		stosw			; virtual screen address
  1271 00000029 66050010                		add	ax, 1000h
  1272 0000002D 66AB                    		stosw			; star background address
  1273 0000002F 66050010                		add	ax, 1000h
  1274 00000033 66B91400                		mov	cx, 20
  1275                                  segloop:				; texture addresses
  1276 00000037 66AB                    		stosw
  1277                                  		;add	ax, 100h
  1278 00000039 FEC4                    		inc	ah
  1279 0000003B E2FA                    		loop	segloop
  1280                                  
  1281                                  		; 22/01/2017
  1282                                  		;fninit
  1283                                  
  1284                                  		nullData
  1284                              <1> 
  1284 0000003D BF[9A160000]        <1>  mov edi, nullstart
  1284                              <1> 
  1284 00000042 B9DE1F0000          <1>  mov ecx, nullend-nullstart
  1284 00000047 31C0                <1>  xor eax, eax
  1284 00000049 F3AA                <1>  rep stosb
  1285                                  		;resetGM
  1286                                  		;expandSong
  1287                                  
  1288 0000004B E88A0E0000              		call	createWorld
  1289                                  
  1290                                  		set320x200
  1290 00000050 66B81300            <1>  mov ax, 13h
  1290                              <1> 
  1290                              <1> 
  1290 00000054 CD31                <1>  int 31h
  1291                                  
  1292 00000056 86E0                    		xchg	ah, al 		; ah = write string = 13h, 
  1293                                  					; al = write mode = 0
  1294 00000058 66BB1C00                		mov	bx, 1Ch
  1295 0000005C BD[51160000]            		mov	ebp, omniscent
  1296 00000061 66B90900                		mov	cx, omniend-omniscent ; 9
  1297 00000065 66BA0601                		mov	dx, 106h
  1298                                  		;int	10h		; - VIDEO - WRITE STRING (AT,XT286,PS,EGA,VGA)
  1299                                  					; AL = mode, BL	= attribute if AL bit 1	clear, BH = display page number
  1300                                  					; DH,DL	= row,column of	starting cursor	position, CX = length of string
  1301                                  					; ES:BP	-> start of string
  1302 00000069 CD31                    		int	31h ; TRDOS 386 - Video interrupt
  1303                                  
  1304 0000006B 6601CD                  		add	bp, cx
  1305 0000006E B110                    		mov	cl, sancend-sanction ; 11h
  1306 00000070 66BA010C                		mov	dx, 0C01h
  1307                                  		;int	10h		; - VIDEO - WRITE STRING (AT,XT286,PS,EGA,VGA)
  1308                                  					; AL = mode, BL	= attribute if AL bit 1	clear, BH = display page number
  1309                                  					; DH,DL	= row,column of	starting cursor	position, CX = length of string
  1310                                  					; ES:BP	-> start of string
  1311 00000074 CD31                    		int	31h ; TRDOS 386 - Video interrupt
  1312                                  
  1313                                  		makePalette
  1313                              <1> 
  1313 00000076 BB03000000          <1>  mov ebx, 3
  1313                              <1> mPcolor:
  1313                              <1> 
  1313 0000007B BE[15120000]        <1>  mov esi, colors
  1313 00000080 BF[F4160000]        <1>  mov edi, palette
  1313 00000085 30F6                <1>  xor dh, dh
  1313 00000087 AC                  <1>  lodsb
  1313                              <1> 
  1313 00000088 0FB6C8              <1>  movzx ecx, al
  1313                              <1> mPouter:
  1313 0000008B 51                  <1>  push ecx
  1313 0000008C 8A0E                <1>  mov cl, [esi]
  1313 0000008E 8A2433              <1>  mov ah, [ebx+esi]
  1313 00000091 6629D0              <1>  sub ax, dx
  1313 00000094 52                  <1>  push edx
  1313 00000095 6699                <1>  cwd
  1313 00000097 66F7F9              <1>  idiv cx
  1313 0000009A 5A                  <1>  pop edx
  1313                              <1> mPinner:
  1313 0000009B 6601C2              <1>  add dx, ax
  1313 0000009E 88741FFF            <1>  mov [edi+ebx-1], dh
  1313 000000A2 6683C703            <1>  add di, 3
  1313 000000A6 E2F3                <1>  loop mPinner
  1313 000000A8 6683C604            <1>  add si, 4
  1313 000000AC 59                  <1>  pop ecx
  1313 000000AD E2DC                <1>  loop mPouter
  1313 000000AF 664B                <1>  dec bx
  1313 000000B1 75C8                <1>  jnz short mPcolor
  1314                                  		
  1315                                  		initTextures
  1315                              <1> 
  1315 000000B3 BB22000000          <1>  mov ebx, 34
  1315 000000B8 6820030000          <1>  push 800
  1315 000000BD 6A05                <1>  push 5
  1315 000000BF E8BB060000          <1>  call createFrac1
  1315                              <1> 
  1315 000000C4 BB20000000          <1>  mov ebx, 32
  1315 000000C9 6A70                <1>  push 112
  1315 000000CB 6A0F                <1>  push 15
  1315 000000CD E8AD060000          <1>  call createFrac1
  1315                              <1>  createFrac2
  1315 000000D2 0FB73D[44370000]    <2>  movzx edi, word [tseg+36]
  1315 000000D9 C1E704              <2>  shl edi, 4
  1315 000000DC 89FB                <2>  mov ebx, edi
  1315 000000DE B014                <2>  mov al, 20
  1315 000000E0 E892060000          <2>  call setFrac
  1315 000000E5 89DF                <2>  mov edi, ebx
  1315 000000E7 6683C740            <2>  add di, 64
  1315                              <2> 
  1315 000000EB B9C00F0000          <2>  mov ecx, 4096-64
  1315 000000F0 BB04000000          <2>  mov ebx, 4
  1315                              <2> cF1loop:
  1315                              <2> 
  1315 000000F5 E814060000          <2>  call rnd
  1315 000000FA 0247C0              <2>  add al, [edi-64]
  1315 000000FD 0247C1              <2>  add al, [edi-63]
  1315 00000100 6648                <2>  dec ax
  1315 00000102 66D1E8              <2>  shr ax, 1
  1315 00000105 AA                  <2>  stosb
  1315 00000106 E2ED                <2>  loop cF1loop
  1315                              <1>  createFrac3
  1315 00000108 0FB73D[46370000]    <2>  movzx edi, word [tseg+38]
  1315 0000010F C1E704              <2>  shl edi, 4
  1315 00000112 893D[28D20000]      <2>  mov dword [_es], edi
  1315 00000118 B003                <2>  mov al, 3
  1315 0000011A E858060000          <2>  call setFrac
  1315                              <2> 
  1315 0000011F B900100000          <2>  mov ecx, 4096
  1315 00000124 89CB                <2>  mov ebx, ecx
  1315                              <2> cF3loop:
  1315                              <2> 
  1315 00000126 E8E3050000          <2>  call rnd
  1315 0000012B 8B3D[28D20000]      <2>  mov edi, dword [_es]
  1315 00000131 6601C7              <2>  add di, ax
  1315 00000134 FE07                <2>  inc byte [edi]
  1315 00000136 E2EE                <2>  loop cF3loop
  1315                              <1>  initStars
  1315                              <2> 
  1315 00000138 B91E000000          <2>  mov ecx, 30
  1315 0000013D BF[C0360000]        <2>  mov edi, stars
  1315 00000142 31DB                <2>  xor ebx, ebx
  1315                              <2> iSloop:
  1315 00000144 66BB0001            <2>  mov bx, 256
  1315 00000148 E8C1050000          <2>  call rnd
  1315 0000014D AA                  <2>  stosb
  1315 0000014E 66BBC00E            <2>  mov bx, 4096-(64*5)
  1315 00000152 6681C38000          <2>  add bx, 128
  1315 00000157 E8B2050000          <2>  call rnd
  1315 0000015C 6683C040            <2>  add ax, 64
  1315 00000160 66AB                <2>  stosw
  1315 00000162 E2E0                <2>  loop iSloop
  1315                              <1>  reactorWall
  1315 00000164 0FB73D[20370000]    <2>  movzx edi, word [tseg]
  1315 0000016B C1E704              <2>  shl edi, 4
  1315 0000016E 66B90010            <2>  mov cx, 4096
  1315                              <2> rsmloop:
  1315 00000172 6689F8              <2>  mov ax, di
  1315                              <2> 
  1315 00000175 A808                <2>  test al, 8
  1315 00000177 7E02                <2>  jle short rsnonot1
  1315 00000179 F6D0                <2>  not al
  1315                              <2> rsnonot1:
  1315 0000017B 240F                <2>  and al, 15
  1315 0000017D 6689C3              <2>  mov bx, ax
  1315 00000180 6689F8              <2>  mov ax, di
  1315 00000183 6625FF0F            <2>  and ax, 0FFFh
  1315 00000187 66C1E806            <2>  shr ax, 6
  1315 0000018B A808                <2>  test al, 8
  1315 0000018D 7E02                <2>  jle short rsnonot2
  1315 0000018F F6D0                <2>  not al
  1315                              <2> rsnonot2:
  1315 00000191 240F                <2>  and al, 15
  1315 00000193 38D8                <2>  cmp al, bl
  1315 00000195 7E03                <2>  jle short rstakeal
  1315 00000197 6689D8              <2>  mov ax, bx
  1315                              <2> rstakeal:
  1315 0000019A 04E0                <2>  add al, 224
  1315 0000019C AA                  <2>  stosb
  1315 0000019D E2D3                <2>  loop rsmloop
  1315                              <1>  addFractals
  1315 0000019F BE[F2120000]        <2>  mov esi, aF
  1315                              <2> 
  1315 000001A4 B204                <2>  mov dl, 4
  1315 000001A6 31DB                <2>  xor ebx, ebx
  1315                              <2> aFloop:
  1315 000001A8 88D3                <2>  mov bl, dl
  1315 000001AA 0FB7BB[20370000]    <2>  movzx edi, word [ebx+tseg]
  1315 000001B1 C1E704              <2>  shl edi, 4
  1315 000001B4 66AD                <2>  lodsw
  1315 000001B6 88C3                <2>  mov bl, al
  1315 000001B8 0FB7AB[20370000]    <2>  movzx ebp, word [ebx+tseg]
  1315 000001BF C1E504              <2>  shl ebp, 4
  1315                              <2> 
  1315 000001C2 B900100000          <2>  mov ecx, 4096
  1315                              <2> aFiloop:
  1315 000001C7 8A4500              <2>  mov al, [ebp]
  1315 000001CA 00E0                <2>  add al, ah
  1315 000001CC AA                  <2>  stosb
  1315 000001CD 45                  <2>  inc ebp
  1315 000001CE E2F7                <2>  loop aFiloop
  1315 000001D0 80C202              <2>  add dl, 2
  1315 000001D3 80FA1E              <2>  cmp dl, 30
  1315 000001D6 7ED0                <2>  jle short aFloop
  1315                              <1>  effects
  1315                              <2> 
  1315                              <2> 
  1315 000001D8 B91A000000          <2>  mov ecx, 26
  1315 000001DD BE[56120000]        <2>  mov esi, aE
  1315                              <2> 
  1315 000001E2 31DB                <2>  xor ebx, ebx
  1315 000001E4 31FF                <2>  xor edi, edi
  1315                              <2> effmloop:
  1315 000001E6 6651                <2>  push cx
  1315 000001E8 8A1E                <2>  mov bl, [esi]
  1315 000001EA 88DA                <2>  mov dl, bl
  1315 000001EC C0EA04              <2>  shr dl, 4
  1315 000001EF 80E30F              <2>  and bl, 0Fh
  1315 000001F2 D0E3                <2>  shl bl, 1
  1315 000001F4 0FB7AB[20370000]    <2>  movzx ebp, word [ebx+tseg]
  1315 000001FB C1E504              <2>  shl ebp, 4
  1315 000001FE 660FB64E02          <2>  movzx cx, byte [esi+2]
  1315                              <2> effyloop:
  1315 00000203 660FB65E01          <2>  movzx bx, byte [esi+1]
  1315                              <2> effxloop:
  1315 00000208 6689CF              <2>  mov di, cx
  1315 0000020B 66C1E706            <2>  shl di, 6
  1315 0000020F 6601DF              <2>  add di, bx
  1315 00000212 88D0                <2>  mov al, dl
  1315 00000214 FEC8                <2>  dec al
  1315 00000216 7416                <2>  jz short effect1
  1315 00000218 FEC8                <2>  dec al
  1315 0000021A 740E                <2>  jz short effect2
  1315 0000021C 6689D8              <2>  mov ax, bx
  1315 0000021F 6601C8              <2>  add ax, cx
  1315 00000222 2404                <2>  and al, 4
  1315                              <2> 
  1315 00000224 7408                <2>  jz short effect1
  1315 00000226 B098                <2>  mov al, 152
  1315                              <2> effdonot:
  1315 00000228 EB04                <2>  jmp short effect1
  1315                              <2> effect2:
  1315 0000022A 8A443D00            <2>  mov al, [ebp+edi]
  1315                              <2> effect1:
  1315 0000022E 024605              <2>  add al, [esi+5]
  1315 00000231 88443D00            <2>  mov [ebp+edi], al
  1315 00000235 6643                <2>  inc bx
  1315 00000237 3A5E03              <2>  cmp bl, [esi+3]
  1315 0000023A 7ECC                <2>  jle short effxloop
  1315 0000023C 6641                <2>  inc cx
  1315 0000023E 3A4E04              <2>  cmp cl, [esi+4]
  1315 00000241 7EC0                <2>  jle short effyloop
  1315 00000243 6683C606            <2>  add si, 6
  1315 00000247 6659                <2>  pop cx
  1315 00000249 E29B                <2>  loop effmloop
  1315                              <1>  addLava
  1315 0000024B 0FB72D[36370000]    <2>  movzx ebp, word [tseg+22]
  1315 00000252 C1E504              <2>  shl ebp, 4
  1315 00000255 BFFF0F0000          <2>  mov edi, 4095
  1315                              <2> 
  1315 0000025A B914000000          <2>  mov ecx, 20
  1315 0000025F B05E                <2>  mov al, 94
  1315                              <2> aLyloop:
  1315 00000261 51                  <2>  push ecx
  1315 00000262 66C1E103            <2>  shl cx, 3
  1315                              <2> aLxloop:
  1315 00000266 57                  <2>  push edi
  1315 00000267 50                  <2>  push eax
  1315                              <2> 
  1315 00000268 BB40000000          <2>  mov ebx, 64
  1315 0000026D E89C040000          <2>  call rnd
  1315 00000272 6629C7              <2>  sub di, ax
  1315 00000275 58                  <2>  pop eax
  1315 00000276 88443D00            <2>  mov [ebp+edi], al
  1315 0000027A 5F                  <2>  pop edi
  1315 0000027B E2E9                <2>  loop aLxloop
  1315 0000027D 59                  <2>  pop ecx
  1315 0000027E FEC8                <2>  dec al
  1315 00000280 6683EF40            <2>  sub di, 64
  1315 00000284 E2DB                <2>  loop aLyloop
  1316                                  
  1317                                  		calcShadeTab
  1317 00000286 BF[48370000]        <1>  mov edi, shadetab
  1317 0000028B 30DB                <1>  xor bl, bl
  1317                              <1> cSolp:
  1317 0000028D FEC3                <1>  inc bl
  1317                              <1> 
  1317 0000028F 31C9                <1>  xor ecx, ecx
  1317                              <1> cSilp1:
  1317 00000291 88C8                <1>  mov al, cl
  1317 00000293 241F                <1>  and al, 31
  1317 00000295 F6E3                <1>  mul bl
  1317 00000297 6601C0              <1>  add ax, ax
  1317 0000029A 88C8                <1>  mov al, cl
  1317 0000029C 24E0                <1>  and al, 224
  1317 0000029E 00E0                <1>  add al, ah
  1317 000002A0 AA                  <1>  stosb
  1317 000002A1 FEC1                <1>  inc cl
  1317 000002A3 80F9C0              <1>  cmp cl, 192
  1317 000002A6 75E9                <1>  jne short cSilp1
  1317                              <1> cSilp2:
  1317 000002A8 88C8                <1>  mov al, cl
  1317 000002AA AA                  <1>  stosb
  1317 000002AB FEC1                <1>  inc cl
  1317 000002AD 75F9                <1>  jnz short cSilp2
  1317 000002AF 80FB80              <1>  cmp bl, 128
  1317 000002B2 75D9                <1>  jne short cSolp
  1318                                  
  1319 000002B4 8925[78360000]          		mov	dword [oldstack], esp
  1320                                  
  1321                                  		startTimer
  1321                              <1> 
  1321                              <1> 
  1321                              <1> 
  1321                              <1> 
  1321                              <1> 
  1321                              <1> 
  1321                              <1> 
  1321                              <1> 
  1321 000002BA 66BB510D            <1>  mov bx, 3409
  1321 000002BE E860040000          <1>  call setTimer
  1321                              <1> 
  1321                              <1> 
  1321 000002C3 BB00840000          <1>  mov ebx, 8400h
  1321 000002C8 B901000000          <1>  mov ecx, 1
  1321 000002CD BA[F1050000]        <1>  mov edx, timer_callback
  1321 000002D2 B821000000          <1>  mov eax, 33
  1321 000002D7 CD40                <1>  int 40h
  1321 000002D9 0F82C8020000        <1>  jc loc_err_exit
  1321                              <1> 
  1321 000002DF A2[1B370000]        <1>  mov [timer_event_number], al
  1321                              <1> 
  1322                                  		startKBDHandler
  1322                              <1> 
  1322                              <1> 
  1322                              <1> 
  1322                              <1> 
  1322                              <1> 
  1322                              <1> 
  1322                              <1> 
  1322                              <1> 
  1322                              <1> 
  1322                              <1> 
  1322                              <1> 
  1322                              <1> 
  1322 000002E4 90                  <1>  nop
  1323                                  		cls
  1323 000002E5 0FB73D[1E370000]    <1>  movzx edi, word [bseg]
  1323 000002EC C1E704              <1>  shl edi, 4
  1323 000002EF BE40060A00          <1>  mov esi, 0A0000h + (320*5)
  1323                              <1> 
  1323 000002F4 B9007D0000          <1>  mov ecx, 32000
  1323                              <1> clsloop:
  1323 000002F9 AC                  <1>  lodsb
  1323 000002FA AA                  <1>  stosb
  1323 000002FB AA                  <1>  stosb
  1323 000002FC E2FB                <1>  loop clsloop
  1324                                  mainloop:
  1325 000002FE B401                    		mov	ah, 1	; Check keyboard buffer
  1326 00000300 CD32                    		int	32h	; TRDOS 386 Keyboard interrupt
  1327 00000302 0F859F020000            		jnz	_exit_  ; exit
  1328                                  
  1329                                  		setPalette2
  1329 00000308 30C0                <1>  xor al, al
  1329 0000030A 66BAC803            <1>  mov dx, 3C8h
  1329                              <1> 
  1329                              <1> 
  1329 0000030E B401                <1>  mov ah, 1
  1329 00000310 CD34                <1>  int 34h
  1329                              <1> 
  1329 00000312 6642                <1>  inc dx
  1329 00000314 BE[F4160000]        <1>  mov esi, palette
  1329                              <1> 
  1329 00000319 B900030000          <1>  mov ecx, 768
  1329                              <1> _sp2loop:
  1329                              <1> 
  1329                              <1> 
  1329 0000031E AC                  <1>  lodsb
  1329                              <1> 
  1329                              <1> 
  1329                              <1> 
  1329 0000031F CD34                <1>  int 34h
  1329 00000321 E2FB                <1>  loop _sp2loop
  1330                                  
  1331                                  		scriptIt
  1331                              <1> 
  1331                              <1> 
  1331 00000323 0FB70D[F0160000]    <1>  movzx ecx, word [ticker]
  1331 0000032A 66C705[F0160000]00- <1>  mov word [ticker], 0
  1331 00000332 00                  <1>
  1331 00000333 6609C9              <1>  or cx, cx
  1331 00000336 0F84D2000000        <1>  jz sItickerNull
  1331                              <1> sImloop:
  1331 0000033C 51                  <1>  push ecx
  1331 0000033D BE[E2160000]        <1>  mov esi, zspeed
  1331                              <1> 
  1331                              <1> 
  1331 00000342 66FF0D[EC160000]    <1>  dec word [scriptanz]
  1331 00000349 7940                <1>  jns short sIwaitTimer
  1331                              <1> 
  1331                              <1> 
  1331 0000034B 0FB71D[EA160000]    <1>  movzx ebx, word [scriptptr]
  1331 00000352 8A83[D0150000]      <1>  mov al, [ebx+script]
  1331 00000358 08C0                <1>  or al, al
  1331 0000035A 0F8447020000        <1>  jz _exit_
  1331 00000360 6689C3              <1>  mov bx, ax
  1331 00000363 80E307              <1>  and bl, 7
  1331                              <1> 
  1331 00000366 881D[EE160000]      <1>  mov [scriptins], bl
  1331 0000036C FECB                <1>  dec bl
  1331 0000036E 7507                <1>  jnz short sInegateTurn
  1331                              <1> 
  1331 00000370 66F71D[4D160000]    <1>  neg word [zstep]
  1331                              <1> sInegateTurn:
  1331 00000377 6625F800            <1>  and ax, 0F8h
  1331 0000037B 6601C0              <1>  add ax, ax
  1331                              <1> 
  1331 0000037E 66A3[EC160000]      <1>  mov [scriptanz], ax
  1331                              <1> 
  1331 00000384 66FF05[EA160000]    <1>  inc word [scriptptr]
  1331                              <1> sIwaitTimer:
  1331                              <1> 
  1331 0000038B A0[EE160000]        <1>  mov al, [scriptins]
  1331 00000390 6698                <1>  cbw
  1331 00000392 28ED                <1>  sub ch, ch
  1331 00000394 6648                <1>  dec ax
  1331 00000396 7510                <1>  jnz short sInoturn
  1331                              <1> 
  1331 00000398 668B1D[4D160000]    <1>  mov bx, [zstep]
  1331                              <1> 
  1331 0000039F 66011D[E8160000]    <1>  add [ozw], bx
  1331 000003A6 EB18                <1>  jmp short sI_1
  1331                              <1> sInoturn:
  1331 000003A8 B103                <1>  mov cl, 3
  1331                              <1> sIrotateLoop:
  1331 000003AA 6648                <1>  dec ax
  1331 000003AC 7505                <1>  jnz short sInoIncrement
  1331                              <1> 
  1331 000003AE 66FF06              <1>  inc word [esi]
  1331 000003B1 EB0D                <1>  jmp short sI_1
  1331                              <1> sInoIncrement:
  1331 000003B3 6648                <1>  dec ax
  1331 000003B5 7505                <1>  jnz short sInoDecrement
  1331                              <1> 
  1331 000003B7 66FF0E              <1>  dec word [esi]
  1331 000003BA EB04                <1>  jmp short sI_1
  1331                              <1> sInoDecrement:
  1331 000003BC 46                  <1>  inc esi
  1331 000003BD 46                  <1>  inc esi
  1331 000003BE E2EA                <1>  loop sIrotateLoop
  1331                              <1> sI_1:
  1331                              <1> 
  1331 000003C0 66BE[E416]          <1>  mov si, oxw
  1331 000003C4 B103                <1>  mov cl, 3
  1331 000003C6 31C0                <1>  xor eax, eax
  1331                              <1> sIpushloop:
  1331 000003C8 66AD                <1>  lodsw
  1331 000003CA 66C1F802            <1>  sar ax, 2
  1331 000003CE 50                  <1>  push eax
  1331 000003CF E2F7                <1>  loop sIpushloop
  1331                              <1> 
  1331 000003D1 66676B44FC10        <1>  imul ax, word [si-4], 16
  1331 000003D7 50                  <1>  push eax
  1331 000003D8 E8580A0000          <1>  call calcRotMat
  1331                              <1> 
  1331 000003DD B103                <1>  mov cl, 3
  1331 000003DF 31F6                <1>  xor esi, esi
  1331                              <1> sImoveLoop:
  1331 000003E1 D986[8E160000]      <1>  fld dword [esi+owmat+24]
  1331 000003E7 DE0D[E2160000]      <1>  fimul word [zspeed]
  1331 000003ED DE35[C2100000]      <1>  fidiv word [CONST1792]
  1331 000003F3 D886[6A160000]      <1>  fadd dword [esi+ob]
  1331 000003F9 D99E[6A160000]      <1>  fstp dword [esi+ob]
  1331 000003FF 6683C604            <1>  add si, 4
  1331 00000403 E2DC                <1>  loop sImoveLoop
  1331 00000405 59                  <1>  pop ecx
  1331 00000406 6649                <1>  dec cx
  1331 00000408 0F852EFFFFFF        <1>  jnz sImloop
  1331                              <1> sItickerNull:
  1332                                  
  1333                                  		animDoor
  1333                              <1> 
  1333 0000040E 0FB705[4F160000]    <1>  movzx eax, word [doortimer]
  1333 00000415 6609C0              <1>  or ax, ax
  1333 00000418 7905                <1>  jns short aDnounder
  1333 0000041A 6631C0              <1>  xor ax, ax
  1333 0000041D EB4E                <1>  jmp short alreadydrawed
  1333                              <1> aDnounder:
  1333 0000041F 803D[EF160000]00    <1>  cmp byte [once], 0
  1333 00000426 7545                <1>  jne short alreadydrawed
  1333 00000428 FE05[EF160000]      <1>  inc byte [once]
  1333 0000042E 6650                <1>  push ax
  1333                              <1>  starbackground
  1333 00000430 0FB73D[1E370000]    <2>  movzx edi, word [bseg]
  1333 00000437 C1E704              <2>  shl edi, 4
  1333 0000043A 89FD                <2>  mov ebp, edi
  1333                              <2> 
  1333 0000043C B964000000          <2>  mov ecx, 100
  1333                              <2> starbackloop:
  1333 00000441 6651                <2>  push cx
  1333                              <2> 
  1333 00000443 BBC0C10000          <2>  mov ebx, 320*155
  1333 00000448 E8C1020000          <2>  call rnd
  1333 0000044D 66050019            <2>  add ax, 320*20
  1333                              <2> 
  1333 00000451 0FB7F8              <2>  movzx edi, ax
  1333 00000454 01EF                <2>  add edi, ebp
  1333 00000456 80E407              <2>  and ah, 7
  1333                              <2> 
  1333 00000459 BA3B010000          <2>  mov edx, 320-5
  1333 0000045E 66B90200            <2>  mov cx, 2
  1333 00000462 E811020000          <2>  call setstarbob
  1333 00000467 6659                <2>  pop cx
  1333 00000469 E2D6                <2>  loop starbackloop
  1333 0000046B 6658                <1>  pop ax
  1333                              <1> alreadydrawed:
  1333 0000046D 6683F818            <1>  cmp ax, 24
  1333 00000471 7E04                <1>  jle short aDnoover
  1333 00000473 66B81800            <1>  mov ax, 24
  1333                              <1> aDnoover:
  1333 00000477 66C1E006            <1>  shl ax, 6
  1333                              <1> 
  1333 0000047B 0FB73D[3A370000]    <1>  movzx edi, word [tseg+26]
  1333 00000482 C1E704              <1>  shl edi, 4
  1333 00000485 89FD                <1>  mov ebp, edi
  1333 00000487 0FB735[3E370000]    <1>  movzx esi, word [tseg+30]
  1333 0000048E C1E604              <1>  shl esi, 4
  1333 00000491 89F3                <1>  mov ebx, esi
  1333 00000493 6601C6              <1>  add si, ax
  1333                              <1> 
  1333 00000496 B900040000          <1>  mov ecx, 1024
  1333 0000049B F366A5              <1>  rep movsw
  1333 0000049E 89DE                <1>  mov esi, ebx
  1333 000004A0 6681C60008          <1>  add si, 2048
  1333 000004A5 6629C6              <1>  sub si, ax
  1333 000004A8 6656                <1>  push si
  1333 000004AA B504                <1>  mov ch, 4
  1333 000004AC F366A5              <1>  rep movsw
  1333                              <1> 
  1333 000004AF 6659                <1>  pop cx
  1333 000004B1 6681E1FF0F          <1>  and cx, 4095
  1333 000004B6 89EF                <1>  mov edi, ebp
  1333 000004B8 6601CF              <1>  add di, cx
  1333                              <1> 
  1333 000004BB 6689C1              <1>  mov cx, ax
  1333 000004BE 6631C0              <1>  xor ax, ax
  1333 000004C1 F366AB              <1>  rep stosw
  1334                                  
  1335                                  		; 05/02/2017
  1336 000004C4 0FB73D[1C370000]        		movzx	edi, word [vseg]
  1337 000004CB 0FB735[1E370000]        		movzx	esi, word [bseg]
  1338 000004D2 C1E704                  		shl	edi, 4 ; *16
  1339 000004D5 C1E604                  		shl	esi, 4 ; *16
  1340 000004D8 E8BB010000              		call	copyseg
  1341                                  
  1342                                  		rotation
  1342                              <1> 
  1342 000004DD 0FB70D[541A0000]    <1>  movzx ecx, word [o+object.panz]
  1342 000004E4 BE[581A0000]        <1>  mov esi, o+object.p
  1342 000004E9 BF[28B90000]        <1>  mov edi, rp
  1342                              <1> rotmlp:
  1342                              <1> 
  1342 000004EE BB[9A160000]        <1>  mov ebx, wmat
  1342 000004F3 66BA0300            <1>  mov dx, 3
  1342                              <1> rotilp:
  1342 000004F7 DF06                <1>  fild word [esi+0]
  1342 000004F9 D825[6A160000]      <1>  fsub dword [ob+vector.x]
  1342 000004FF D80B                <1>  fmul dword [ebx+0]
  1342 00000501 DF4602              <1>  fild word [esi+2]
  1342 00000504 D825[6E160000]      <1>  fsub dword [ob+vector.y]
  1342 0000050A D84B04              <1>  fmul dword [ebx+4]
  1342 0000050D DF4604              <1>  fild word [esi+4]
  1342 00000510 D825[72160000]      <1>  fsub dword [ob+vector.z]
  1342 00000516 D84B08              <1>  fmul dword [ebx+8]
  1342                              <1> 
  1342                              <1> 
  1342 00000519 DEC1                <1>  faddp
  1342 0000051B DEC1                <1>  faddp
  1342 0000051D D91F                <1>  fstp dword [edi]
  1342 0000051F 6683C704            <1>  add di, 4
  1342                              <1> 
  1342 00000523 6683C30C            <1>  add bx, 12
  1342 00000527 664A                <1>  dec dx
  1342 00000529 75CC                <1>  jnz short rotilp
  1342 0000052B 6683C608            <1>  add si, 8
  1342                              <1> 
  1342 0000052F E2BD                <1>  loop rotmlp
  1343                                  		sortFaces
  1343 00000531 BF[E8CB0000]        <1>  mov edi, facei
  1343 00000536 57                  <1>  push edi
  1343 00000537 BE[D8260000]        <1>  mov esi, o+object.f
  1343                              <1> 
  1343 0000053C 89F0                <1>  mov eax, esi
  1343                              <1> 
  1343 0000053E 0FB70D[561A0000]    <1>  movzx ecx, word [o+object.fanz]
  1343                              <1> 
  1343 00000545 31DB                <1>  xor ebx, ebx
  1343                              <1> sFmloop:
  1343 00000547 D9EE                <1>  fldz
  1343 00000549 51                  <1>  push ecx
  1343 0000054A 66B90400            <1>  mov cx, 4
  1343                              <1> sFiloop:
  1343 0000054E 666B1E0C            <1>  imul bx, word [esi], 12
  1343 00000552 46                  <1>  inc esi
  1343 00000553 46                  <1>  inc esi
  1343 00000554 D8A3[30B90000]      <1>  fsub dword [ebx+rp+vector.z]
  1343 0000055A E2F2                <1>  loop sFiloop
  1343 0000055C 59                  <1>  pop ecx
  1343 0000055D DF1F                <1>  fistp word [edi]
  1343 0000055F 47                  <1>  inc edi
  1343 00000560 47                  <1>  inc edi
  1343 00000561 66AB                <1>  stosw
  1343 00000563 6683C00A            <1>  add ax, 10
  1343                              <1> 
  1343 00000567 46                  <1>  inc esi
  1343 00000568 46                  <1>  inc esi
  1343 00000569 E2DC                <1>  loop sFmloop
  1343 0000056B 57                  <1>  push edi
  1343 0000056C E859010000          <1>  call qsort
  1344                                  
  1345 00000571 31C0                    		xor	eax, eax
  1346 00000573 0FB70D[561A0000]        		movzx	ecx, word [o+object.fanz]
  1347                                  
  1348 0000057A BE[E8CB0000]            		mov	esi, facei
  1349                                  drawloop:
  1350 0000057F 66AD                    		lodsw
  1351 00000581 66AD                    		lodsw
  1352 00000583 89C3                    		mov	ebx, eax ; face address in 'o+object.f'
  1353 00000585 60                      		pusha
  1354 00000586 E82A060000              		call	drawclippedface
  1355 0000058B 61                      		popa
  1356 0000058C E2F1                    		loop	drawloop
  1357                                  
  1358 0000058E BF00000A00              		mov	edi, 0A0000h
  1359 00000593 0FB735[1C370000]        		movzx	esi, word [vseg] ; 05/02/2017
  1360 0000059A C1E604                  		shl	esi, 4 ; *16
  1361 0000059D E8F6000000              		call	copyseg
  1362                                  
  1363 000005A2 E957FDFFFF              		jmp	mainloop
  1364                                  loc_err_exit:
  1365                                  _exit_:
  1366 000005A7 8B25[78360000]          		mov	esp, dword [oldstack]
  1367                                  		silence
  1367 000005AD 66B90F00            <1>  mov cx, 15
  1367                              <1> Siloop:
  1367 000005B1 6689C8              <1>  mov ax, cx
  1367 000005B4 04B0                <1>  add al, CMD_CHANGEPARAM
  1367 000005B6 E87F010000          <1>  call writeGM
  1367 000005BB B07B                <1>  mov al, MOD_ALLNOTESOFF
  1367 000005BD E878010000          <1>  call writeGM
  1367 000005C2 30C0                <1>  xor al, al
  1367 000005C4 E871010000          <1>  call writeGM
  1367 000005C9 E2E6                <1>  loop Siloop
  1367                              <1> Sinosound:
  1368                                  		stopKBDHandler
  1368                              <1> 
  1368                              <1> 
  1368                              <1> 
  1368                              <1> 
  1368                              <1> 
  1368                              <1> 
  1368                              <1> 
  1368                              <1> 
  1368                              <1> 
  1368                              <1> 
  1368 000005CB 90                  <1>  nop
  1369                                  		stopTimer
  1369                              <1> 
  1369                              <1> 
  1369                              <1> 
  1369                              <1> 
  1369                              <1> 
  1369                              <1> 
  1369                              <1> 
  1369                              <1> 
  1369 000005CC 6631DB              <1>  xor bx, bx
  1369 000005CF E84F010000          <1>  call setTimer
  1369                              <1> 
  1369                              <1> 
  1369 000005D4 0FB61D[1B370000]    <1>  movzx ebx, byte [timer_event_number]
  1369                              <1> 
  1369                              <1> 
  1369                              <1> 
  1369 000005DB B821000000          <1>  mov eax, 33
  1369 000005E0 CD40                <1>  int 40h
  1369                              <1> 
  1370                                  ;restore_text_mode:
  1371                                  		set80x25
  1371 000005E2 66B80300            <1>  mov ax, 3
  1371                              <1> 
  1371                              <1> 
  1371 000005E6 CD31                <1>  int 31h
  1372                                  terminate:
  1373                                  		sys 	_exit   ; INT 40h
  1373                              <1> 
  1373                              <1> 
  1373                              <1> 
  1373                              <1> 
  1373                              <1>  %if %0 >= 2
  1373                              <1>  mov ebx, %2
  1373                              <1>  %if %0 >= 3
  1373                              <1>  mov ecx, %3
  1373                              <1>  %if %0 = 4
  1373                              <1>  mov edx, %4
  1373                              <1>  %endif
  1373                              <1>  %endif
  1373                              <1>  %endif
  1373 000005E8 B801000000          <1>  mov eax, %1
  1373                              <1> 
  1373 000005ED CD40                <1>  int 40h
  1374                                  here:
  1375 000005EF EBFE                    		jmp	short here
  1376                                  
  1377                                  ;==============================================================================
  1378                                  ;		interrupt handler
  1379                                  ;==============================================================================
  1380                                  ;***********************************************
  1381                                  ;* descript. : timer routine                   *
  1382                                  ;* parameter : none		               *
  1383                                  ;* sideeffect: none		               *
  1384                                  ;* back      : none		               *
  1385                                  ;***********************************************
  1386                                  
  1387                                  timer_callback:
  1388                                  		;playsong
  1389                                  
  1390 000005F1 66FF05[F0160000]        		inc	word [ticker]
  1391 000005F8 FE05[1A370000]          		inc	byte [twice]
  1392 000005FE 8025[1A370000]07        		and	byte [twice], 7
  1393 00000605 756A                    		jnz	short tr_1
  1394                                  
  1395                                  		colorCycle
  1395                              <1>  base equ 6*32
  1395                              <1>  range equ 32
  1395                              <1> 
  1395 00000607 BF[34190000]        <1>  mov edi, palette+(base*3)
  1395 0000060C 89FE                <1>  mov esi, edi
  1395 0000060E 66AD                <1>  lodsw
  1395                              <1> 
  1395 00000610 46                  <1>  inc esi
  1395                              <1> 
  1395 00000611 B95D000000          <1>  mov ecx, (range*3-3)
  1395 00000616 F3A4                <1>  rep movsb
  1395 00000618 66AB                <1>  stosw
  1395                              <1> 
  1396                                  		animStars
  1396                              <1>  _base equ 7*32
  1396                              <1> 
  1396 0000061A 0FB73D[22370000]    <1>  movzx edi, word [tseg+2]
  1396 00000621 C1E704              <1>  shl edi, 4
  1396 00000624 89FD                <1>  mov ebp, edi
  1396 00000626 E84A010000          <1>  call clearFrac
  1396                              <1> 
  1396                              <1> 
  1396                              <1> 
  1396 0000062B B91E000000          <1>  mov ecx, 30
  1396 00000630 BB[C0360000]        <1>  mov ebx, stars
  1396                              <1> 
  1396                              <1> aSoloop:
  1396 00000635 FE0B                <1>  dec byte [ebx]
  1396 00000637 8A23                <1>  mov ah, byte [ebx]
  1396 00000639 80E43F              <1>  and ah, 63
  1396 0000063C 80FC1F              <1>  cmp ah, 31
  1396 0000063F 7605                <1>  jbe short aSnonot
  1396 00000641 F6D4                <1>  not ah
  1396 00000643 80E41F              <1>  and ah, 31
  1396                              <1> aSnonot:
  1396 00000646 D0EC                <1>  shr ah, 1
  1396                              <1> 
  1396 00000648 0FB77B01            <1>  movzx edi, word [ebx+1]
  1396 0000064C 01EF                <1>  add edi, ebp
  1396                              <1> 
  1396 0000064E 6651                <1>  push cx
  1396 00000650 6653                <1>  push bx
  1396                              <1> 
  1396 00000652 BA3B000000          <1>  mov edx, 64-5
  1396 00000657 66B900E0            <1>  mov cx, _base*256+0
  1396 0000065B E818000000          <1>  call setstarbob
  1396                              <1> 
  1396 00000660 665B                <1>  pop bx
  1396 00000662 6659                <1>  pop cx
  1396 00000664 6683C303            <1>  add bx, 3
  1396 00000668 E2CB                <1>  loop aSoloop
  1397                                  	
  1398 0000066A 66FF05[4F160000]        		inc	word [doortimer]
  1399                                  tr_1:
  1400 00000671 B827000000              		mov	eax, 39	; 'sysrele'
  1401 00000676 CD40                    		int	40h	; TRDOS 386 system call
  1402                                  	
  1403                                  ;==============================================================================
  1404                                  ;		sub routines
  1405                                  ;==============================================================================
  1406                                  ;***********************************************
  1407                                  ;* descript. : draw a the starbob	       *
  1408                                  ;* parameter : ds,es: source seg,dest seg      *
  1409                                  ;* sideeffect: ax,cx,si,di	               *
  1410                                  ;* back      : none		               *
  1411                                  ;***********************************************
  1412                                  
  1413                                  setstarbob:
  1414 00000678 BE[0E130000]            		mov	esi, bob
  1415 0000067D B305                    		mov	bl, 5
  1416                                  yloop:
  1417 0000067F B705                    		mov	bh, 5
  1418                                  xloop:
  1419 00000681 AC                      		lodsb
  1420 00000682 28E0                    		sub	al, ah
  1421 00000684 7E06                    		jle	short aSnodraw
  1422 00000686 00E8                    		add	al, ch
  1423 00000688 D2E0                    		shl	al, cl
  1424 0000068A 8807                    		mov	[edi], al
  1425                                  aSnodraw:
  1426                                  		;inc	di
  1427 0000068C 47                      		inc	edi
  1428 0000068D FECF                    		dec	bh
  1429 0000068F 75F0                    		jnz	short xloop
  1430 00000691 01D7                    		add	edi, edx ; 05/02/2017
  1431 00000693 FECB                    		dec	bl
  1432 00000695 75E8                    		jnz	short yloop
  1433 00000697 C3                      		retn
  1434                                  
  1435                                  ;***********************************************
  1436                                  ;* descript. : copy 16000 longs ds --> es      *
  1437                                  ;* parameter : ds,es: source seg,dest seg      *
  1438                                  ;* sideeffect: ax,cx,si,di	               *
  1439                                  ;* back      : none		               *
  1440                                  ;***********************************************
  1441                                  
  1442                                  copyseg:
  1443                                  		;mov	cx, 16000 ; 3E80h
  1444 00000698 B9803E0000              		mov	ecx, 16000 ; ??
  1445 0000069D F3A5                    		rep movsd
  1446 0000069F C3                      		retn
  1447                                  
  1448                                  ;***********************************************
  1449                                  ;* descript. : expand a part of the song       *
  1450                                  ;* parameter : si:base adress		       *
  1451                                  ;* sideeffect: si,ax		               *
  1452                                  ;* back      : ax=si:new baseadress            *
  1453                                  ;***********************************************
  1454                                  
  1455                                  expand:
  1456 000006A0 8A0E                    EPwhile: 	mov	cl, [esi]
  1457 000006A2 08C9                    		or	cl, cl
  1458 000006A4 741E                    		jz	short EPendwhile
  1459 000006A6 7918                    		jns	short EPnote
  1460                                  EPcall:
  1461 000006A8 6651                    		push	cx
  1462 000006AA 6656                    		push	si
  1463 000006AC 6646                    		inc	si
  1464 000006AE E8EDFFFFFF              		call	expand
  1465 000006B3 665E                    		pop	si
  1466 000006B5 6659                    		pop	cx
  1467 000006B7 FEC1                    		inc	cl
  1468 000006B9 75ED                    		jnz	short EPcall
  1469 000006BB 6689C6                  		mov	si, ax
  1470 000006BE EBE0                    		jmp	short EPwhile 
  1471                                  EPnote:
  1472 000006C0 66A5                    		movsw
  1473 000006C2 EBDC                    		jmp	short EPwhile
  1474                                  EPendwhile:
  1475 000006C4 6646                    		inc	si
  1476 000006C6 6689F0                  		mov	ax, si
  1477 000006C9 C3                      		retn
  1478                                  
  1479                                  ;***********************************************
  1480                                  ;* descript. : recursive index quicksort       *
  1481                                  ;* parameter : l,r:stack left and right border *
  1482                                  ;* sideeffect: ax,bx,cx,dx,si,di               *
  1483                                  ;* back      : none		               *
  1484                                  ;***********************************************
  1485                                  
  1486                                  qsort:
  1487 000006CA 58                      		pop	eax 	; get address
  1488 000006CB 59                      		pop	ecx	; get 2. param r
  1489 000006CC 5B                      		pop	ebx	; get 1. param l
  1490 000006CD 50                      		push	eax	; store address
  1491 000006CE C3                      retn
  1492 000006CF 39D9                    		cmp	ecx, ebx
  1493 000006D1 7E3A                    		jle	short QSendrek
  1494 000006D3 89DE                    		mov	esi, ebx
  1495 000006D5 89CF                    		mov	edi, ecx  	
  1496 000006D7 668B16                  		mov	dx, word [esi]
  1497                                  QSrepeat:
  1498 000006DA 663916                  QSwhile1:	cmp	word [esi], dx
  1499 000006DD 7E05                    		jle	short QSwhile2
  1500 000006DF 83C604                  		add	esi, 4
  1501 000006E2 EBF6                    		jmp	short QSwhile1
  1502                                  QSwhile2:
  1503 000006E4 663917                  		cmp	word [edi], dx
  1504 000006E7 7D05                    		jnl	short QSwhile2e
  1505 000006E9 83EF04                  		sub	edi, 4
  1506 000006EC EBF6                    		jmp	short QSwhile2
  1507                                  QSwhile2e:
  1508 000006EE 39FE                    		cmp	esi, edi
  1509                                  		;jg	short QSnoswap
  1510 000006F0 7F0D                    		jg	short _QSnoswap ; 29/01/2017
  1511 000006F2 AD                      		lodsd
  1512 000006F3 8707                    		xchg	eax, dword [edi]
  1513 000006F5 8946FC                  		mov	dword [esi-4], eax
  1514 000006F8 83EF04                  		sub	edi, 4
  1515                                  QSnoswap:
  1516 000006FB 39FE                    		cmp	esi, edi
  1517 000006FD 7EDB                    		jle	short QSrepeat
  1518                                  _QSnoswap: ; 29/01/2017
  1519 000006FF 56                      		push	esi 
  1520 00000700 51                      		push	ecx
  1521 00000701 53                      		push	ebx
  1522 00000702 57                      		push	edi
  1523 00000703 E8C2FFFFFF              		call	qsort
  1524 00000708 E8BDFFFFFF              		call	qsort
  1525                                  QSendrek:
  1526 0000070D C3                      		retn
  1527                                  
  1528                                  ;***********************************************
  1529                                  ;* descript. : returns a pseudo random number  *
  1530                                  ;* parameter : bx=range		               *
  1531                                  ;* sideeffect: eax,edx,si		       *
  1532                                  ;* back      : ax=rnd(range)                   *
  1533                                  ;***********************************************
  1534                                  
  1535                                  rnd:
  1536 0000070E BE[C8100000]            		mov	esi, randommul
  1537                                  		;mov	si, randommul
  1538 00000713 AD                      		lodsd
  1539 00000714 F726                    		mul	dword [esi] ; randomseed
  1540 00000716 40                      		inc	eax
  1541 00000717 8906                    		mov	[esi], eax  ; randomseed
  1542 00000719 66AD                    		lodsw
  1543 0000071B 66AD                    		lodsw
  1544 0000071D 66F7E3                  		mul	bx
  1545 00000720 6692                    		xchg	ax, dx
  1546 00000722 C3                      		retn
  1547                                  
  1548                                  ;***********************************************
  1549                                  ;* descript. : set timer speed to 1193180/AX   *
  1550                                  ;*             interrupts per second           *
  1551                                  ;* parameter : bx		               *
  1552                                  ;* sideeffect: ax		               *
  1553                                  ;* back      : none		               *
  1554                                  ;***********************************************
  1555                                  
  1556                                  setTimer:	; set timer speed to 1193180/BX (TRDOS 386)
  1557 00000723 B036                    		mov	al, 36h
  1558                                  		;out	43h, al		; Timer	8253-5 (AT: 8254.2).
  1559                                  
  1560 00000725 B401                    		mov	ah, 1 ; out (byte)
  1561 00000727 66BA4300                		mov	dx, 43h
  1562 0000072B CD34                    		int	34h ; TRDOS 386 - IOCTL interrupt
  1563                                  
  1564 0000072D 88D8                    		mov	al, bl
  1565                                  		;out	40h, al		; Timer	8253-5 (AT: 8254.2).
  1566                                  		
  1567 0000072F 66BA4000                		mov	dx, 40h
  1568                                  		;mov	ah, 1 ; out (byte)
  1569 00000733 CD34                    		int	34h ; TRDOS 386 - IOCTL interrupt
  1570                                  
  1571 00000735 88F8                    		mov	al, bh
  1572                                  		;out	40h, al		; Timer	8253-5 (AT: 8254.2).
  1573                                  		
  1574                                  		;mov	ah, 1 ; out (byte)
  1575                                  		;mov	dx, 40h
  1576 00000737 CD34                    		int	34h ; TRDOS 386 - IOCTL interrupt
  1577                                  
  1578 00000739 C3                      		retn
  1579                                  
  1580                                  ;***********************************************
  1581                                  ;* descript. : send a byte to the GM-Port      *
  1582                                  ;* parameter : al:midi command                 *
  1583                                  ;* sideeffect: dx		               *
  1584                                  ;* back      : none		               *
  1585                                  ;***********************************************
  1586                                  
  1587                                  writeGM:
  1588 0000073A 66BA3103                		mov	dx, GMPort  ; 331h
  1589 0000073E 6651                    		push	cx
  1590 00000740 6650                    		push	ax
  1591 00000742 30C9                    		xor	cl, cl
  1592                                  busy:
  1593 00000744 FEC9                    		dec	cl
  1594 00000746 7408                    		jz	short timeOut
  1595                                  		;in	al, dx
  1596                                  
  1597 00000748 B400                    		mov	ah, 0	; in (byte)
  1598 0000074A CD34                      		int	34h	; TRDOS 386 - IOCTL interrupt
  1599                                  		
  1600 0000074C A840                    		test	al, 40h
  1601 0000074E 75F4                    		jnz	short busy
  1602                                  
  1603                                  timeOut:				; CODE XREF: writeGM+8j
  1604 00000750 6658                    		pop	ax
  1605 00000752 6659                    		pop	cx
  1606 00000754 664A                    		dec	dx
  1607                                  		;out	dx, al
  1608                                  		
  1609 00000756 B401                    		mov	ah, 1	; out (byte)
  1610 00000758 CD34                      		int	34h	; TRDOS 386 - IOCTL interrupt
  1611                                  
  1612 0000075A C3                      		retn
  1613                                  
  1614                                  ;***********************************************
  1615                                  ;* descript. : send NOTEON command, volume 127 *
  1616                                  ;* parameter : al:channel;ah:note              *
  1617                                  ;* sideeffect: dx,al		               *
  1618                                  ;* back      : none		               *
  1619                                  ;***********************************************
  1620                                  
  1621                                  setnote:
  1622 0000075B E808000000              		call	setinstr
  1623 00000760 B07F                    		mov	al, 127	; 7Fh
  1624 00000762 E8D3FFFFFF              		call	writeGM
  1625 00000767 C3                      		retn
  1626                                  
  1627                                  ;***********************************************
  1628                                  ;* descript. : send CHANGEPRG command	       *
  1629                                  ;* parameter : al:channel;ah:instrument        *
  1630                                  ;* sideeffect: dx,al		               *
  1631                                  ;* back      : none		               *
  1632                                  ;***********************************************
  1633                                  
  1634                                  setinstr:
  1635 00000768 E8CDFFFFFF              		call	writeGM
  1636 0000076D 88E0                    		mov	al, ah
  1637 0000076F E8C6FFFFFF              		call	writeGM
  1638 00000774 C3                      		retn
  1639                                  
  1640                                  ;***********************************************
  1641                                  ;* descript. : clear/set the fractal es: to al *
  1642                                  ;* parameter : al,es		               *
  1643                                  ;* sideeffect: ax,cx,di,es  	               *
  1644                                  ;* back      : none			       *
  1645                                  ;***********************************************
  1646                                  
  1647                                  clearFrac:
  1648 00000775 31C0                    		xor	eax, eax
  1649                                  setFrac:
  1650                                  		;mov	cx, 4096 ; 1000h
  1651 00000777 B900100000              		mov	ecx, 4096 ; ??
  1652 0000077C F3AA                    		rep stosb
  1653 0000077E C3                      		retn
  1654                                  
  1655                                  ;***********************************************
  1656                                  ;* descript. : calc shade bob fractal          *
  1657                                  ;* parameter : es:seg;num,rad:stack            *
  1658                                  ;* sideeffect: all			       *
  1659                                  ;* back      : none			       *
  1660                                  ;***********************************************
  1661                                  
  1662                                  createFrac1:
  1663                                  		rad	equ 8  ; arg 1 in [esp+4]
  1664                                  		num	equ 12 ; arg 2 in [esp+8]
  1665                                  
  1666 0000077F 55                      		push	ebp
  1667 00000780 89E5                    		mov	ebp, esp
  1668                                  		; 05/02/2017
  1669 00000782 0FB7BB[20370000]        		movzx	edi, word [ebx+tseg] ; es:
  1670 00000789 C1E704                  		shl	edi, 4 ; *16
  1671 0000078C 893D[28D20000]          		mov	[_es], edi  ; 16/01/2017
  1672 00000792 E8DEFFFFFF              		call	clearFrac
  1673                                  		;mov	si, circletab
  1674 00000797 BE[80360000]            		mov	esi, circletab
  1675                                  		;mov	dx, [ebp+rad]
  1676 0000079C 8B5508                  		mov	edx, [ebp+rad] ; ??
  1677 0000079F 88D0                    		mov	al, dl
  1678 000007A1 F6EA                    		imul	dl
  1679                                  		;mov	di, ax
  1680 000007A3 6689C3                  		mov	bx, ax ; 16/01/2017
  1681                                  		;mov	cx, dx
  1682                                  		;add	cx, cx
  1683 000007A6 89D1                    		mov	ecx, edx ; ??
  1684 000007A8 01C9                    		add	ecx, ecx ; ??
  1685                                  CCTloop:
  1686 000007AA 88D0                    		mov	al, dl
  1687 000007AC F6EA                    		imul	dl
  1688 000007AE 66F7D8                  		neg	ax
  1689                                  		;add	ax, di
  1690 000007B1 6601D8                  		add	ax, bx ; 16/01/2017
  1691 000007B4 668906                  		mov	[esi], ax
  1692 000007B7 DF06                    		fild	word [esi]
  1693 000007B9 D9FA                    		fsqrt
  1694 000007BB DF1E                    		fistp	word [esi]
  1695 000007BD 46                      		inc	esi
  1696 000007BE 46                      		inc	esi
  1697 000007BF 664A                    		dec	dx
  1698 000007C1 E2E7                    		loop	CCTloop
  1699                                  
  1700 000007C3 668B4D0C                		mov	cx, [ebp+num]
  1701                                  SBloop1:
  1702 000007C7 51                      		push	ecx
  1703 000007C8 BB00100000              		mov	ebx, 4096 ; 1000h
  1704 000007CD E83CFFFFFF              		call	rnd
  1705 000007D2 0FB7F8                  		movzx	edi, ax ; 05/02/2017
  1706 000007D5 66BE[8036]              		mov	si, circletab
  1707 000007D9 668B4D08                		mov	cx, [ebp+rad]
  1708                                  		;add	cx, cx
  1709 000007DD 01C9                    		add	ecx, ecx ; ??
  1710 000007DF 8B1D[28D20000]          		mov	ebx, [_es]
  1711                                  SBloop2:
  1712 000007E5 51                      		push	ecx
  1713 000007E6 66AD                    		lodsw
  1714 000007E8 6689C1                  		mov	cx, ax
  1715 000007EB 6601C9                  		add	cx, cx
  1716 000007EE 7410                    		jz	short SBskip
  1717 000007F0 57                      		push	edi
  1718 000007F1 6629C7                  		sub	di, ax
  1719                                  SBloop3:
  1720 000007F4 6681E7FF0F              		and	di, 4095  ; 0FFFh
  1721 000007F9 FE041F                  		inc	byte [edi+ebx] ; 17/01/2017
  1722 000007FC 47                      		inc	edi
  1723 000007FD E2F5                    		loop	SBloop3
  1724 000007FF 5F                      		pop	edi
  1725                                  SBskip:
  1726 00000800 6683C740                		add	di, 64 ; 40h
  1727 00000804 59                      		pop	ecx
  1728 00000805 E2DE                    		loop	SBloop2
  1729 00000807 59                      		pop	ecx
  1730 00000808 E2BD                    		loop	SBloop1
  1731 0000080A 5D                      		pop	ebp
  1732 0000080B C20800                  		ret	8
  1733                                  
  1734                                  ;***********************************************
  1735                                  ;* descript. : draw a perpective-texturemapped *
  1736                                  ;*	       and g.-shaded n-sided polygon   *
  1737                                  ;* parameter : far ptr to poly, sides, textnum *
  1738                                  ;* sideeffect: all			       *
  1739                                  ;* back      : none			       *
  1740                                  ;* length    : 700 bytes		       *
  1741                                  ;***********************************************
  1742                                  
  1743                                  scansubtextpoly:
  1744                                  		; 30/01/2017
  1745                                  		col	equ 8   ; arg 1, [esp+4]  ; dcf.col value
  1746                                  		n	equ 12  ; arg 2, [esp+8]  ; dcf.j value
  1747                                  		pol	equ 16  ; arg 3, [esp+12] ; dcf.p2 address
  1748                                  
  1749                                   		;enter	150, 0	; 96h
  1750 0000080E C8980000                		enter	152, 0  ; 98h ; 12/12/2016		
  1751                                  			; push ebp ; mov ebp, esp ; sub esp, 152
  1752                                  
  1753                                  		; ebp - x
  1754                                  		sstp.edg  equ -60   ; 90-150 ; edges * 3
  1755                                  		sstp.del  equ -120  ; 30-150 ; edges * 3 
  1756                                  		sstp.mx1  equ -122  ; 28-150 ; word
  1757                                  		sstp.mx2  equ -124  ; 26-150 ; word	 				
  1758                                  		sstp.miny equ -126  ; 24-150 ; word
  1759                                  		sstp.maxy equ -128  ; 22-150 ; word	
  1760                                  		sstp.y	  equ -130  ; 20-150 ; word
  1761                                  		sstp.l	  equ -132  ; 18-150 ; word	 				
  1762                                  		sstp.r	  equ -134  ; 16-150 ; word
  1763                                  		sstp.uu1  equ -136  ; 14-150 ; word
  1764                                  		sstp.vv1  equ -138  ; 12-150 ; word
  1765                                  		sstp.uu2  equ -140  ; 10-150 ; word	 				
  1766                                  		sstp.vv2  equ -142  ;  8-150 ; word
  1767                                  		sstp.ddu  equ -144  ;  6-150 ; word
  1768                                  		sstp.ddv  equ -146  ;  4-150 ; word
  1769                                  		sstp.dy   equ -150  ;  0-150 ; dword
  1770                                  		; 12/12/2016
  1771                                  		sstp.pad  equ -152  ; padding (for dword boundary)
  1772                                  
  1773                                  		; 21/01/2017
  1774 00000812 B8FF7F0000              		mov	eax, 32767
  1775 00000817 89C2                    		mov	edx, eax
  1776 00000819 89C3                    		mov	ebx, eax
  1777 0000081B 66F7DB                  		neg	bx	 ; -32767 ; 8001h
  1778 0000081E 89DE                    		mov	esi, ebx ; -32767
  1779                                  		
  1780                                  		;edi = 32 bit address (in stack) /// 18/01/2017		
  1781 00000820 8B7D10                  		mov	edi, [ebp+pol] ; [ebp+16] ; dcf.p2 ; face structure
  1782                                  
  1783 00000823 31C9                    		xor	ecx, ecx
  1784                                  minmax:
  1785 00000825 663B4712                		cmp	ax, word [edi+2+edge.e+edges.x] ; [edi+12h]
  1786 00000829 7E04                    		jle	short noswap1
  1787 0000082B 668B4712                		mov	ax, word [edi+2+edge.e+edges.x] ; [edi+12h]
  1788                                  noswap1:
  1789 0000082F 663B5F12                		cmp	bx, word [edi+2+edge.e+edges.x] ; [edi+12h]
  1790 00000833 7D04                    		jge	short noswap2
  1791 00000835 668B5F12                		mov	bx, word [edi+2+edge.e+edges.x] ; [edi+12h]
  1792                                  noswap2:
  1793 00000839 663B570C                		cmp	dx, word [edi+edge.py]  ; [edi+0Ch]
  1794 0000083D 7E12                    		jle	short noswap3
  1795 0000083F 668B570C                		mov	dx, word [edi+edge.py]  ; [edi+0Ch]
  1796 00000843 66898D7CFFFFFF          		mov	word [ebp+sstp.l], cx   ; [ebp-84h]
  1797 0000084A 66898D7AFFFFFF          		mov	word [ebp+sstp.r], cx   ; [ebp-86h]
  1798                                  noswap3:
  1799 00000851 663B770C                		cmp	si, word [edi+edge.py]  ; [edi+0Ch]
  1800 00000855 7D04                    		jge	short noswap4
  1801 00000857 668B770C                		mov	si, word [edi+edge.py]  ; [edi+0Ch]
  1802                                  noswap4:
  1803 0000085B 6683C724                		add	di, 36 ; 24h
  1804 0000085F 6641                    		inc	cx
  1805 00000861 663B4D0C                		cmp	cx, word [ebp+n] ; [ebp+12]
  1806                                  				   ; dcf.j ; number of visible edges/points
  1807 00000865 75BE                    		jne	short minmax
  1808                                  
  1809 00000867 6683FB00                		cmp	bx, 0
  1810 0000086B 0F8CED020000            		jl	exitDraw
  1811 00000871 663D4001                		cmp	ax, XMAX  ; 140h
  1812 00000875 0F8FE3020000            		jg	exitDraw
  1813                                  
  1814 0000087B 6683FE15                		cmp	si, YMIN  ; 15h
  1815 0000087F 0F8CD9020000            		jl	exitDraw
  1816 00000885 6681FAB300              		cmp	dx, YMAX  ; 0B3h
  1817 0000088A 0F8FCE020000            		jg	exitDraw
  1818 00000890 66895582                		mov	word [ebp+sstp.miny], dx ; [ebp-7Eh]
  1819 00000894 66897580                		mov	word [ebp+sstp.maxy], si ; [ebp-80h]
  1820                                  
  1821                                  		;{ down clipping }
  1822 00000898 66817D80B300            		cmp	word [ebp+sstp.maxy], YMAX ; 0B3h
  1823 0000089E 7E06                    		jle	short noclipdown
  1824 000008A0 66C74580B300            		mov	word [ebp+sstp.maxy], YMAX ; 0B3h
  1825                                  noclipdown:
  1826 000008A6 668B4582                		mov	ax, word [ebp+sstp.miny] ; [ebp-7Eh]
  1827 000008AA 663B4580                		cmp	ax, word [ebp+sstp.maxy] ; [ebp-80h]
  1828 000008AE 0F84AA020000            		je	exitDraw
  1829 000008B4 6689857EFFFFFF          		mov	word [ebp+sstp.y], ax	; [ebp-82h]
  1830                                  		; 05/02/2017
  1831 000008BB 0FB75D08                		movzx	ebx, word [ebp+col]	; [ebp+8]
  1832                                  					   ; dcf.col ; shade/color index
  1833 000008BF 66D1E3                  		shl	bx, 1	
  1834                                  		;
  1835 000008C2 0FB705[1C370000]        		movzx	eax, word [vseg]
  1836 000008C9 C1E004                  		shl	eax, 4 ; *16
  1837 000008CC A3[28D20000]            		mov	[_es], eax
  1838 000008D1 0FB783[20370000]        		movzx	eax, word [ebx+tseg]
  1839 000008D8 C1E004                  		shl	eax, 4 ; *16
  1840 000008DB A3[2CD20000]            		mov	[_fs], eax
  1841                                  for:
  1842 000008E0 0FB7857EFFFFFF          		movzx	eax, word [ebp+sstp.y]	 ; [ebp-82h]
  1843 000008E7 663B4580                		cmp	ax, word [ebp+sstp.maxy] ; [ebp-80h]
  1844 000008EB 0F8F6D020000            		jg	exitDraw
  1845 000008F1 0F8488000000            		je	exitwhile2
  1846                                  while1:
  1847                                  		;mov	ax, word [ebp+sstp.y]    ; [ebp-82h]
  1848                                  		;cmp	ax, word [ebp+sstp.maxy] ; [ebp-80h]
  1849                                  		;jge	short while2	
  1850                                  		; 05/02/2017
  1851 000008F7 666B9D7CFFFFFF24        		imul	bx, word [ebp+sstp.l], 36 ; [ebp-84h]
  1852 000008FF 0FB7F3                  		movzx	esi, bx
  1853 00000902 037510                  		add	esi, dword [ebp+pol]	; [ebp+16]
  1854                                  
  1855 00000905 663B460C                		cmp	ax, word [esi+edge.py]	; [esi+0Ch]
  1856 00000909 752E                    		jne	short while2
  1857                                  
  1858 0000090B 668B9D7CFFFFFF          		mov	bx, word [ebp+sstp.l]	; [ebp-84h]
  1859 00000912 664B                    		dec	bx
  1860 00000914 7D06                    		jge	short nounder
  1861 00000916 668B5D0C                		mov	bx, word [ebp+n]	; [ebp+12]
  1862                                  					   ; dcf.j ; visible edges/points
  1863 0000091A 664B                    		dec	bx
  1864                                  nounder:
  1865 0000091C 66899D7CFFFFFF          		mov	word [ebp+sstp.l], bx	; [ebp-84h]
  1866 00000923 31FF                    		xor	edi, edi
  1867 00000925 E838020000              		call	calcDeltas
  1868 0000092A 668B857EFFFFFF          		mov	ax, word [ebp+sstp.y]    ; [ebp-82h]
  1869 00000931 663B4580                		cmp	ax, word [ebp+sstp.maxy] ; [ebp-80h]
  1870 00000935 7D48                    		jge	short exitwhile2	
  1871 00000937 EBBE                    		jmp	short while1
  1872                                  while2:
  1873                                  		;mov	ax, word [ebp+sstp.y]    ; [ebp-82h]
  1874 00000939 663B4580                		cmp	ax, word [ebp+sstp.maxy] ; [ebp-80h]
  1875 0000093D 7D40                    		jge	short exitwhile2
  1876                                  		; 05/02/2017
  1877 0000093F 666B9D7AFFFFFF24        		imul	bx, word [ebp+sstp.r], 36 ; [ebp-86h]
  1878 00000947 0FB7F3                  		movzx	esi, bx
  1879 0000094A 037510                  		add	esi, [ebp+pol]		; [ebp+16]
  1880                                  
  1881 0000094D 663B460C                		cmp	ax, word [esi+edge.py]	; [esi+0Ch]
  1882 00000951 752C                    		jne	short exitwhile2
  1883                                  
  1884 00000953 668B9D7AFFFFFF          		mov	bx, word [ebp+sstp.r]    ; [ebp-86h]
  1885 0000095A 6643                    		inc	bx
  1886 0000095C 663B5D0C                		cmp	bx, word [ebp+n]	 ; [ebp+12]
  1887 00000960 7C03                    		jl	short noover
  1888 00000962 6631DB                  		xor	bx, bx
  1889                                  noover:
  1890 00000965 66899D7AFFFFFF          		mov	word [ebp+sstp.r], bx	; [ebp-86h]
  1891 0000096C BF14000000              		mov	edi, 20  ; 14h
  1892 00000971 E8EC010000              		call	calcDeltas
  1893                                  		;
  1894 00000976 668B857EFFFFFF          		mov	ax, word [ebp+sstp.y]	; [ebp-82h]
  1895 0000097D EBBA                    		jmp	short while2
  1896                                  exitwhile2:
  1897                                  		;{ up clipping }
  1898 0000097F 6683BD7EFFFFFF15        		cmp	word [ebp+sstp.y], YMIN	; 15h
  1899 00000987 0F8CB2010000            		jl	clipup
  1900 0000098D 31DB                    		xor	ebx, ebx
  1901 0000098F 31C9                    		xor	ecx, ecx
  1902 00000991 668B5DC6                		mov	bx, word [ebp+sstp.edg+2+edges.x] ; [ebp-3Ah]
  1903 00000995 66895D86                		mov	word [ebp+sstp.mx1], bx  ; [ebp-7Ah]
  1904 00000999 668B4DDA                		mov	cx, word [ebp+sstp.edg+20+2+edges.x] ; [ebp-26h]
  1905 0000099D 66894D84                		mov	word [ebp+sstp.mx2], cx  ; [ebp-7Ch]
  1906 000009A1 6629D9                  		sub	cx, bx
  1907 000009A4 0F8495010000            		jz	exitol
  1908 000009AA 66837D8400              		cmp	word [ebp+sstp.mx2], 0 ; [ebp-7Ch]
  1909 000009AF 0F8E8A010000            		jle	exitol
  1910 000009B5 66817D864001            		cmp	word [ebp+sstp.mx1], XMAX ; 140h
  1911 000009BB 0F8F7E010000            		jg	exitol
  1912                                  
  1913 000009C1 66F7DB                  		neg	bx
  1914 000009C4 790B                    		jns	short myelse
  1915 000009C6 6631DB                  		xor	bx, bx
  1916 000009C9 EB0C                    		jmp	short myendif
  1917                                  _nodivbyzero:
  1918 000009CB 8B443DB0                		mov	eax, dword [ebp+edi+sstp.del+40] ; [ebp+edi-50h]
  1919 000009CF EB1D                    		jmp	short nodivbyzero
  1920                                  myelse:
  1921 000009D1 66C745860000            		mov	word [ebp+sstp.mx1], 0 ; [ebp-7Ah]
  1922                                  myendif:
  1923 000009D7 BF10000000              		mov	edi, 16 ; 10h
  1924                                  addloop1:
  1925                                  		;{ calculate deltas }
  1926 000009DC 8B443DD8                		mov	eax, dword [ebp+edi+sstp.edg+20] ; [ebp+edi-28h]
  1927 000009E0 2B443DC4                		sub	eax, dword [ebp+edi+sstp.edg]    ; [ebp+edi-3Ch]
  1928 000009E4 99                      		cdq
  1929                                  		;jcxz	nodivbyzero
  1930 000009E5 67E3E3                  		jcxz	_nodivbyzero
  1931 000009E8 F7F9                    		idiv	ecx
  1932 000009EA 89443DB0                		mov	dword [ebp+edi+sstp.del+40], eax ; [ebp+edi-50h]
  1933                                  nodivbyzero:
  1934                                  		;{ left clipping }
  1935 000009EE 8B443DB0                		mov	eax, dword [ebp+edi+sstp.del+40] ; [ebp+edi-50h]
  1936 000009F2 F7EB                    		imul	ebx
  1937 000009F4 03443DC4                		add	eax, dword [ebp+edi+sstp.edg]	 ; [ebp+edi-3Ch]
  1938 000009F8 89443DEC                		mov	dword [ebp+edi+sstp.edg+40], eax ; [ebp+edi-14h]
  1939 000009FC 6683EF04                		sub	di, 4
  1940 00000A00 75DA                    		jnz	short addloop1
  1941                                  
  1942 00000A02 668B45C0                		mov	ax, word [ebp+sstp.del+40+16]   ; [ebp-40h]
  1943 00000A06 66A3[75100000]          		mov	word [dels_pos_w], ax
  1944                                  
  1945                                  		;{ right clipping }
  1946 00000A0C 66817D844001            		cmp	word  [ebp+sstp.mx2], XMAX  ; [ebp-7Ch]
  1947 00000A12 7E06                    		jle	short norightclip
  1948 00000A14 66C745844001            		mov	word  [ebp+sstp.mx2], XMAX  ; 140h
  1949                                  norightclip:
  1950 00000A1A 6669BD7EFFFFFF4001      		imul	di, word [ebp+sstp.y], 320  ; [ebp-82h]
  1951 00000A23 66037D86                		add	di, word [ebp+sstp.mx1]	   ; [ebp-7Ah]
  1952                                  		
  1953 00000A27 66BB0001                		mov	bx, 256 ; 100h
  1954 00000A2B 8B45F0                  		mov	eax, dword [ebp+sstp.edg+40+edges.u] ; [ebp-10h]
  1955 00000A2E F7EB                    		imul	ebx
  1956 00000A30 F77DF8                  		idiv	dword [ebp+sstp.edg+40+edges.w] ; [ebp-8]
  1957 00000A33 66898574FFFFFF          		mov	word [ebp+sstp.uu2], ax 	    ; [ebp-8Ch]
  1958 00000A3A 8B45F4                  		mov	eax, dword [ebp+sstp.edg+40+edges.v] ; [ebp-0Ch]
  1959 00000A3D F7EB                    		imul	ebx
  1960 00000A3F F77DF8                  		idiv	dword [ebp+sstp.edg+40+edges.w] ; [ebp-8]
  1961 00000A42 66898572FFFFFF          		mov	word [ebp+sstp.vv2], ax	    ; [ebp-8Eh]
  1962                                  outloop:
  1963 00000A49 668B4D84                		mov	cx, word [ebp+sstp.mx2]	    ; [ebp-7Ch]
  1964 00000A4D 662B4D86                		sub	cx, word [ebp+sstp.mx1]	    ; [ebp-7Ah]
  1965 00000A51 0F8EE8000000            		jle	exitol
  1966 00000A57 6683F910                		cmp	cx, SUBRANGE ; 10h
  1967 00000A5B 7E04                    		jle	short lastSeg
  1968 00000A5D 66B91000                		mov	cx, SUBRANGE ; 10h
  1969                                  lastSeg:
  1970                                  		;{ uu1:=uu2 }
  1971                                  		;{ vv1:=vv2 }
  1972 00000A61 8B8572FFFFFF            		mov	eax, dword [ebp+sstp.vv2]    ; [ebp-8Eh]
  1973 00000A67 898576FFFFFF            		mov	dword [ebp+sstp.vv1], eax    ; [ebp-8Ah]
  1974                                  
  1975 00000A6D 8B45B4                  		mov	eax, dword [ebp+sstp.del+40+edges.u] ; [ebp-4Ch]
  1976 00000A70 F7E9                    		imul	ecx
  1977 00000A72 0145F0                  		add	dword [ebp+sstp.edg+40+edges.u], eax ; [ebp-10h]
  1978 00000A75 8B45B8                  		mov	eax, dword [ebp+sstp.del+40+edges.v] ; [ebp-48h]
  1979 00000A78 F7E9                    		imul	ecx
  1980 00000A7A 0145F4                  		add	dword [ebp+sstp.edg+40+edges.v], eax ; [ebp-0Ch]
  1981 00000A7D 8B45BC                  		mov	eax, dword [ebp+sstp.del+40+edges.w] ; [ebp-44h]
  1982 00000A80 F7E9                    		imul	ecx
  1983 00000A82 0145F8                  		add	dword [ebp+sstp.edg+40+edges.w], eax ; [ebp-8]
  1984                                  
  1985 00000A85 66BB0001                		mov	bx, 256 ; 100h
  1986 00000A89 8B45F0                  		mov	eax, dword [ebp+sstp.edg+40+edges.u] ; [ebp-10h]
  1987 00000A8C F7EB                    		imul	ebx
  1988 00000A8E F77DF8                  		idiv	dword [ebp+sstp.edg+40+edges.w] ; [ebp-8]
  1989 00000A91 66898574FFFFFF          		mov	word [ebp+sstp.uu2], ax	     ; [ebp-8Ch]
  1990 00000A98 8B45F4                  		mov	eax, dword [ebp+sstp.edg+40+edges.v] ; [ebp-0Ch]
  1991 00000A9B F7EB                    		imul	ebx
  1992 00000A9D F77DF8                  		idiv	dword [ebp+sstp.edg+40+edges.w] ; [ebp-8]
  1993 00000AA0 66898572FFFFFF          		mov	word [ebp+sstp.vv2], ax	    ; [ebp-8Eh]
  1994                                  
  1995 00000AA7 668B8574FFFFFF          		mov	ax, word [ebp+sstp.uu2]	    ; [ebp-8Ch]
  1996 00000AAE 662B8578FFFFFF          		sub	ax, word [ebp+sstp.uu1]	    ; [ebp-88h]
  1997 00000AB5 6699                    		cwd
  1998 00000AB7 66F7F9                  		idiv	cx
  1999 00000ABA 66A3[77100000]          		mov	word [ddu_pos_w], ax
  2000                                  
  2001 00000AC0 668B8572FFFFFF          		mov	ax, word [ebp+sstp.vv2]	    ; [ebp-8Eh]
  2002 00000AC7 662B8576FFFFFF          		sub	ax, word [ebp+sstp.vv1]	    ; [ebp-8Ah]
  2003 00000ACE 6699                    		cwd
  2004 00000AD0 66F7F9                  		idiv	cx
  2005 00000AD3 66A3[79100000]          		mov	word [ddv_pos_w], ax
  2006                                  
  2007 00000AD9 668BB576FFFFFF          		mov	si, word [ebp+sstp.vv1]    ; [ebp-8Ah]
  2008 00000AE0 668B9578FFFFFF          		mov	dx, word [ebp+sstp.uu1]	    ; [ebp-88h]
  2009 00000AE7 668B45FC                		mov	ax, word [ebp+sstp.edg+40+16] ; [ebp-4]
  2010                                  innerloop:
  2011                                   		; 05/02/2017
  2012 00000AEB 0FB7DE                  		movzx	ebx, si
  2013 00000AEE 30DB                    		xor	bl, bl
  2014 00000AF0 66C1EB02                		shr	bx, 2
  2015 00000AF4 00F3                    		add	bl, dh
  2016 00000AF6 031D[2CD20000]          		add	ebx, [_fs]
  2017 00000AFC 0FB61B                  		movzx	ebx, byte [ebx] ; [fs:bx]
  2018 00000AFF 08DB                    		or	bl, bl
  2019 00000B01 7415                    		jz	short dels_pos
  2020 00000B03 88E7                    		mov	bh, ah
  2021 00000B05 8A9B[48370000]          		mov	bl, byte [ebx+shadetab]
  2022                                  
  2023 00000B0B 56                      		push	esi
  2024 00000B0C 0FB7F7                  		movzx	esi, di
  2025 00000B0F 0335[28D20000]          		add	esi, [_es]
  2026 00000B15 881E                    		mov	byte [esi], bl	; [es:di] 
  2027 00000B17 5E                      		pop	esi
  2028                                  dels_pos:	
  2029 00000B18 660305[75100000]        		add	ax, word [dels_pos_w] ;{word ptr dels}
  2030                                  ddu_pos:	
  2031 00000B1F 660315[77100000]        		add	dx, word [ddu_pos_w]  ;{word ptr ddu }
  2032                                  ddv_pos:	
  2033 00000B26 660335[79100000]        		add	si, word [ddv_pos_w]  ;{word ptr ddv }
  2034                                  
  2035 00000B2D 6647                    		inc	di	
  2036 00000B2F E2BA                    		loop	innerloop
  2037                                  
  2038 00000B31 668945FC                		mov	word [ebp+sstp.edg+40+16], ax ; [ebp-4]
  2039 00000B35 6683458610              		add	word [ebp+sstp.mx1], SUBRANGE ; [ebp-7Ah]
  2040 00000B3A E90AFFFFFF              		jmp	outloop
  2041                                  exitol:
  2042 00000B3F BF24000000              clipup:		mov	edi, 36 ; 24h
  2043                                  addloop:
  2044 00000B44 8B443D88                		mov	eax, dword [ebp+edi+sstp.del]  ; [ebp+edi-78h]
  2045 00000B48 01443DC4                		add	dword [ebp+edi+sstp.edg], eax  ; [ebp+edi-3Ch]
  2046 00000B4C 6683EF04                		sub	di, 4
  2047 00000B50 79F2                    		jns	short addloop
  2048 00000B52 66FF857EFFFFFF          		inc	word [ebp+sstp.y]	 ; [ebp-82h]
  2049 00000B59 E982FDFFFF              		jmp	for
  2050                                  exitDraw:
  2051 00000B5E C9                      		leave
  2052                                  			; mov 3sp, 3bp ; pop 3bp
  2053 00000B5F C20C00                  		ret	12
  2054                                  
  2055                                    ;***********************************************
  2056                                    ;* descript. : calc deltas for vertical interp.*
  2057                                    ;* parameter : none			         *
  2058                                    ;* sideeffect: all		 	         *
  2059                                    ;***********************************************
  2060                                  
  2061                                  calcDeltas:
  2062 00000B62 666BD324                		imul	dx, bx,	36
  2063 00000B66 89F3                    		mov	ebx, esi
  2064 00000B68 0FB7F2                  		movzx	esi, dx
  2065 00000B6B 037510                  		add	esi, [ebp+pol]	; [ebp+16]
  2066                                  		;
  2067 00000B6E 668B460C                		mov	ax, word [esi+12]
  2068 00000B72 662B857EFFFFFF          		sub	ax, word [ebp+sstp.y] ; [ebp-82h]
  2069 00000B79 0FBFC0                  		movsx	eax, ax
  2070 00000B7C 89856AFFFFFF            		mov	dword [ebp+sstp.dy], eax ; [ebp-96h]
  2071 00000B82 66B90500                		mov	cx, 5
  2072                                  cDloop:
  2073 00000B86 8B5310                  		mov	edx, dword [ebx+16]
  2074 00000B89 89543DC4                		mov	dword [ebp+edi+sstp.edg], edx ; [ebp+edi-3Ch]
  2075 00000B8D 8B4610                  		mov	eax, dword [esi+16]
  2076 00000B90 29D0                    		sub	eax, edx
  2077 00000B92 99                      		cdq
  2078 00000B93 6683BD6AFFFFFF00        		cmp	word [ebp+sstp.dy], 0  ; [ebp-96h]
  2079 00000B9B 740A                    		je	short cDskip
  2080 00000B9D F7BD6AFFFFFF            		idiv	dword [ebp+sstp.dy]    ; [ebp-96h]
  2081 00000BA3 89443D88                		mov	dword [ebp+edi+sstp.del], eax ; [ebp+edi-78h]
  2082                                  cDskip:
  2083 00000BA7 BA04000000              		mov	edx, 4
  2084 00000BAC 01D7                    		add	edi, edx ; +4
  2085 00000BAE 01D6                    		add	esi, edx ; +4
  2086 00000BB0 01D3                    		add	ebx, edx ; +4
  2087 00000BB2 E2D2                    		loop	cDloop
  2088 00000BB4 C3                      		retn
  2089                                  
  2090                                  ;***********************************************
  2091                                  ;* descript. : clip a poly at the viewplane,   *
  2092                                  ;*             project and draw it	       *
  2093                                  ;* parameter : bx:adress of the face	       *
  2094                                  ;* sideeffect: all		 	       *
  2095                                  ;* back      : none			       *
  2096                                  ;***********************************************
  2097                                  
  2098                                  drawclippedface:
  2099                                  
  2100                                  		dcf.d	equ -2	  ; word
  2101                                  		dcf.h	equ -4	  ; word	
  2102                                  		dcf.j	equ -6	  ; word
  2103                                  		dcf.col equ -8	  ; word
  2104                                  		dcf.is_in equ -10 ; byte
  2105                                  		dcf.p0	equ -190  ; poly (5*36 bytes)
  2106                                  		dcf.p2	equ -370  ; poly (5*36 bytes)
  2107                                  		;
  2108                                  		dcf.pad equ -372  ; padding (for dword boundary)
  2109                                  
  2110                                  		;enter	370, 0  ; 172h
  2111 00000BB5 C8740100                		enter	372, 0  ; 174h ; 12/12/2016
  2112                                   			; push ebp ; mov ebp, esp ; sub esp, 372
  2113                                  		;mov	esi, uvtab
  2114 00000BB9 66BE[2C13]              		mov	si, uvtab
  2115 00000BBD 31FF                    		xor	edi, edi
  2116                                  		;mov	ecx, 4
  2117 00000BBF 66B90400                		mov	cx, 4
  2118                                  dCFinitloop:
  2119 00000BC3 53                      		push	ebx	; face addr (in 'o+object.f')(29/01/2017)
  2120                                  		;movzx	ebx, word [ebx]
  2121 00000BC4 668B1B                  		mov	bx, word [ebx] ; point index into 'rp:' ? (29/01/2017)
  2122                                  
  2123 00000BC7 53                      		push	ebx
  2124 00000BC8 666BDB0C                		imul	bx, bx, 12 ; (point vector size = 12 bytes)
  2125 00000BCC 81C3[28B90000]          		add	ebx, rp	  ; addr of rotated point vects (29/01/2017)
  2126 00000BD2 8B03                    		mov	eax, dword [ebx]
  2127                                  		; vector(4-cx).x
  2128 00000BD4 89843D42FFFFFF          		mov	dword [ebp+edi+dcf.p0+0], eax	; [ebp+edi-0BEh]
  2129                                  		; vector(4-cx).y
  2130 00000BDB 8B4304                  		mov	eax, dword [ebx+4]
  2131 00000BDE 89843D46FFFFFF          		mov	dword [ebp+edi+dcf.p0+4], eax	; [ebp+edi-0BAh]
  2132                                  
  2133 00000BE5 D94308                  		fld	dword [ebx+8]
  2134                                  		; vector(4-cx).z
  2135 00000BE8 D9943D4AFFFFFF          		fst	dword [ebp+edi+dcf.p0+8]	; [ebp+edi-0B6h]
  2136 00000BEF DF5DFC                  		fistp	word [ebp+dcf.h]		; [ebp-04h]	
  2137                                  						; dcf.h = z distance
  2138 00000BF2 5B                      		pop	ebx
  2139                                  
  2140 00000BF3 668B45FC                		mov	ax, word [ebp+dcf.h]		; [ebp-04h]
  2141 00000BF7 66050002                		add	ax, 512	; 200h
  2142 00000BFB 0F8875010000            		js	dCFbackclip   ; not visible ? (29/01/2017) 
  2143                                  
  2144 00000C01 663DFF01                		cmp	ax, 511 ; 1FFh
  2145 00000C05 7E04                    		jle	short intensityOK
  2146 00000C07 66B8FF01                		mov	ax, 511 ; 1FFh		; maximum z distance (dept) ?
  2147                                  intensityOK:
  2148 00000C0B 66C1E303                		shl	bx, 3 ; point index * 8
  2149 00000C0F 31D2                    		xor	edx, edx
  2150 00000C11 66C1E007                		shl	ax, 7
  2151 00000C15 66F7A3[5E1A0000]        		mul	word [ebx+o+6+object.p]	; [ebx+o+6+4]
  2152                                  		; edges(4-cx).s
  2153 00000C1C 89943D62FFFFFF          		mov	dword [ebp+edi+dcf.p0+32], edx	; [ebp+edi-9Eh]
  2154                                  
  2155 00000C23 30E4                    		xor	ah, ah
  2156 00000C25 8A4604                  		mov	al, byte [esi+4]
  2157 00000C28 C1E010                  		shl	eax, 16	; 10h
  2158                                  		; edges(4-cx).v
  2159 00000C2B 89843D5AFFFFFF          		mov	dword [ebp+edi+dcf.p0+24], eax	; [ebp+edi-0A6h]
  2160                                  
  2161 00000C32 AC                      		lodsb
  2162 00000C33 C1E010                  		shl	eax, 16	; 10h
  2163                                  		; edges(4-cx).u
  2164 00000C36 89843D56FFFFFF          		mov	dword [ebp+edi+dcf.p0+20], eax	; [ebp+edi-0AAh]
  2165                                  
  2166 00000C3D 5B                      		pop	ebx
  2167 00000C3E 43                      		inc	ebx
  2168 00000C3F 43                      		inc	ebx
  2169 00000C40 6683C724                		add	di, 36	; 24h  ; size of edge
  2170                                  		;loop	dCFinitloop
  2171 00000C44 6649                    		dec	cx
  2172 00000C46 0F8577FFFFFF            		jnz	dCFinitloop
  2173                                  
  2174                                  		; end of p1, p2, p3, p4 point dimensioning of face
  2175                                  		; 
  2176                                  		; p1 ...... p2
  2177                                  		;  .	    .	
  2178                                  		;  . shade  .
  2179                                  		;  .        .
  2180                                  		; p3 ...... p4
  2181                                  		;
  2182                                  		; p1 (x,y,z) ... p4 (x,y,z)
  2183                                  		;
  2184                                  
  2185 00000C4C 668B03                  		mov	ax, word [ebx]		; shade
  2186 00000C4F 668945F8                		mov	word [ebp+dcf.col], ax	; [ebp-08h]
  2187                                  
  2188 00000C53 31DB                    		xor	ebx, ebx
  2189 00000C55 66895DFA                		mov	word [ebp+dcf.j], bx	; [ebp-06h]
  2190                                  
  2191                                  		; vector(3).z
  2192 00000C59 D945B6                  		fld	dword [ebp+dcf.p0+108+8] ; [ebp-4Ah]
  2193 00000C5C D9E4                    		ftst
  2194                                  		;fstsw	ax
  2195 00000C5E DFE0                    		fnstsw	ax
  2196 00000C60 DDD8                    		fstp	st0
  2197 00000C62 9E                      		sahf
  2198 00000C63 7302                    		jae	short isFalse
  2199 00000C65 664B                    		dec	bx
  2200                                  isFalse:
  2201 00000C67 885DF6                  		mov	byte [ebp+dcf.is_in], bl  ; [ebp-0Ah]
  2202 00000C6A 31F6                    		xor	esi, esi
  2203 00000C6C 31FF                    		xor	edi, edi 
  2204                                  forloop:
  2205                                  		; vector(0-3).z
  2206 00000C6E D984354AFFFFFF          		fld	dword [ebp+esi+dcf.p0+8]  ; [ebp+esi-0B6h]
  2207 00000C75 D9E4                    		ftst
  2208                                  		;fstsw	ax
  2209 00000C77 DFE0                    		fnstsw	ax
  2210 00000C79 DDD8                    		fstp	st0
  2211 00000C7B 9E                      		sahf
  2212 00000C7C 7331                    		jae	short elseFall
  2213                                  
  2214 00000C7E 807DF6FF                		cmp	byte [ebp+dcf.is_in], 0FFh ; -1 ; true
  2215 00000C82 7408                    		je	short inside
  2216 00000C84 E8EF000000              		call	clipsub
  2217                                  		; { OUT / IN }
  2218 00000C89 F655F6                  		not	byte [ebp+dcf.is_in]	; [ebp-0Ah]
  2219                                  inside:
  2220 00000C8C 57                      		push	edi
  2221 00000C8D 56                      		push	esi
  2222 00000C8E 8DBC3D8EFEFFFF          		lea	edi, [ebp+edi+dcf.p2]	; [ebp+edi-172h]
  2223 00000C95 8DB43542FFFFFF          		lea	esi, [ebp+esi+dcf.p0]	; [ebp+esi-0BEh]
  2224                                  
  2225 00000C9C 66B91200                		mov	cx, 18	; 12h
  2226 00000CA0 F366A5                  		rep movsw			; { IN / IN }
  2227                                  
  2228 00000CA3 5E                      		pop	esi
  2229 00000CA4 5F                      		pop	edi
  2230 00000CA5 6683C724                		add	di, 36	; 24h
  2231 00000CA9 66FF45FA                		inc	word [ebp+dcf.j]		; [ebp-06h]
  2232 00000CAD EB0E                    		jmp	short dCFendif
  2233                                  elseFall:
  2234 00000CAF 807DF6FF                		cmp	byte [ebp+dcf.is_in], 0FFh ; [ebp-0Ah]
  2235 00000CB3 7508                    		jne	short outside
  2236 00000CB5 E8BE000000              		call	clipsub
  2237                                  		; { IN / OUT }
  2238 00000CBA F655F6                  		not	byte [ebp+dcf.is_in]	; [ebp-0Ah]
  2239                                  outside:
  2240 00000CBD 6683C624                dCFendif:	add	si, 36 ; 24h
  2241 00000CC1 6681FE9000              		cmp	si, 4*36 ; 90h
  2242 00000CC6 75A6                    		jne	short forloop
  2243                                  
  2244 00000CC8 668B4DFA                		mov	cx, word [ebp+dcf.j]	; [ebp-06h]
  2245 00000CCC 6683F902                		cmp	cx, 2
  2246 00000CD0 0F8CA0000000            		jl	dCFnodraw
  2247 00000CD6 31FF                    		xor	edi, edi
  2248                                  dCFloop:
  2249 00000CD8 DF05[BC100000]          		fild	word [CONST13]
  2250 00000CDE D8A43D96FEFFFF          		fsub	dword [ebp+edi+dcf.p2+8]  ; [ebp+edi-16Ah]
  2251 00000CE5 DE35[C0100000]          		fidiv	word [CONST160]
  2252                                  		
  2253 00000CEB D9843D92FEFFFF          		fld	dword [ebp+edi+dcf.p2+4]  ; [ebp+edi-16Eh]
  2254 00000CF2 D8F1                    		fdiv	st0, st1
  2255 00000CF4 DE05[BE100000]          		fiadd	word [CONST100]
  2256 00000CFA DB9C3D9AFEFFFF          		fistp	dword [ebp+edi+dcf.p2+12] ; [ebp+edi-166h]
  2257                                  		
  2258 00000D01 D9843D8EFEFFFF          		fld	dword [ebp+edi+dcf.p2]	; [ebp+edi-172h]
  2259 00000D08 D80D[B8100000]          		fmul	dword [ASPECT_PLACE]
  2260 00000D0E D8F1                    		fdiv	st0, st1
  2261 00000D10 DE05[C0100000]          		fiadd	word [CONST160]
  2262 00000D16 D9FC                    		frndint
  2263 00000D18 DA0D[C4100000]          		fimul	dword [CONST65536]
  2264 00000D1E DB9C3D9EFEFFFF          		fistp	dword [ebp+edi+dcf.p2+16] ; [ebp+edi-162h]
  2265                                  
  2266 00000D25 DB843DA2FEFFFF          		fild	dword [ebp+edi+dcf.p2+20] ; [ebp+edi-15Eh]
  2267 00000D2C D8F1                    		fdiv	st0, st1
  2268 00000D2E DB9C3DA2FEFFFF          		fistp	dword [ebp+edi+dcf.p2+20] ; [ebp+edi-15Eh]
  2269                                  		
  2270 00000D35 DB843DA6FEFFFF          		fild	dword [ebp+edi+dcf.p2+24] ; [ebp+edi-15Ah]
  2271 00000D3C D8F1                    		fdiv	st0, st1
  2272 00000D3E DB9C3DA6FEFFFF          		fistp	dword [ebp+edi+dcf.p2+24] ; [ebp+edi-15Ah]
  2273                                  		
  2274 00000D45 DB05[C4100000]          		fild	dword [CONST65536]
  2275 00000D4B D8F1                    		fdiv	st0, st1
  2276 00000D4D DB9C3DAAFEFFFF          		fistp	dword [ebp+edi+dcf.p2+28] ; [ebp+edi-156h]
  2277                                  		
  2278 00000D54 DDD8                    		fstp	st0
  2279 00000D56 6683C724                		add	di, 36 ; 24h
  2280                                  		;loop	dCFloop
  2281 00000D5A 6649                    		dec	cx
  2282 00000D5C 0F8576FFFFFF            		jnz	dCFloop
  2283                                  
  2284 00000D62 8DBD8EFEFFFF            		lea	edi, [ebp+dcf.p2]	; [ebp-172h]
  2285 00000D68 57                      		push	edi
  2286 00000D69 66FF75FA                		push	word [ebp+dcf.j]	; [ebp-06h]	 
  2287 00000D6D 66FF75F8                		push	word [ebp+dcf.col]	; [ebp-08h]
  2288 00000D71 E898FAFFFF              		call	scansubtextpoly
  2289                                  dCFnodraw:
  2290 00000D76 C9                      dCFbackclip:	leave
  2291                                  			; mov sp, bp ; pop bp
  2292 00000D77 C3                      		retn
  2293                                  
  2294                                  clipsub:
  2295                                  		; 05/02/2017
  2296 00000D78 56                      		push	esi
  2297 00000D79 57                      		push	edi
  2298 00000D7A 8D46DC                  		lea	eax, [esi-36]		; [si-24h]
  2299 00000D7D 83F800                  		cmp	eax, 0
  2300 00000D80 7D05                    		jge	short cSnounder
  2301 00000D82 B86C000000              		mov	eax, 108 ; 6Ch
  2302                                  cSnounder:
  2303 00000D87 D984354AFFFFFF          		fld	dword [ebp+esi+dcf.p0+8]  ; [ebp+esi-0B6h]
  2304 00000D8E D9C0                    		fld	st0
  2305 00000D90 97                      		xchg	eax, edi
  2306 00000D91 D8A43D4AFFFFFF          		fsub	dword [ebp+edi+dcf.p0+8]  ; [ebp+edi-0B6h]
  2307 00000D98 97                      		xchg	eax, edi
  2308 00000D99 DEF9                    		fdivp	st1, st0
  2309                                  		;fdiv
  2310                                  
  2311 00000D9B BB[27130000]            		mov	ebx, cliptab
  2312 00000DA0 66B90600                		mov	cx, 6
  2313 00000DA4 31D2                    		xor	edx, edx
  2314                                  dCFclipLoop2:
  2315 00000DA6 97                      		xchg	eax, edi
  2316 00000DA7 D9843D42FFFFFF          		fld	dword [ebp+edi+dcf.p0]	; [ebp+edi-0BEh]
  2317 00000DAE 97                      		xchg	eax, edi
  2318 00000DAF D8A43542FFFFFF          		fsub	dword [ebp+esi+dcf.p0]	; [ebp+esi-0BEh]
  2319 00000DB6 D8C9                    		fmul	st0, st1
  2320 00000DB8 D8843542FFFFFF          		fadd	dword [ebp+esi+dcf.p0]	; [ebp+esi-0BEh]
  2321 00000DBF D99C3D8EFEFFFF          		fstp	dword [ebp+edi+dcf.p2]	; [ebp+edi-172h]
  2322                                  
  2323 00000DC6 8A13                    		mov	dl, byte [ebx]
  2324 00000DC8 43                      		inc	ebx
  2325 00000DC9 01D7                    		add	edi, edx
  2326 00000DCB 01D6                    		add	esi, edx
  2327 00000DCD 01D0                    		add	eax, edx
  2328 00000DCF E2D5                    		loop	dCFclipLoop2
  2329 00000DD1 DDD8                    		fstp	st0
  2330 00000DD3 5F                      		pop	edi
  2331 00000DD4 5E                      		pop	esi
  2332 00000DD5 66FF45FA                		inc	word [ebp+dcf.j] 	; [ebp-6]
  2333                                  		;add	edi, 36
  2334 00000DD9 6683C724                		add	di, 36 ; 24h
  2335 00000DDD C3                      		retn
  2336                                  
  2337                                  
  2338                                  ;***********************************************
  2339                                  ;* descript. : rotate point over one axis      *
  2340                                  ;* parameter : st(0):angle, [ds:si] ptr to     *
  2341                                  ;*	       1.koord.,[ds:bx] ptr to 2.koord.*
  2342                                  ;* sideeffect: empty copro-stack               *
  2343                                  ;* back      : none			       *
  2344                                  ;***********************************************
  2345                                  
  2346                                  rotateAxis:
  2347 00000DDE D9EB                    		fldpi				;{ PI,a}
  2348 00000DE0 DEC9                    		fmulp	st1, st0		;{ PI*a}	
  2349                                  		;fmul
  2350 00000DE2 DA35[C4100000]          		fidiv	dword [CONST65536]	;{ PI*a/65536}
  2351 00000DE8 D9FB                    		fsincos				;{ cos,sin}
  2352 00000DEA D9C0                    		fld	st0			;{ cos,cos,sin}
  2353 00000DEC D80E                    		fmul	dword [esi] 		;{ y*cos,cos,sin}
  2354 00000DEE D9C2                    		fld	st2			;{ sin,y*cos,cos,sin}
  2355 00000DF0 D80B                    		fmul	dword [ebx]		;{ z*sin,y*cos,cos,sin}
  2356 00000DF2 DEE9                    		fsubp	st1, st0		;{ y*cos-z*sin,cos,sin}
  2357 00000DF4 D9CA                    		fxch	st2			;{ sin,cos,y*cos-z*sin}
  2358 00000DF6 D80E                    		fmul	dword [esi]		;{ y*sin,cos,y*cos-z*sin}
  2359 00000DF8 D9C9                    		fxch	st1			;{ cos,y*sin,y*cos-z*sin}
  2360 00000DFA D80B                    		fmul	dword [ebx]		;{ z*cos,y*sin,y*cos-z*sin}
  2361 00000DFC DEC1                    		faddp	st1, st0		;{ y*sin+z*cos,y*cos-z*sin}
  2362 00000DFE D91B                    		fstp	dword [ebx]		;{ y*cos-z*sin}
  2363 00000E00 D91E                    		fstp	dword [esi]		;{}
  2364 00000E02 C3                      		retn
  2365                                  
  2366                                  ;***********************************************
  2367                                  ;* descript. : rotate point		       *
  2368                                  ;* parameter : a,b,c:angles,adr:address        *
  2369                                  ;* sideeffect: all		 	       *
  2370                                  ;* back      : none			       *
  2371                                  ;***********************************************
  2372                                  
  2373                                  xyzRotate:
  2374                                  		adr	equ 8   ; arg 1, [esp+4]
  2375                                  		c	equ 12	; arg 2, [esp+8]	
  2376                                  		b	equ 16  ; arg 3, [esp+12]
  2377                                  		a	equ 20  ; arg 4, [esp+16]
  2378                                  
  2379 00000E03 55                      		push	ebp
  2380 00000E04 89E5                    		mov	ebp, esp
  2381                                  	
  2382 00000E06 8B7D08                  		mov	edi, [ebp+adr]
  2383 00000E09 DF4514                  		fild	word [ebp+a]
  2384 00000E0C 8D5F08                  		lea	ebx, [edi+8]
  2385 00000E0F 8D7704                  		lea	esi, [edi+4]
  2386 00000E12 E8C7FFFFFF              		call	rotateAxis
  2387 00000E17 DF4510                  		fild	word [ebp+b]
  2388 00000E1A 8D1F                    		lea	ebx, [edi]
  2389 00000E1C 8D7708                  		lea	esi, [edi+8]
  2390 00000E1F E8BAFFFFFF              		call	rotateAxis
  2391 00000E24 DF450C                  		fild	word [ebp+c]
  2392 00000E27 8D5F04                  		lea	ebx, [edi+4]
  2393 00000E2A 8D37                    		lea	esi, [edi]
  2394 00000E2C E8ADFFFFFF              		call	rotateAxis
  2395                                  
  2396 00000E31 5D                      		pop	ebp
  2397 00000E32 C21000                  		ret	16
  2398                                  
  2399                                  ;***********************************************
  2400                                  ;* descript. : calculate world matrix	       *
  2401                                  ;* parameter : x-,y-,z-angle,neig:stack	       *
  2402                                  ;* sideeffect: all		 	       *
  2403                                  ;* back      : none			       *
  2404                                  ;***********************************************
  2405                                  
  2406                                  calcRotMat:
  2407                                  		neig	equ 8   ; arg 1, [esp+4]
  2408                                  		zw	equ 12	; arg 2, [esp+8]	
  2409                                  		yw	equ 16  ; arg 3, [esp+12]
  2410                                  		xw	equ 20  ; arg 4, [esp+16]
  2411                                  
  2412 00000E35 55                      		push	ebp
  2413 00000E36 89E5                    		mov	ebp, esp
  2414                                  
  2415 00000E38 BF[BE160000]            		mov	edi, nwmat
  2416                                  		identityMat
  2416 00000E3D B502                <1>  mov ch, 2
  2416                              <1> iMolp:
  2416 00000E3F B102                <1>  mov cl, 2
  2416                              <1> iMilp:
  2416 00000E41 D9EE                <1>  fldz
  2416 00000E43 38CD                <1>  cmp ch, cl
  2416 00000E45 7504                <1>  jne short iMwritezero
  2416 00000E47 DDD8                <1>  fstp st0
  2416 00000E49 D9E8                <1>  fld1
  2416                              <1> iMwritezero:
  2416 00000E4B D91F                <1>  fstp dword [edi]
  2416 00000E4D 6683C704            <1>  add di, 4
  2416 00000E51 FEC9                <1>  dec cl
  2416 00000E53 79EC                <1>  jns short iMilp
  2416 00000E55 FECD                <1>  dec ch
  2416 00000E57 79E6                <1>  jns short iMolp
  2417 00000E59 31FF                    		xor	edi, edi
  2418                                  cRMolp:
  2419 00000E5B 57                      		push	edi
  2420 00000E5C FF7514                  		push	dword [ebp+xw]
  2421 00000E5F FF7510                  		push	dword [ebp+yw]
  2422 00000E62 FF750C                  		push	dword [ebp+zw]
  2423                                  		;add	edi, nwmat
  2424 00000E65 6681C7[BE16]            		add	di, nwmat
  2425 00000E6A 57                      		push	edi
  2426 00000E6B E893FFFFFF              		call	xyzRotate
  2427 00000E70 5F                      		pop	edi
  2428 00000E71 31DB                    		xor	ebx, ebx
  2429                                  cRMilp:
  2430 00000E73 D987[BE160000]          		fld	dword [edi+nwmat]
  2431 00000E79 D88B[76160000]          		fmul	dword [ebx+owmat]
  2432 00000E7F D987[C2160000]          		fld	dword [edi+nwmat+4]
  2433 00000E85 D88B[82160000]          		fmul	dword [ebx+owmat+12]
  2434 00000E8B D987[C6160000]          		fld	dword [edi+nwmat+8]
  2435 00000E91 D88B[8E160000]          		fmul	dword [ebx+owmat+24]
  2436 00000E97 DEC1                    		fadd
  2437 00000E99 DEC1                    		fadd
  2438 00000E9B D9943B[76160000]        		fst	dword [ebx+edi+owmat]
  2439 00000EA2 D99C3B[9A160000]        		fstp	dword [ebx+edi+wmat]
  2440 00000EA9 6683C304                		add	bx, 4
  2441 00000EAD 80FB0C                  		cmp	bl, 12
  2442 00000EB0 75C1                    		jne	short cRMilp
  2443 00000EB2 6683C70C                		add	di, 12
  2444 00000EB6 6683FF24                		cmp	di, 36
  2445 00000EBA 759F                    		jne	short cRMolp
  2446                                  
  2447 00000EBC BE[9A160000]            		mov	esi, wmat
  2448 00000EC1 66B90300                		mov	cx, 3
  2449                                  cRMneigloop:
  2450 00000EC5 DF4508                  		fild	word [ebp+neig]
  2451 00000EC8 8D5E0C                  		lea	ebx, [esi+12]
  2452 00000ECB E80EFFFFFF              		call	rotateAxis
  2453 00000ED0 6683C604                		add	si, 4
  2454 00000ED4 E2EF                    		loop	cRMneigloop
  2455                                  
  2456 00000ED6 5D                      		pop	ebp
  2457 00000ED7 C21000                  		ret	16
  2458                                  
  2459                                  ;***********************************************
  2460                                  ;* descript. : create the world		       *
  2461                                  ;* parameter : none			       *
  2462                                  ;* sideeffect: all		               *
  2463                                  ;* back      : none			       *
  2464                                  ;***********************************************
  2465                                  
  2466                                  createWorld:
  2467                                  		cw.direc  equ -2  ; word
  2468                                  		cw.shade  equ -4  ; word	
  2469                                  
  2470 00000EDA C8040000                		enter	4, 0
  2471                                  			; push ebp ; mov ebp, esp ; sub esp, 4
  2472 00000EDE BE[79130000]            		mov	esi, world
  2473                                  		;mov	cx, 4
  2474 00000EE3 B904000000              		mov	ecx, 4 ; ??
  2475                                  cWworldLoop:
  2476 00000EE8 51                      		push	ecx
  2477 00000EE9 56                      		push	esi
  2478 00000EEA BF[48B70000]            		mov	edi, p
  2479 00000EEF BB[C0B70000]            		mov	ebx, pr
  2480 00000EF4 66BE[4C13]              		mov	si, print
  2481 00000EF8 B10F                    		mov	cl, 15 ; 0Fh
  2482                                  cWinitStartRoom:
  2483 00000EFA 51                      		push	ecx
  2484 00000EFB B103                    		mov	cl, 3
  2485                                  cWinnerLoop:
  2486 00000EFD AC                      		lodsb  ; byte data (to be converted to dword) from the 'print:'
  2487 00000EFE 6698                    		cbw    ; convert byte to word with sign (0E0h -> FFE0h)	
  2488 00000F00 66AB                    		stosw  ; store world coordinate/dimension as integer (word), to 'p:' 
  2489 00000F02 DF47FE                  		fild	word [edi-2]
  2490 00000F05 D91B                    		fstp	dword [ebx] ; store coordinate as floatpoint (29/01/2017)
  2491 00000F07 6683C304                		add	bx, 4 ; next dimension (x,y,z) in 'pr:'
  2492 00000F0B E2F0                    		loop	cWinnerLoop
  2493 00000F0D 59                      		pop	ecx
  2494 00000F0E 66B8007F                		mov	ax, 127*256 ; 7F00h ;  4th dimension in 'p:' (29/01/2017)
  2495 00000F12 66AB                    		stosw
  2496 00000F14 E2E4                    		loop	cWinitStartRoom
  2497 00000F16 5E                      		pop	esi
  2498                                  cWmainLoop:
  2499 00000F17 AC                      		lodsb	; the byte from 'world:' for shade and direction ( 29/01/2017)
  2500 00000F18 3CFF                    		cmp	al, 255 ; 0FFh
  2501 00000F1A 0F844A010000            		je	cWexit  ; end of stage (1 to 4) (29/01/2017)
  2502                                  
  2503 00000F20 88C7                    		mov	bh, al  ; High 4 bits for shading (29/01/2017)
  2504 00000F22 6681E30070              		and	bx, 7000h
  2505 00000F27 80C70F                  		add	bh, 15 ; 0Fh
  2506 00000F2A 66895DFC                		mov	[ebp+cw.shade], bx ; [ebp-4]
  2507 00000F2E 6683E00F                		and	ax, 0Fh ; 15   ; Low 4 bits for direction (29/01/2017)
  2508 00000F32 668945FE                		mov	[ebp+cw.direc], ax ; [ebp-2]
  2509                                  
  2510 00000F36 31DB                    		xor	ebx, ebx
  2511                                  cWsideLoop:
  2512 00000F38 F6C304                  		test	bl, 4
  2513 00000F3B 7405                    		jz	short cWfirstNibble
  2514 00000F3D AC                      		lodsb
  2515 00000F3E 240F                    		and	al, 0Fh ; 15
  2516 00000F40 EB05                    		jmp	short cWsecondNibble
  2517                                  cWfirstNibble:
  2518 00000F42 8A06                    		mov	al, [esi]
  2519 00000F44 C0E804                  		shr	al, 4
  2520                                  cWsecondNibble:
  2521 00000F47 30E4                    		xor	ah, ah
  2522 00000F49 6648                    		dec	ax
  2523 00000F4B 7867                    		js	short cWnoWall ; ax = 0 -> ax = 0FFFFh (29/01/2017)
  2524 00000F4D 666B3D[561A0000]0A      		imul	di, word [o+object.fanz], 10 ; 0Ah
  2525 00000F55 6681C7[D826]            		add	di, o+object.f ; base address + offset
  2526 00000F5A 66FF05[561A0000]        		inc	word [o+object.fanz] ; faces = faces + 1
  2527 00000F61 66894708                		mov	[edi+8], ax ; 4th word is shading value (29/01/2017)
  2528                                  
  2529 00000F65 53                      		push	ebx
  2530 00000F66 56                      		push	esi
  2531 00000F67 B104                    		mov	cl, 4
  2532                                  cWaddPointloop:
  2533                                  		;movsx	esi, byte [ebx+cube] ; cube coordinate offset (29/01/207)
  2534 00000F69 0FB6B3[34130000]        		movzx	esi, byte [ebx+cube]
  2535 00000F70 81C6[48B70000]          		add	esi, p ; + base address (p:) (29/01/2017)
  2536                                  
  2537 00000F76 57                      		push	edi
  2538 00000F77 BF[581A0000]            		mov	edi, o+object.p  ; p area of object structure (in o:)
  2539 00000F7C 51                      		push	ecx
  2540 00000F7D 668B0D[541A0000]        		mov	cx, [o+object.panz] ; number of points (for object.p)
  2541 00000F84 6631C0                  		xor	ax, ax
  2542 00000F87 67E318                  		jcxz	cWfirstPoint
  2543                                  cWsearchPointLoop: ; check point coordinates are same or not (29/01/2017)
  2544 00000F8A 8B16                    		mov	edx, [esi]
  2545 00000F8C 3B17                    		cmp	edx, [edi]
  2546 00000F8E 750A                    		jne	short cWdifferent
  2547 00000F90 668B5604                		mov	dx, [esi+4]
  2548 00000F94 663B5704                		cmp	dx, [edi+4]
  2549 00000F98 7411                    		je	short cWpointExists
  2550                                  cWdifferent:
  2551 00000F9A 6640                    		inc	ax ; number of different points (of object)
  2552 00000F9C 6683C708                		add	di, 8
  2553 00000FA0 E2E8                    		loop	cWsearchPointLoop
  2554                                  cWfirstPoint:
  2555 00000FA2 A5                      		movsd
  2556 00000FA3 A5                      		movsd
  2557 00000FA4 66FF05[541A0000]        		inc	word [o+object.panz] ; points = points + 1
  2558                                  cWpointExists:
  2559 00000FAB 59                      		pop	ecx
  2560 00000FAC 5F                      		pop	edi
  2561 00000FAD 66AB                    		stosw   ; store num of different points (29/01/2017)
  2562                                  			; in the Xth word of face structure (5 words)
  2563                                  			; (Xth word of 'object.f', X = 4-CL)
  2564 00000FAF 43                      		inc	ebx
  2565 00000FB0 E2B7                    		loop	cWaddPointloop
  2566 00000FB2 5E                      		pop	esi
  2567 00000FB3 5B                      		pop	ebx
  2568                                  cWnoWall:
  2569 00000FB4 6683C304                		add	bx, 4
  2570 00000FB8 6683FB18                		cmp	bx, 24 ; 18h
  2571 00000FBC 0F8576FFFFFF            		jne	cWsideLoop
  2572                                  
  2573 00000FC2 666B7DFE0C              		imul	di, word [ebp+cw.direc], 12 ; [ebp-2]
  2574                                  		; di will have negative value if 12*[ebp-2] > 127
  2575                                  		; max value of [ebp-2] = 0Fh (29/01/2017) 
  2576 00000FC7 0FBFFF                  		movsx	edi, di ; 05/02/2017
  2577 00000FCA B103                    		mov	cl, 3
  2578 00000FCC 66BB[20B8]              		mov	bx, pr+96 ; 24th dword of 'pr:'
  2579                                  cWaddStepLoop:
  2580 00000FD0 D94348                  		fld	dword [ebx+72] ; [ebx+48h]
  2581 00000FD3 D8043B                  		fadd	dword [ebx+edi]
  2582 00000FD6 D95B48                  		fstp	dword [ebx+72]
  2583 00000FD9 6683C304                		add	bx, 4
  2584 00000FDD E2F1                    		loop	cWaddStepLoop
  2585                                  
  2586 00000FDF 807EFC00                		cmp	byte [esi-4], 0
  2587 00000FE3 7D27                    		jge	short cWsimpleRoom
  2588                                  
  2589 00000FE5 66BB[C0B7]              		mov	bx, pr
  2590 00000FE9 B10E                    		mov	cl, 14 ; 0Eh
  2591                                  cWrotloop:
  2592 00000FEB 60                      		pushad
  2593 00000FEC B103                    		mov	cl, 3
  2594 00000FEE 8A16                    		mov	dl, [esi]
  2595                                  cWpushLoop:
  2596 00000FF0 31C0                    		xor	eax, eax
  2597 00000FF2 D0EA                    		shr	dl, 1
  2598 00000FF4 7305                    		jnc	short cWnoRot
  2599 00000FF6 8A26                    		mov	ah, [esi]
  2600                                  		;and	ax, 0F000h
  2601 00000FF8 80E4F0                  		and	ah, 0F0h
  2602                                  		;push	ax
  2603                                  		;jmp	short cWendIf
  2604                                  cWnoRot:
  2605                                  		;push	0 ; arg 2 (c), arg 3 (b), arg 4 (a)
  2606 00000FFB 50                      		push	eax
  2607                                  cWendIf:
  2608 00000FFC E2F2                    		loop	cWpushLoop
  2609 00000FFE 53                      		push	ebx ; arg 1 (addr)
  2610 00000FFF E8FFFDFFFF              		call	xyzRotate
  2611 00001004 61                      		popad
  2612 00001005 6683C30C                		add	bx, 12 ; 0Ch
  2613 00001009 E2E0                    		loop	cWrotloop
  2614 0000100B 46                      		inc	esi
  2615                                  cWsimpleRoom:
  2616 0000100C 668B5DFE                		mov	bx, [ebp+cw.direc]  ; [ebp-2]
  2617 00001010 66C1E302                		shl	bx, 2
  2618 00001014 B104                    		mov	cl, 4
  2619                                  cWpointCopyLoop:
  2620 00001016 60                      		pushad
  2621 00001017 0FBEB3[34130000]        		movsx	esi, byte [ebx+cube]
  2622 0000101E 89F0                    		mov	eax, esi
  2623 00001020 81C6[48B70000]          		add	esi, p ; + base address of 'p:'
  2624 00001026 80F307                  		xor	bl, 7
  2625 00001029 0FBEBB[34130000]        		movsx	edi, byte [ebx+cube]
  2626 00001030 81C7[48B70000]          		add	edi, p ; + base address of 'p:'
  2627 00001036 56                      		push	esi 
  2628 00001037 A5                      		movsd
  2629 00001038 A5                      		movsd
  2630 00001039 5E                      		pop	esi
  2631                                  
  2632 0000103A 89C3                    		mov	ebx, eax
  2633 0000103C D1EB                    		shr	ebx, 1
  2634 0000103E 01C3                    		add	ebx, eax
  2635 00001040 BF[C0B70000]            		mov	edi, pr ; + base address of 'pr:'
  2636 00001045 B103                    		mov	cl, 3
  2637                                  cWSround:
  2638 00001047 D9043B                  		fld	dword [ebx+edi]
  2639 0000104A D887A8000000            		fadd	dword [edi+168]  ; [edi+0A8h]
  2640 00001050 DF1E                    		fistp	word [esi] ; world coordinate/dimension
  2641 00001052 6683C704                		add	di, 4
  2642 00001056 46                      		inc	esi
  2643 00001057 46                      		inc	esi
  2644 00001058 E2ED                    		loop	cWSround
  2645 0000105A 668B45FC                		mov	ax, [ebp+cw.shade]  ; [ebp-4]
  2646 0000105E 668906                  		mov	[esi], ax ; 4th word
  2647 00001061 61                      		popad
  2648 00001062 43                      		inc	ebx
  2649 00001063 E2B1                    		loop	cWpointCopyLoop
  2650 00001065 E9ADFEFFFF              		jmp	cWmainLoop
  2651                                  cWexit:
  2652 0000106A 59                      		pop	ecx
  2653 0000106B 6649                    		dec	cx
  2654 0000106D 0F8575FEFFFF            		jnz	cWworldLoop
  2655 00001073 C9                      		leave
  2656                                  			; mov esp, ebp ; pop ebp
  2657 00001074 C3                      		retn
  2658                                  
  2659                                  ; 17/01/2017
  2660 00001075 1111                    dels_pos_w:	dw 1111h
  2661 00001077 1111                    ddu_pos_w:	dw 1111h
  2662 00001079 1111                    ddv_pos_w:	dw 1111h
  2663                                  
  2664                                  prg_msg:
  2665 0000107B 4552444F47414E2054-     		db	'ERDOGAN TAN - TRDOS 386 VGA Test - SNCOMNI.PRG'
  2665 00001084 414E202D205452444F-
  2665 0000108D 532033383620564741-
  2665 00001096 2054657374202D2053-
  2665 0000109F 4E434F4D4E492E5052-
  2665 000010A8 47                 
  2666 000010A9 0D0A                    		db	0Dh, 0Ah
  2667 000010AB 30362F30322F323031-     		db	'06/02/2017'
  2667 000010B4 37                 
  2668 000010B5 0D0A                    		db	0Dh, 0Ah
  2669 000010B7 00                      		db	0 
  2670                                  
  2671                                  ;=============================================================================
  2672                                  ;               preinitialized data
  2673                                  ;=============================================================================
  2674                                  
  2675 000010B8 9A99993F                ASPECT_PLACE:	dd ASPECT_RATIO		; 1.2
  2676 000010BC 0D00                    CONST13:	dw 13			; 000Dh			
  2677 000010BE 6400                    CONST100:	dw CENTERY		; 0064h
  2678 000010C0 A000                    CONST160:	dw CENTERX		; 00A0h
  2679 000010C2 0007                    CONST1792:	dw 1792			; 0700h
  2680 000010C4 00000100                CONST65536:	dd 65536		; 00010000h
  2681 000010C8 05840808                randommul:	dd 134775813		; 08088405h
  2682 000010CC FB100000                randomseed:	dd 4347			; 000010FBh
  2683                                  credits:
  2684 000010D0 0250FB                  		db	 2, 80,-5
  2685 000010D3 FE320445023E024502-     		db      -2,50,4,69,2,62,2,69,2,81,2,62,2,69,2,79,2,62,2,69,2
  2685 000010DC 51023E0245024F023E-
  2685 000010E5 024502             
  2686 000010E8 51023E0245024F0251-     		db	81,2,62,2,69,2,79,2,81,2,0	; { pat 0,2,4,6,8 }
  2686 000010F1 0200               
  2687 000010F3 FE320446023E024602-     		db      -2,50,4,70,2,62,2,70,2,81,2,62,2,70,2,79,2,62,2,70,2
  2687 000010FC 51023E0246024F023E-
  2687 00001105 024602             
  2688 00001108 52023E0246024F0252-     		db	82,2,62,2,70,2,79,2,82,2,0	; { pat 1,3,5,7,9 }
  2688 00001111 0200               
  2689 00001113 00                      		db       0
  2690 00001114 37203820                		db      55,32,56,32			; { pat 10 }
  2691 00001118 332035183708            		db      51,32,53,24,55,8                ; { pat 11 }
  2692 0000111E 39203220                		db      57,32,50,32		 	; { pat 12 }
  2693 00001122 3C303A083908            		db      60,48,58,8,57,8                 ; { pat 13 }
  2694 00001128 3740                    		db      55,64		   		; { pat 14 }
  2695 0000112A FE43103E1045104610-     		db      -2,67,16,62,16,69,16,70,16,0	; { pat 15 }
  2695 00001133 00                 
  2696 00001134 FE461045103E104110-     		db      -2,70,16,69,16,62,16,65,16,0    ; { pat 16 }
  2696 0000113D 00                 
  2697 0000113E 00                      		db       0
  2698 0000113F 043201800180            		db       4, 50,1,128,1,128              ;{ pat 0-3 }
  2699 00001145 411C4002410240103E-     		db      65,28,64,2,65,2,64,16,62,8,60,8 ;{ pat 4 }
  2699 0000114E 083C08             
  2700 00001151 431C41043C10410840-     		db      67,28,65,4,60,16,65,8,64,8      ;{ pat 5 }
  2700 0000115A 08                 
  2701 0000115B 3E20321040084108        		db      62,32,50,16,64,8,65,8           ;{ pat 6 }
  2702 00001163 43203C103E084008        		db      67,32,60,16,62,8,64,8           ;{ pat 7 }
  2703 0000116B 3E80                    		db      62,128		  		;{ pat 8,9 }
  2704 0000116D 4380                    		db      67,128		  		;{ pat 10,11 }
  2705 0000116F 431040104210400842-     		db     	67,16,64,16,66,16,64,8,66,8	;{ pat 12 }
  2705 00001178 08                 
  2706 00001179 48304610                		db     	72,48,70,16                 	;{ pat 13 }
  2707 0000117D 43203720                		db     	67,32,55,32                 	;{ pat 14 }
  2708 00001181 FE1F20372000            		db     	-2,31,32,55,32,0                ;{ pat 15 }
  2709 00001187 FE1A20322000            		db      -2,26,32,50,32,0                ;{ pat 16 }
  2710 0000118D 00                      		db       0
  2711 0000118E 0559FB018000            		db       5, 89,-5,1,128,0		;{ pat 0-9 }
  2712 00001194 43084A1844084B18        		db      67,8,74,24,68,8,75,24           ;{ pat 10 }
  2713 0000119C 3F0846183C08451043-     		db      63,8,70,24,60,8,69,16,67,8      ;{ pat 11 }
  2713 000011A5 08                 
  2714 000011A6 3E08451043083E0842-     		db      62,8,69,16,67,8,62,8,66,24	;{ pat 12 }
  2714 000011AF 18                 
  2715 000011B0 3F0843183C08431045-     		db      63,8,67,24,60,8,67,16,69,8	;{ pat 13 }
  2715 000011B9 08                 
  2716 000011BA 370843182B083218        		db      55,8,67,24,43,8,50,24           ;{ pat 14 }
  2717 000011C2 FE1F01263F00            		db      -2,31,1,38,63,0                	;{ pat 15 }
  2718 000011C8 FE1A01213F00            		db      -2,26,1,33,63,0                	;{ pat 16 }
  2719 000011CE 00                      		db       0
  2720 000011CF 0A00F02A022A022A02-     		db	10,  0,-16,42,2,42,2,42,2,42,1,42,1,0 ;{ pat 0,1 }
  2720 000011D8 2A012A0100         
  2721 000011DD F024022A022A022A01-     		db     -16,36,2,42,2,42,2,42,1,42,1,0   ;{ pat 2,3 }
  2721 000011E6 2A0100             
  2722 000011E9 E224022A022E022401-     		db     -30,36,2,42,2,46,2,36,1,42,1,38,2
  2722 000011F2 2A012602           
  2723 000011F6 2A022E0226012A01        		db	42,2,46,2,38,1,42,1     	;{ pat 4-16 }
  2724 000011FE 2402260224022A012A-     		db      36,2,38,2,36,2,42,1,42,1,38,2,42,2,46,2,38,1,42,1,0
  2724 00001207 0126022A022E022601-
  2724 00001210 2A0100             
  2725 00001213 00                      		db     	 0
  2726 00001214 00                      		db	 0
  2727                                  
  2728                                  ; colortable 65 bytes
  2729 00001215 10                      colors 		db	16
  2730 00001216 1F3F3F3F                                db      31,63,63,63
  2731 0000121A 01000000                                db	 1, 0, 0, 0
  2732 0000121E 1F28203F                                db      31,40,32,63
  2733 00001222 01000000                                db	 1, 0, 0, 0
  2734 00001226 1F3F0000                                db      31,63, 0, 0
  2735 0000122A 01060100                                db	 1, 6, 1, 0
  2736 0000122E 1F3F2914                                db      31,63,41,20
  2737 00001232 01000000                                db	 1, 0, 0, 0
  2738 00001236 1F3F3F08                                db      31,63,63, 8
  2739 0000123A 01000000                                db	 1, 0, 0, 0
  2740 0000123E 1F38383F                                db	31,56,56,63
  2741 00001242 013F0000                                db	 1,63, 0, 0
  2742 00001246 103F3F00                                db      16,63,63, 0
  2743 0000124A 103F0000                                db      16,63, 0, 0
  2744 0000124E 01160500                                db	 1,22, 5, 0
  2745 00001252 073F3811                                db       7,63,56,17
  2746                                  
  2747                                  ; parameter for the texture effects 156 bytes
  2748 00001256 130F0F31310A            aE              db	013h,15,15,49,49,10
  2749 0000125C 131010303011                            db      013h,16,16,48,48,17
  2750 00001262 1311112F2F18                            db      013h,17,17,47,47,24
  2751 00001268 1312122E2EBE                            db      013h,18,18,46,46,190
  2752 0000126E 1315152B2B1E                            db      013h,21,21,43,43,30
  2753 00001274 2500003E1E03                            db      025h,0,0,62,30,3
  2754 0000127A 2503033E1E07                            db      025h,3,3,62,30,7
  2755 00001280 2503033B1BFC                            db      025h,3,3,59,27,0FCh
  2756 00001286 2500203E3E03                            db      025h,0,32,62,62,3
  2757 0000128C 2503233E3E07                            db      025h,3,35,62,62,7
  2758 00001292 2503233B3BFC                            db      025h,3,35,59,59,0FCh
  2759 00001298 2500003F3FFE                            db      025h,0,0,63,63,0FEh
  2760 0000129E 2C000A3F0FF6                            db      02Ch,0,10,63,15,0F6h
  2761 000012A4 2C000B3F1004                            db      02Ch,0,11,63,16,4
  2762 000012AA 2C002F3F34F6                            db      02Ch,0,47,63,52,0F6h
  2763 000012B0 2C00303F3504                            db      02Ch,0,48,63,53,4
  2764 000012B6 2E13182C2705                            db      02Eh,19,24,44,39,5
  2765 000012BC 2E14192C27F4                            db      02Eh,20,25,44,39,0F4h
  2766 000012C2 2E14192B2607                            db      02Eh,20,25,43,38,7
  2767 000012C8 3E14192B2606                            db      03Eh,20,25,43,38,6
  2768 000012CE 2F00183F1E06                            db      02Fh,0,24,63,30,6
  2769 000012D4 2F00193F1FFA                            db      02Fh,0,25,63,31,0FAh
  2770 000012DA 3F00193F1E06                            db      03Fh,0,25,63,30,6
  2771 000012E0 2F00203F2606                            db      02Fh,0,32,63,38,6
  2772 000012E6 2F00213F27FA                            db      02Fh,0,33,63,39,0FAh
  2773 000012EC 3F00213F2606                            db      03Fh,0,33,63,38,6
  2774                                  
  2775                                  ; parameter for fractaladd 28 bytes
  2776 000012F2 22C026012601260020-     aF:             db      34,192,38,1,38,1,38,0,32,0,32,32,32,64
  2776 000012FB 0020202040         
  2777 00001300 226024002260240024-                     db	34,96,36,0,34,96,36,0,36,0,36,0,36,0
  2777 00001309 0024002400         
  2778                                  
  2779                                  ; star bob for the sparcling stars texture 25 bytes
  2780 0000130E 0000030000              bob:            db	0,0,3,0,0
  2781 00001313 0002050200                              db	0,2,5,2,0
  2782 00001318 0305070503                              db	3,5,7,5,3
  2783 0000131D 0002050200                              db	0,2,5,2,0
  2784 00001322 0000030000                              db	0,0,3,0,0
  2785                                  
  2786 00001327 04040C0408              cliptab:	db	4,4,12,4,8
  2787                                  
  2788 0000132C 00003F3F3F00003F        uvtab:		db	0,0,63,63,63,0,0,63
  2789                                  
  2790 00001334 08283010                cube:		db	1*8,5*8,6*8,2*8
  2791 00001338 18382000                                db      3*8,7*8,4*8,0*8
  2792 0000133C 10303818                                db      2*8,6*8,7*8,3*8
  2793 00001340 00202808                                db      0*8,4*8,5*8,1*8
  2794 00001344 38302820                        	db	7*8,6*8,5*8,4*8
  2795 00001348 00081018                                db      0*8,1*8,2*8,3*8
  2796                                  
  2797 0000134C E0E0E0                  print:		db	-32,-32,-32
  2798 0000134F 20E0E0                                  db       32,-32,-32
  2799 00001352 2020E0                                  db   	 32, 32,-32
  2800 00001355 E020E0                                  db  	-32, 32,-32
  2801 00001358 E0E020                                  db  	-32,-32, 32
  2802 0000135B 20E020                                  db       32,-32, 32
  2803 0000135E 202020                                  db   	 32, 32, 32
  2804 00001361 E02020                                  db  	-32, 32, 32
  2805 00001364 400000                                  db       64,  0,  0
  2806 00001367 C00000                                  db      -64,  0,  0
  2807 0000136A 004000                                  db        0, 64,  0
  2808 0000136D 00C000                                  db        0,-64,  0
  2809 00001370 000040                                  db        0,  0, 64
  2810 00001373 0000C0                                  db        0,  0,-64
  2811 00001376 000000                                  db	  0,  0,  0
  2812                                  
  2813                                  ; world contruction data 599 bytes
  2814 00001379 71700006                world:		db	071h,070h,000h,006h
  2815 0000137D 72000006                                db	072h,000h,000h,006h
  2816 00001381 71007006                                db	071h,000h,070h,006h
  2817 00001385 73077006                                db	073h,007h,070h,006h
  2818 00001389 73070006                                db	073h,007h,000h,006h
  2819 0000138D 70070706                                db	070h,007h,007h,006h
  2820 00001391 74000706                                db	074h,000h,007h,006h
  2821 00001395 70000740                                db	070h,000h,007h,040h
  2822 00001399 72700750                                db	072h,070h,007h,050h
  2823 0000139D 72700050                                db	072h,070h,000h,050h
  2824 000013A1 71707050                                db	071h,070h,070h,050h
  2825 000013A5 73007040                                db	073h,000h,070h,040h
  2826 000013A9 71000040                                db	071h,000h,000h,040h
  2827 000013AD 72000050                                db	072h,000h,000h,050h
  2828 000013B1 71007050                                db	071h,000h,070h,050h
  2829 000013B5 73077046                                db	073h,007h,070h,046h
  2830 000013B9 73000046                                db	073h,000h,000h,046h
  2831 000013BD 70070746                                db	070h,007h,007h,046h
  2832 000013C1 72000750                                db	072h,000h,007h,050h
  2833 000013C5 71000000                                db	071h,000h,000h,000h
  2834 000013C9 71000000                                db	071h,000h,000h,000h
  2835 000013CD 7100BB56                                db	071h,000h,0BBh,056h
  2836 000013D1 700FBB46                                db	070h,00Fh,0BBh,046h
  2837 000013D5 FF                                      db	0FFh
  2838 000013D6 33000000                                db	033h,000h,000h,000h
  2839 000013DA F0000706E4                              db	0F0h,000h,007h,006h,0E4h
  2840 000013DF B000BB46E4                              db	0B0h,000h,0BBh,046h,0E4h
  2841 000013E4 9000BB56E4                              db	090h,000h,0BBh,056h,0E4h
  2842 000013E9 9000BB56E4                              db	090h,000h,0BBh,056h,0E4h
  2843 000013EE 3000BB56                                db	030h,000h,0BBh,056h
  2844 000013F2 F000BB5611                              db	0F0h,000h,0BBh,056h,011h
  2845 000013F7 F000BB4611                              db	0F0h,000h,0BBh,046h,011h
  2846 000013FC B000BB5611                              db	0B0h,000h,0BBh,056h,011h
  2847 00001401 9000BB5611                              db	090h,000h,0BBh,056h,011h
  2848 00001406 B000BB5611                              db	0B0h,000h,0BBh,056h,011h
  2849 0000140B F000BB5611                              db	0F0h,000h,0BBh,056h,011h
  2850 00001410 F000BB4611                              db	0F0h,000h,0BBh,046h,011h
  2851 00001415 B000BB5611                              db	0B0h,000h,0BBh,056h,011h
  2852 0000141A 3000BB56                                db	030h,000h,0BBh,056h
  2853 0000141E 1000BB56                                db	010h,000h,0BBh,056h
  2854                                  
  2855 00001422 34000000                                db	034h,000h,000h,000h
  2856 00001426 32050080                                db	032h,005h,000h,080h
  2857 0000142A 35058080                                db	035h,005h,080h,080h
  2858 0000142E 35058000                                db	035h,005h,080h,000h
  2859 00001432 33058008                                db	033h,005h,080h,008h
  2860 00001436 33050008                                db	033h,005h,000h,008h
  2861 0000143A 74050808                                db	074h,005h,008h,008h
  2862 0000143E 74050000                                db	074h,005h,000h,000h
  2863 00001442 73050880                                db	073h,005h,008h,080h
  2864 00001446 75000000                                db	075h,000h,000h,000h
  2865 0000144A 75050888                                db	075h,005h,008h,088h
  2866 0000144E 70000000                                db	070h,000h,000h,000h
  2867 00001452 74640808                                db	074h,064h,008h,008h
  2868 00001456 74600800                                db	074h,060h,008h,000h
  2869 0000145A 72640880                                db	072h,064h,008h,080h
  2870 0000145E 05600080                                db	005h,060h,000h,080h
  2871 00001462 05600000                                db	005h,060h,000h,000h
  2872 00001466 02600008                                db	002h,060h,000h,008h
  2873 0000146A 34600008                                db	034h,060h,000h,008h
  2874 0000146E 34600000                                db	034h,060h,000h,000h
  2875 00001472 32600080                                db	032h,060h,000h,080h
  2876 00001476 35600080                                db	035h,060h,000h,080h
  2877 0000147A 35600000                                db	035h,060h,000h,000h
  2878 0000147E 32600008                                db	032h,060h,000h,008h
  2879 00001482 34350008                                db	034h,035h,000h,008h
  2880 00001486 14650000                                db      014h,065h,000h,000h
  2881 0000148A 32350080                                db      032h,035h,000h,080h
  2882 0000148E 35350080                               	db      035h,035h,000h,080h
  2883 00001492 15650000                               	db      015h,065h,000h,000h
  2884 00001496 32350008                                db	032h,035h,000h,008h
  2885 0000149A 34358008                                db	034h,035h,080h,008h
  2886 0000149E 14650000                               	db      014h,065h,000h,000h
  2887 000014A2 32358080                               	db      032h,035h,080h,080h
  2888 000014A6 75000000                		db	075h,000h,000h,000h
  2889 000014AA 5265E077                		db	052h,065h,0E0h,077h
  2890 000014AE 32640E77                		db	032h,064h,00Eh,077h
  2891 000014B2 12650077                		db	012h,065h,000h,077h
  2892 000014B6 00650077                		db	000h,065h,000h,077h
  2893 000014BA FF                      		db	0FFh
  2894 000014BB 32000000                		db	032h,000h,000h,000h
  2895 000014BF F000000014              		db	0F0h,000h,000h,000h,014h
  2896 000014C4 B000000014              		db	0B0h,000h,000h,000h,014h
  2897 000014C9 30000000                		db	030h,000h,000h,000h
  2898 000014CD F0000000F4              		db	0F0h,000h,000h,000h,0F4h
  2899 000014D2 F000DD56F4              		db	0F0h,000h,0DDh,056h,0F4h
  2900 000014D7 3000DD46                		db	030h,000h,0DDh,046h
  2901 000014DB 3000DD56                		db	030h,000h,0DDh,056h
  2902 000014DF 3000DD56                		db	030h,000h,0DDh,056h
  2903 000014E3 32000050                		db	032h,000h,000h,050h
  2904 000014E7 300AA050                		db	030h,00Ah,0A0h,050h
  2905 000014EB 3300A050                		db	033h,000h,0A0h,050h
  2906 000014EF 30000050                		db	030h,000h,000h,050h
  2907 000014F3 32700050                		db	032h,070h,000h,050h
  2908 000014F7 3000A050                		db	030h,000h,0A0h,050h
  2909 000014FB 33A0A750                		db	033h,0A0h,0A7h,050h
  2910 000014FF 33000000                		db	033h,000h,000h,000h
  2911 00001503 31A07A50                		db	031h,0A0h,07Ah,050h
  2912 00001507 31000A50                		db	031h,000h,00Ah,050h
  2913 0000150B 31000A50                		db	031h,000h,00Ah,050h
  2914 0000150F 320A0A50                		db	032h,00Ah,00Ah,050h
  2915 00001513 35000000                		db	035h,000h,000h,000h
  2916 00001517 720A0000                		db	072h,00Ah,000h,000h
  2917 0000151B 700AA000                		db	070h,00Ah,0A0h,000h
  2918 0000151F 7300A000                		db	073h,000h,0A0h,000h
  2919 00001523 70000000                		db	070h,000h,000h,000h
  2920 00001527 72000000                		db	072h,000h,000h,000h
  2921 0000152B 7000A000                		db	070h,000h,0A0h,000h
  2922 0000152F 73A0A000                		db	073h,0A0h,0A0h,000h
  2923 00001533 73A00099                		db	073h,0A0h,000h,099h
  2924 00001537 71A00A00                		db	071h,0A0h,00Ah,000h
  2925 0000153B 71000A00                		db	071h,000h,00Ah,000h
  2926 0000153F 71000A00                                db	071h,000h,00Ah,000h
  2927 00001543 750A0A00                                db	075h,00Ah,00Ah,000h
  2928 00001547 700C0C03                                db	070h,00Ch,00Ch,003h
  2929 0000154B 70000C03                                db	070h,000h,00Ch,003h
  2930 0000154F 70000C03                                db	070h,000h,00Ch,003h
  2931 00001553 72C07C03                                db	072h,0C0h,07Ch,003h
  2932 00001557 72000000                                db	072h,000h,000h,000h
  2933 0000155B 71C0C703                                db	071h,0C0h,0C7h,003h
  2934 0000155F 7300C003                                db	073h,000h,0C0h,003h
  2935 00001563 71700003                                db	071h,070h,000h,003h
  2936 00001567 72000003                                db	072h,000h,000h,003h
  2937 0000156B 7100C003                                db	071h,000h,0C0h,003h
  2938 0000156F 730CC003                                db	073h,00Ch,0C0h,003h
  2939 00001573 71000003                                db	071h,000h,000h,003h
  2940 00001577 310CCCA3                                db	031h,00Ch,0CCh,0A3h
  2941 0000157B FF                                      db	0FFh
  2942 0000157C 32000000                                db	032h,000h,000h,000h
  2943 00001580 F000700614                              db	0F0h,000h,070h,006h,014h
  2944 00001585 B000DD4614                              db	0B0h,000h,0DDh,046h,014h
  2945 0000158A 3000DD56                                db	030h,000h,0DDh,056h
  2946 0000158E B2000D56C4                              db	0B2h,000h,00Dh,056h,0C4h
  2947 00001593 32DD0056                                db	032h,0DDh,000h,056h
  2948 00001597 32DD0056                                db	032h,0DDh,000h,056h
  2949 0000159B 32DD0056                                db	032h,0DDh,000h,056h
  2950 0000159F 7000F056                                db	070h,000h,0F0h,056h
  2951 000015A3 7000BB56                                db	070h,000h,0BBh,056h
  2952 000015A7 32B00B46                                db	032h,0B0h,00Bh,046h
  2953 000015AB 72BB0056                                db	072h,0BBh,000h,056h
  2954 000015AF 71B0B056                                db	071h,0B0h,0B0h,056h
  2955 000015B3 71021156                                db	071h,002h,011h,056h
  2956 000015B7 71221156                                db	071h,022h,011h,056h
  2957 000015BB 31201156                                db	031h,020h,011h,056h
  2958 000015BF 730BB056                                db	073h,00Bh,0B0h,056h
  2959 000015C3 73BB0056                                db	073h,0BBh,000h,056h
  2960 000015C7 300B0B46                                db	030h,00Bh,00Bh,046h
  2961 000015CB 3000BB56                                db	030h,000h,0BBh,056h
  2962 000015CF FF                                      db	0FFh
  2963                                  
  2964                                  ; flying script	126 bytes
  2965                                  script:
  2966                                  ;     7 6 5 4 3 2 1 0
  2967                                  ;	  v v v v v c c c
  2968                                  ;
  2969                                  ;	  v = VALUE
  2970                                  ;	  c = COMMAND
  2971                                  ;
  2972                                  ;	  0 = NOP
  2973                                  ;	  1 = NEG ZSTEP
  2974                                  ;	  2 = INC SPEED
  2975                                  ;	  3 = DEC SPEED
  2976                                  ;	  4 = INC XSTEP
  2977                                  ;	  5 = DEC XSTEP
  2978                                  ;	  6 = INC YSTEP
  2979                                  ;	  7 = INC YSTEP
  2980                                  
  2981 000015D0 A1F8F898A1A6                            db      0A1h,0f8h,0f8h,098h,0a1h,0A6h
  2982 000015D6 F0A7B3371036                            db      0F0h,0A7h,0B3h,037h,010h,036h
  2983 000015DC 5084858584F0                            db      050h,084h,085h,085h,084h,0F0h
  2984 000015E2 F0B2A7A6A6A7                            db      0F0h,0B2h,0A7h,0A6h,0A6h,0A7h
  2985 000015E8 F32670278044                            db      0f3h,026h,070h,027h,080h,044h
  2986 000015EE 457776A6B061                            db      045h,077h,076h,0a6h,0b0h,061h
  2987 000015F4 6152A7773076                            db      061h,052h,0a7h,077h,030h,076h
  2988 000015FA 80A201414101                            db      080h,0a2H,001h,041h,041h,001h
  2989 00001600 F530F4B3A4F8            		db	0f5h,030h,0f4h,0b3h,0a4h,0f8h
  2990 00001606 A5D04746F0A6            		db	0a5h,0D0h,047h,046h,0F0h,0A6h
  2991 0000160C 80A770A710A6                            db      080h,0A7h,070h,0A7h,010h,0A6h
  2992 00001612 8EF0508FB2F8                            db      08eh,0f0h,050h,08fh,0b2h,0f8h
  2993 00001618 A3808EF0508F                            db      0a3h,080h,08eh,0f0h,050h,08fh
  2994 0000161E B710B6F080A6                            db      0b7h,010h,0b6h,0f0h,080h,0a6h
  2995 00001624 A7F087F07086            		db      0a7h,0f0h,087h,0F0h,070h,086h
  2996 0000162A 36F0F0903783            		db      036h,0f0h,0f0h,090h,037h,083h
  2997 00001630 2CF0F0F0302D                            db      02ch,0f0h,0f0h,0f0h,030h,02dh
  2998 00001636 8230B5B4F2A6            		db	082h,030h,0b5h,0b4h,0f2h,0a6h
  2999 0000163C 30A78383A6F0            		db	030h,0a7h,083h,083h,0a6h,0f0h
  3000 00001642 58A77776F0F0            		db	058h,0a7h,077h,076h,0f0h,0f0h
  3001 00001648 F0F0F8F800                              db	0f0h,0f0h,0f8h,0f8h,000h
  3002                                  
  3003 0000164D 0100                    zstep:		dw	1			
  3004 0000164F 66EF                    doortimer	dw 	-4250	; 0EF66h
  3005 00001651 4F4D4E495343454E54      omniscent	db	"OMNISCENT"
  3006                                  omniend:
  3007 0000165A 284329204449524B20-     sanction        db      "(C) DIRK KPPERS"
  3007 00001663 4B9A5050455253     
  3008                                  sancend:
  3009 0000166A 0000A5C3                ob:		dd 	-330.0	; vector.x
  3010 0000166E 00000000                		dd 	   0.0	; vector.y	
  3011 00001672 00008042                		dd	  64.0	; vector.z	
  3012                                  owmat:
  3013 00001676 00000000                		dd 	   0.0	; vector.x
  3014 0000167A 000080BF                		dd 	  -1.0	; vector.y
  3015 0000167E 00000000                		dd	   0.0  ; vector.z
  3016                                  ;owmat+12:
  3017 00001682 00000000                		dd 	   0.0	; vector.x
  3018 00001686 00000000                		dd 	   0.0	; vector.y
  3019 0000168A 000080BF                		dd	  -1.0  ; vector.z
  3020                                  ;owmat+24:
  3021 0000168E 0000803F                		dd 	   1.0	; vector.x
  3022 00001692 00000000                		dd 	   0.0	; vector.y
  3023 00001696 00000000                		dd	   0.0  ; vector.z
  3024                                  
  3025                                  bss_start:
  3026                                  
  3027                                  ABSOLUTE bss_start
  3028                                  
  3029                                  ; 05/02/2017 (32 bit -> 16 bit)
  3030                                  
  3031                                  ;=============================================================================
  3032                                  ;        	null-initialized data
  3033                                  ;=============================================================================
  3034                                  
  3035                                  nullstart:
  3036 0000169A <res 00000024>          wmat:           resb	matrix.size  ; 36
  3037 000016BE <res 00000024>          nwmat:		resb	matrix.size  ; 36
  3038 000016E2 <res 00000002>          zspeed:		resw	1
  3039 000016E4 <res 00000002>          oxw:		resw	1
  3040 000016E6 <res 00000002>          oyw:		resw	1
  3041 000016E8 <res 00000002>          ozw:		resw	1
  3042 000016EA <res 00000002>          scriptptr:	resw	1
  3043 000016EC <res 00000002>          scriptanz:	resw	1
  3044 000016EE <res 00000001>          scriptins:	resb	1
  3045 000016EF <res 00000001>          once:		resb	1
  3046 000016F0 <res 00000002>          ticker:		resw	1
  3047 000016F2 <res 00000002>          tracks:		resw	1
  3048 000016F4 <res 00000300>          palette:        resb 	768
  3049 000019F4 <res 00000060>          channels:       resb	16*6
  3050 00001A54 <res 00001C24>          o:		resb	object.size ; 7204
  3051                                  nullend:
  3052                                  
  3053                                  ;=============================================================================
  3054                                  ;       	uninitialized data
  3055                                  ;=============================================================================
  3056 00003678 <res 00000002>          oldstack        resw	1
  3057                                  Old08IrqPtr:
  3058 0000367A <res 00000002>          Old08Irqofs:	resw	1
  3059 0000367C <res 00000002>          Old08Irqseg:	resw	1
  3060                                  ;Old09IrqPtr:
  3061                                  ;Old09Irqofs:	resw	1
  3062                                  ;Old09Irqseg:	resw	1
  3063                                  ;songdata:	resb	3605
  3064 0000367E <res 00000002>          root:   	resw	1
  3065 00003680 <res 00000040>          circletab:	resw	32
  3066 000036C0 <res 0000005A>          stars:		resb	90
  3067 0000371A <res 00000001>          twice:		resb	1
  3068 0000371B <res 00000001>          timer_event_number:	resb 1 ; 06/02/2017
  3069 0000371C <res 00000002>          vseg:		resw	1
  3070 0000371E <res 00000002>          bseg:		resw    1
  3071 00003720 <res 00000028>          tseg:   	resw	20
  3072 00003748 <res 00008000>          shadetab:	resb	256*128
  3073 0000B748 <res 00000078>          p:		resw	4*15
  3074 0000B7C0 <res 000000B4>          pr:		resd	3*15
  3075 0000B874 <res 000000B4>          po:		resb	poly.size ; 5*36
  3076 0000B928 <res 000012C0>          rp:		resd	3*MAXPOINTS ; 3*400
  3077 0000CBE8 <res 00000640>          facei:		resd    MAXFACES ; 400
  3078                                  
  3079                                  alignb 4
  3080 0000D228 <res 00000004>          _es:		resd    1 ; 16/01/2017
  3081 0000D22C <res 00000004>          _fs:		resd	1 ; 16/01/2017
  3082                                  
  3083                                  bss_end:
