ZXNet эхоконференция «code.zx»


тема: compo



от: Vitaly Vidmirov
кому: Arseniy Astapenko
дата: 20 May 1999


Здрасте, здрасте Arseniy!

AA> Предлагается кодерам пошевилить извилинами.
AA> Current Compo:
AA> A bit weird 16x16bit Multiple
AA> Input: Any two 16 bit numbers.
AA> Routine: Only LD, BIT, AND, OR commands can be used to calculate result.
+ JP ;)

AA> Output: 32 bit value.
AA> Remember all rules above is to restrict you - if something
AA> is not mentioned here you can do it e.g. use any input/output
AA> registers if here is no restriction which should be used.

Сегодня (т.е. уже вчера) я наконец то добрался до спектрума и
накатал это несчастное умножение, на что мне потребовалось
около 2-х часов включая всяческие отстраненные занятия (это я
по поводу сложности задачи).


=====8<=====================================
;MUL 16*16->32 (C)1999 Dark/X-Trade
;ONLY LD/AND/OR/JP CMDS IS USED!!!

TAB EQU #8000; aligned on 256b boundary (129 bytes long)

;HL*DE->HLDE

ORG #6000
DI
LD HL,#FFFF
LD DE,#FFFF
CALL MULT
LD IY,#5C3A
EI

RET
DW 0


;- Entry point -------------------------
MULT LD A,E:LD (RS2+1),A
LD A,D:LD (RS3+1),A
LD A,L:LD (MT0+1),A
LD A,H:LD (MT1+1),A
LD A,1
LD (CNT0+1),A
LD A,0
LD (CNT1+1),A
LD (RS0+1),A
LD (RS1+1),A

LD HL,TAB+#80; set up table
LD A,#01:LD (HL),A
LD L,#00:LD (HL),A:LD L,A
LD A,#02:LD (HL),A:LD L,A
LD A,#04:LD (HL),A:LD L,A
LD A,#08:LD (HL),A:LD L,A
LD A,#10:LD (HL),A:LD L,A
LD A,#20:LD (HL),A:LD L,A
LD A,#40:LD (HL),A:LD L,A
LD A,#80:LD (HL),A

MUL1 LD C,0;RESULT*=2
RS0 LD E,0
LD IY,MUL2:JP SLA88
MUL2 LD (RS0+1),A
RS1 LD E,0
LD IY,MUL3:JP SLA88
MUL3 LD (RS1+1),A
RS2 LD E,0
LD IY,MUL4:JP SLA88
MUL4 LD (RS2+1),A
RS3 LD E,0
LD IY,MUL5:JP SLA88
MUL5 LD (RS3+1),A
LD A,C
OR A
JP Z,NOADD

LD C,0
LD A,(RS0+1):LD E,A
MT0 LD D,0
LD IY,MUL6:JP ADC88
MUL6 LD (RS0+1),A
LD A,(RS1+1):LD E,A
MT1 LD D,0
LD IY,MUL7:JP ADC88
MUL7 LD (RS1+1),A
LD A,(RS2+1):LD E,A
LD D,0
LD IY,MUL8:JP ADC88
MUL8 LD (RS2+1),A
LD A,(RS3+1):LD E,A
LD IY,MUL9:JP ADC88
MUL9 LD (RS3+1),A

NOADD LD C,0; CNT<<1
CNT0 LD E,0:LD D,E
LD IY,MUL10:JP SLA88
MUL10 LD (CNT0+1),A
CNT1 LD E,0:LD D,E
LD IY,MUL11:JP SLA88
MUL11 LD (CNT1+1),A
LD A,C
OR A
JP Z,MUL1

LD A,(RS0+1):LD E,A
LD A,(RS1+1):LD D,A
LD A,(RS2+1):LD L,A
LD A,(RS3+1):LD H,A
;- End of prog -------------------------

RET

;- Subroutines -------------------------
SLA88 LD D,E
;E+D-}A, C-CARRY(I/O)
ADC88 LD B,0
LD L,B
AD0 LD A,E
AND D
AND (HL)
JP Z,AD3
AD1 LD A,C; 1X
LD L,(HL)
LD C,(HL)
AD2 OR B
LD B,A
JP AD7
AD3 LD A,E
OR D
AND (HL)
JP NZ,AD5
AD4 LD A,C; 0X
LD L,(HL)
LD C,0
JP AD2
AD5 LD A,C
OR A
JP NZ,AD6
LD A,E; 0X
OR D
AND (HL)
OR B
LD B,A
JP AD4
AD6 LD L,(HL)
LD C,(HL)
AD7 LD A,L
OR A
JP P,AD0
LD A,B
JP (IY)

======8<===============================

AA> Deadline: 20599 === Cut ===

это я уже типа опоздал? ;)

AA> + Origin: этот мир уже ничто не спасет... (500:17/1)

во-во.

Dark-] //______
[-from //|rade [ TEAM CodeWarrior ]




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
От редакции - Вынужденный "отпуск" газеты.
Юмор - Анекдоты.
Guide - Формат модуля Chip Tracker 1.x

В этот день...   24 октября