File : Gdefchr.asm SUPER-FX ASSEMBLER $Ver 1.01 Thu Aug 10 15:20:11 1995 Page 0001

     1                          ;************************************************************************
     2                          ;*									*
     3                          ;*		program start						*
     4                          ;*									*
     5                          ;************************************************************************
     6                          ;
     7                          ;
     8                          Group_A		GROUP	S_Upress
     9                          S_Upress	SECT	REL
    10                          ;
    11                          ;
    12                          ;---------------------------------------------------------------------
    13                          ;		ＣＲＡＭ上に１６色キャラクタデータを展開
    14                          ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    15                          ;		入力：
    16                          ;		R0 <= データバンク
    17                          ;		R1 <= データアドレス
    18                          ;		R3 <= 展開ライン数 ( ドット単位 1 - 128 )
    19                          ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    20                          ;		破壊：
    21                          ;		ＲＯＭバンクレジスタ
    22                          ;		プロットオプションレジスタ
    23                          ;		ＣＲＡＭ 0000h - 0081h
    24                          ;		ＣＲＡＭ スクリーンベース
    25                          ;---------------------------------------------------------------------
    26                          
    27          000080          RomBank_WK	equ	080h	;偶数番地であればどこでも
    28                          
    29                          ;Ymax_RG		rgs	3
    30                          ;Flag_RG		rgs	4
    31                          ;Temp_RG		rgs	4
    32                          ;Color_RG	rgs	5
    33                          ;Palet10_RG	rgs	6
    34                          ;Palet32_RG	rgs	7
    35                          ;Palet54_RG	rgs	8
    36                          ;Palet76_RG	rgs	9
    37                          ;BitCount_RG	rgs	10
    38                          
    39                          
    40          000000          DEF_CHR		EQU	$
    41  S000000 3F DF           		romb
    42  S000002 3E F0 0080      		sm	(RomBank_WK),r0
    43  S000006 21 1E           		move	r14,r1
    44                          
    45  S000008 A0 11           		ibt	r0,#10001b
    46  S00000A 3D 4E           		cmode
    47                          
    48  S00000C A2 00           		ibt	r2,#0
    49                          
    50                          ;		パレットの初期化
    51                          ;---------------------------------------
    52  S00000E F4 0F0F         		iwt	r4,#00F0Fh
    53                          
    54  S000011 EF              		getb
    55  S000012 50              		add	r0
    56  S000013 50              		add	r0
    57  S000014 50              		add	r0
    58  S000015 16              		to	r6
    59  S000016 50              		add	r0
    60                          
    61  S000017 94              		link	#4
    62  S000018 FF 01B3'        		iwt	r15,#GET_DATA
    63  S00001B EF              		getb
    64  S00001C 04              		rol
    65                          
    66  S00001D C6              		or	r6
    67                          
    68  S00001E 16              		to	r6
    69  S00001F 74              		and	r4
    70                          
    71                          ;- - - - - - - - - - - - - - - - - - - -
    72  S000020 EF              		getb
    73  S000021 50              		add	r0
    74  S000022 50              		add	r0
    75  S000023 50              		add	r0
    76  S000024 17              		to	r7
    77  S000025 50              		add	r0
    78                          
    79  S000026 94              		link	#4
    80  S000027 FF 01B3'        		iwt	r15,#GET_DATA
    81  S00002A EF              		getb
    82  S00002B 04              		rol
    83                          
    84  S00002C C7              		or	r7
    85                          
    86  S00002D 17              		to	r7
    87  S00002E 74              		and	r4
    88                          
    89                          ;- - - - - - - - - - - - - - - - - - - -
    90  S00002F EF              		getb
    91  S000030 50              		add	r0
    92  S000031 50              		add	r0
    93  S000032 50              		add	r0
    94  S000033 18              		to	r8
    95  S000034 50              		add	r0
    96                          
    97  S000035 94              		link	#4
    98  S000036 FF 01B3'        		iwt	r15,#GET_DATA
    99  S000039 EF              		getb
   100  S00003A 04              		rol
   101                          
   102  S00003B C8              		or	r8
   103                          
   104  S00003C 18              		to	r8
   105  S00003D 74              		and	r4
   106                          
   107                          ;- - - - - - - - - - - - - - - - - - - -
   108  S00003E EF              		getb
   109                          
   110  S00003F 19              		to	r9
   111  S000040 74              		and	r4
   112                          
   113                          ;		プロットバッファの初期化
   114                          ;---------------------------------------
   115  S000041 60              		sub	r0
   116  S000042 A1 00           		ibt	r1,#0
   117  S000044 AC 40           		ibt	r12,#64
   118                          
   119  S000046 02              		cache
   120                          
   121  S000047 2F 1D           		move	r13,r15
   122                          
   123  S000049 31              		stw	(r1)
   124  S00004A D1              		inc	r1
   125  S00004B 3C              		loop
   126  S00004C D1              		inc	r1
   127                          
   128  S00004D E1              		dec	r1	; <= 127
   129                          
   130                          ;		ビットデータの初期化
   131                          ;---------------------------------------
   132  S00004E 94              		link	#4
   133  S00004F FF 01B3'        		iwt	r15,#GET_DATA
   134  S000052 EF              		getb
   135                          
   136  S000053 AA 05           		ibt	r10,#5
   137                          
   138  S000055 03              		lsr
   139  S000056 03              		lsr
   140  S000057 FF 0116'        		iwt	r15,#START_LINE
   141  S00005A 03              		lsr
   142                          
   143                          ;		区間処理フラグ読み込み
   144                          ;- - - - - - - - - - - - - - - - - - - - - - - - - - - -
   145                          FLAG_X1
   146  S00005B 08 06'          		bne	Read$
   147  S00005D 03              		lsr
   148                          
   149  S00005E 94              		link	#4
   150  S00005F FF 01B3'        		iwt	r15,#GET_DATA
   151  S000062 EF              		getb
   152                          Read$
   153  S000063 20 14           		move	r4,r0			;ビットデータ退避
   154                          
   155  S000065 15              		to	r5
   156  S000066 3D 41           		ldb	(r1)
   157                          
   158  S000068 0D 1B'          		bcs	FLAG_11
   159  S00006A E1              		dec	r1
   160                          
   161                          ;		X ドット区間を伸ばす
   162                          ;-------------------------------------------------------
   163                          FLAG_01
   164  S00006B 3D 41           		ldb	(r1)
   165  S00006D 3F 65           		cmp	r5
   166  S00006F 09 FA'          		beq	FLAG_01
   167  S000071 E1              		dec	r1
   168  S000072 D1              		inc	r1
   169                          
   170  S000073 2F 1D           		move	r13,r15
   171                          
   172  S000075 B5              		from	r5
   173  S000076 3D 31           		stb	(r1)
   174  S000078 3C              		loop
   175  S000079 E1              		dec	r1
   176                          
   177  S00007A 0A 16'          		bpl	SET_GOMA
   178  S00007C 3D              		alt1
   vvv******* warn :illegal ALT code.
   179  S00007D 01              		nop
   180                          
   181  S00007E 05 6C'          		bra	PLOT_BUFF2
   182  S000080 D1              		inc	r1	;<= 0
   183                          
   184                          ;		X ドット区間を縮ます
   185                          ;-------------------------------------------------------
   186                          Zero11
   187  S000081 71              		and	r1
   188  S000082 05 0B'          		bra	Loop11
   189  S000084 60              		sub	r0
   190                          FLAG_11
   191  S000085 0B FA'          		bmi	Zero11
   192  S000087 3D 41           		ldb	(r1)
   193  S000089 3F 65           		cmp	r5
   194  S00008B 09 F8'          		beq	FLAG_11
   195  S00008D E1              		dec	r1
   196  S00008E D1              		inc	r1
   197                          Loop11
   198  S00008F 21              		with	r1
   199  S000090 5C              		add	r12
   200                          
   201                          ;		ゴマを置く
   202                          ;- - - - - - - - - - - - - - - - - - - - - - - - - - - -
   203  S000091 3D              		alt1
   204                          SET_GOMA
   205  S000092 31              		stw	(r1)
   206  S000093 24 10           		move	r0,r4
   207                          
   208  S000095 AC              		db	0ACh		;ibt	LoopCount_RG,#0
   209                          
   210                          ;		カウント読み込み
   211                          ;-------------------------------------------------------
   212                          READ_COUNT
   213  S000096 00              		db	0
   214  S000097 A4 01           		ibt	r4,#1
   215  S000099 05 11'          		bra	ReadF$
   216  S00009B EA              		dec	r10
   217                          
   218                          ;		有効ビット読み込み
   219                          ;- - - - - - - - - - - - - - - - - - - -
   220                          ReadX$
   221  S00009C EA              		dec	r10
   222  S00009D 08 06'          		bne	Readn$
   223  S00009F 03              		lsr
   224                          
   225  S0000A0 94              		link	#4
   226  S0000A1 FF 01B3'        		iwt	r15,#GET_DATA
   227  S0000A4 EF              		getb
   228                          Readn$
   229  S0000A5 0C 02'          		bcc	NextBit$
   230                          
   231  S0000A7 2C              		with	r12
   232  S0000A8 C4              		or	r4
   233                          
   234                          ;		次のビット
   235                          ;- - - - - - - - - - - - - - - - - - - -
   236                          NextBit$
   237  S0000A9 24              		with	r4
   238  S0000AA 54              		add	r4
   239                          
   240                          ;		次のビットが有効か判断
   241                          ;- - - - - - - - - - - - - - - - - - - -
   242  S0000AB EA              		dec	r10
   243                          ReadF$
   244  S0000AC 08 06'          		bne	Read$
   245  S0000AE 03              		lsr
   246                          
   247  S0000AF 94              		link	#4
   248  S0000B0 FF 01B3'        		iwt	r15,#GET_DATA
   249  S0000B3 EF              		getb
   250                          Read$
   251  S0000B4 0D E6'          		bcs	ReadX$
   252                          
   253                          ;		カウント決定
   254                          ;- - - - - - - - - - - - - - - - - - - -
   255                          SetCount$
   256  S0000B6 2C              		with	r12
   257  S0000B7 C4              		or	r4
   258                          
   259                          ;		区間処理フラグ読み込み
   260                          ;-------------------------------------------------------
   261                          READ_FLAG
   262  S0000B8 29 B9           		moves	r9,r9
   263  S0000BA 0A 6C'          		bpl	SHINKUKAN
   264                          
   265  S0000BC EA              		dec	r10
   266  S0000BD 08 06'          		bne	Read$
   267  S0000BF 03              		lsr
   268                          
   269  S0000C0 94              		link	#4
   270  S0000C1 FF 01B3'        		iwt	r15,#GET_DATA
   271  S0000C4 EF              		getb
   272                          Read$
   273  S0000C5 0D 94'          		bcs	FLAG_X1
   274  S0000C7 EA              		dec	r10
   275                          FLAG_X0
   276  S0000C8 08 06'          		bne	Read$
   277  S0000CA 03              		lsr
   278                          
   279  S0000CB 94              		link	#4
   280  S0000CC FF 01B3'        		iwt	r15,#GET_DATA
   281  S0000CF EF              		getb
   282                          Read$
   283  S0000D0 0D 55'          		bcs	FLAG_10
   284                          
   285                          ;		X 個の区間をそのままにする
   286                          ;-------------------------------------------------------
   287                          FLAG_00
   288  S0000D2 20 14           		move	r4,r0
   289                          
   290  S0000D4 2F 1D           		move	r13,r15
   291                          
   292  S0000D6 15              		to	r5
   293  S0000D7 3D 41           		ldb	(r1)
   294  S0000D9 E1              		dec	r1
   295                          Loop$
   296  S0000DA 0B 0F'          		bmi	PLOT_BUFF1
   297  S0000DC 3D 41           		ldb	(r1)
   298  S0000DE 3F 65           		cmp	r5
   299  S0000E0 09 F8'          		beq	Loop$
   300  S0000E2 E1              		dec	r1
   301                          
   302  S0000E3 3C              		loop
   303  S0000E4 D1              		inc	r1
   304                          
   305  S0000E5 24 10           		move	r0,r4
   306                          
   307  S0000E7 05 AD'          		bra	READ_COUNT
   308  S0000E9 AC              		db	0ACh		;ibt	LoopCount_RG,#0
   309                          
   310                          ;		ＲＡＭのデータをプロット
   311                          ;---------------------------------------------------------------------
   312                          PLOT_BUFF0
   313  S0000EA 14              		to	r4		;move
   314                          PLOT_BUFF1
   315  S0000EB D1              		inc	r1	;<= 0
   316                          PLOT_BUFF2
   317  S0000EC FC 0080         		iwt	r12,#128
   318  S0000EF 2F 1D           		move	r13,r15
   319                          
   320  S0000F1 3D 41           		ldb	(r1)
   321  S0000F3 4E              		color
   322  S0000F4 3C              		loop
   323  S0000F5 4C              		plot
   324                          
   325  S0000F6 D2              		inc	r2
   326  S0000F7 B2              		from	r2
   327  S0000F8 3F 63           		cmp	r3
   328  S0000FA 0C 18'          		bcc	NEXT_LINE
   329  S0000FC E1              		dec	r1	; <= 127
   330                          
   331  S0000FD 3D 4C           		rpix
   332  S0000FF 00              		stop
   333  S000100 01              		nop
   334                          
   335                          ;		パレット１３５の色
   336                          ;---------------------------------------
   337                          PALET_High
   338  S000101 15              		to	r5
   339  S000102 4D              		swap
   340  S000103 25              		with	r5
   341  S000104 3E 7F           		and	#15
   342                          
   343                          ;		色をセット
   344                          ;---------------------------------------
   345                          SET_COLOR
   346  S000106 2F              		with	r15
   347                          SET_COLOR1
   348  S000107 1D              		to	r13
   349                          
   350  S000108 B5              		from	r5
   351  S000109 3D 31           		stb	(r1)
   352  S00010B 3C              		loop
   353  S00010C E1              		dec	r1
   354                          
   355  S00010D 0A 87'          		bpl	READ_COUNT
   356  S00010F AC 00           		ibt	r12,#0
   357                          
   358  S000111 05 D7'          		bra	PLOT_BUFF0
   359  S000113 20              		with	r0		;move
   360                          
   361                          ;		ライン描画開始
   362                          ;---------------------------------------------------------------------
   363                          NEXT_LINE
   364  S000114 24 10           		move	r0,r4		;ビットデータ復帰
   365                          START_LINE
   366  S000116 29              		with	r9
   367  S000117 04              		rol
   368                          
   369  S000118 EA              		dec	r10
   370  S000119 08 06'          		bne	Read$
   371  S00011B 03              		lsr
   372                          
   373  S00011C 94              		link	#4
   374  S00011D FF 01B3'        		iwt	r15,#GET_DATA
   375  S000120 EF              		getb
   376                          Read$
   377  S000121 29              		with	r9
   378  S000122 97              		ror
   379                          
   380  S000123 FF 0096'        		iwt	r15,#READ_COUNT
   381  S000126 AC              		db	0ACh		;ibt	LoopCount_RG,#0
   382                          
   383                          ;		新区間作成
   384                          ;-------------------------------------------------------
   385                          FLAG_10
   386  S000127 EA              		dec	r10
   387                          SHINKUKAN
   388  S000128 08 06'          		bne	Read$
   389  S00012A 03              		lsr
   390                          
   391  S00012B 94              		link	#4
   392  S00012C FF 01B3'        		iwt	r15,#GET_DATA
   393  S00012F EF              		getb
   394                          Read$
   395  S000130 0D 1A'          		bcs	PALET_1XX
   396  S000132 EA              		dec	r10
   397                          PALET_0XX
   398  S000133 08 05'          		bne	Read$
   399  S000135 03              		lsr
   400                          
   401  S000136 93              		link	#3
   402  S000137 05 7A'          		bra	GET_DATA
   403  S000139 EF              		getb
   404                          Read$
   405  S00013A 0D 29'          		bcs	PALET_01X
   406  S00013C EA              		dec	r10
   407                          PALET_00X
   408  S00013D 08 05'          		bne	Read$
   409  S00013F 03              		lsr
   410                          
   411  S000140 93              		link	#3
   412  S000141 05 70'          		bra	GET_DATA
   413  S000143 EF              		getb
   414                          Read$
   415  S000144 0D BB'          		bcs	PALET_High
   416  S000146 B6              		from	r6
   417                          
   418                          ;		パレット０の色
   419                          ;---------------------------------------
   420                          PALET_000
   421  S000147 15              		to	r5
   422  S000148 3E              		alt2
   vvv******* warn BB'legal ALT code.
   423  S000149 05 00           		bra	SET_COLOR
   424  S00014B 7F              		and	r15
   425                          
   426                          ;		パレット読み込み
   427                          ;- - - - - - - - - - - - - - - - - - - -
   428                          PALET_1XX
   429  S00014C 08 05'          		bne	Read$
   430  S00014E 03              		lsr
   431                          
   432  S00014F 93              		link	#3
   433  S000150 05 61'          		bra	GET_DATA
   434  S000152 EF              		getb
   435                          Read$
   436  S000153 0D 1F'          		bcs	PALET_11X
   437  S000155 EA              		dec	r10
   438                          PALET_10X
   439  S000156 08 05'          		bne	Read$
   440  S000158 03              		lsr
   441                          
   442  S000159 93              		link	#3
   443  S00015A 05 57'          		bra	GET_DATA
   444  S00015C EF              		getb
   445                          Read$
   446  S00015D 0D A2'          		bcs	PALET_High
   447  S00015F B8              		from	r8
   448                          
   449                          ;		パレット４の色
   450                          ;---------------------------------------
   451                          PALET_100
   452  S000160 15              		to	r5
   453  S000161 3E              		alt2
   vvv******* warn A2'legal ALT code.
   454  S000162 05 00           		bra	SET_COLOR
   455  S000164 7F              		and	r15
   456                          
   457                          ;		パレット読み込み
   458                          ;- - - - - - - - - - - - - - - - - - - -
   459                          PALET_01X
   460  S000165 08 05'          		bne	Read$
   461  S000167 03              		lsr
   462                          
   463  S000168 93              		link	#3
   464  S000169 05 48'          		bra	GET_DATA
   465  S00016B EF              		getb
   466                          Read$
   467  S00016C 0D 93'          		bcs	PALET_High
   468  S00016E B7              		from	r7
   469                          
   470                          ;		パレット２の色
   471                          ;---------------------------------------
   472                          PALET_010
   473  S00016F 15              		to	r5
   474  S000170 3E              		alt2
   vvv******* warn 93'legal ALT code.
   475  S000171 05 00           		bra	SET_COLOR
   476  S000173 7F              		and	r15
   477                          
   478                          ;		パレット読み込み
   479                          ;- - - - - - - - - - - - - - - - - - - -
   480                          PALET_11X
   481  S000174 08 05'          		bne	Read$
   482  S000176 03              		lsr
   483                          
   484  S000177 93              		link	#3
   485  S000178 05 39'          		bra	GET_DATA
   486  S00017A EF              		getb
   487                          Read$
   488  S00017B 0D 08'          		bcs	PALET_111
   489  S00017D B9              		from	r9
   490                          
   491                          ;		パレット６の色
   492                          ;---------------------------------------
   493                          PALET_110
   494  S00017E 15              		to	r5
   495  S00017F 3E 7F           		and	#15
   496  S000181 FF 0107'        		iwt	r15,#SET_COLOR1
   497  S000184 2F              		with	r15
   498                          
   499                          ;		新しい色
   500                          ;---------------------------------------
   501                          PALET_111
   502  S000185 A5 00           		ibt	r5,#0
   503                          
   504  S000187 EA              		dec	r10
   505  S000188 08 05'          		bne	c8$
   506  S00018A 03              		lsr
   507                          
   508  S00018B 93              		link	#3
   509  S00018C 05 25'          		bra	GET_DATA
   510  S00018E EF              		getb
   511                          c8$
   512  S00018F 25              		with	r5
   513  S000190 04              		rol
   514                          
   515  S000191 EA              		dec	r10
   516  S000192 08 05'          		bne	c4$
   517  S000194 03              		lsr
   518                          
   519  S000195 93              		link	#3
   520  S000196 05 1B'          		bra	GET_DATA
   521  S000198 EF              		getb
   522                          c4$
   523  S000199 25              		with	r5
   524  S00019A 04              		rol
   525                          
   526  S00019B EA              		dec	r10
   527  S00019C 08 05'          		bne	c2$
   528  S00019E 03              		lsr
   529                          
   530  S00019F 93              		link	#3
   531  S0001A0 05 11'          		bra	GET_DATA
   532  S0001A2 EF              		getb
   533                          c2$
   534  S0001A3 25              		with	r5
   535  S0001A4 04              		rol
   536                          
   537  S0001A5 EA              		dec	r10
   538  S0001A6 08 05'          		bne	c1$
   539  S0001A8 03              		lsr
   540                          
   541  S0001A9 93              		link	#3
   542  S0001AA 05 07'          		bra	GET_DATA
   543  S0001AC EF              		getb
   544                          c1$
   545  S0001AD 25              		with	r5
   546  S0001AE 04              		rol
   547  S0001AF FF 0107'        		iwt	r15,#SET_COLOR1
   548  S0001B2 2F              		with	r15
   549                          
   550                          
   551                          ;		ＲＯＭからデータを読む
   552                          ;-------------------------------------------------------
   553                          GET_DATA
   554  S0001B3 DE              		inc	r14
   555  S0001B4 08 0F'          		bne	OK$
   556  S0001B6 AA 08           		ibt	r10,#8
   557                          
   558  S0001B8 3D FA 0080      		lm	r10,(RomBank_WK)
   559  S0001BC DA              		inc	r10
   560  S0001BD BA              		from	r10
   561  S0001BE 90              		sbk
   562                          
   563  S0001BF BA              		from	r10
   564  S0001C0 3F DF           		romb
   565  S0001C2 AE 00           		ibt	r14,#0
   566  S0001C4 AA              		db	0AAh		;ibt	BitCount_RG,#8
   567                          OK$
   568  S0001C5 08              		db	8
   569                          
   570  S0001C6 2B 1F           		move	r15,r11
   571  S0001C8 03              		lsr
   572                          
   573                          
   574                          ;=======================================================================
   575                          
