HDU ASM
;** Testumgebung **
DEFW 7F7FH
DEFM 'TESTDH'
DEFB 1
;DEZIMAL-UNIT FUER S-CAOS
LD C,E
DEC A
JP NZ,HEXDEZ
LD C,L ;Steuerbits
CALL 0F003H
DEFB 17H
RET C
LD HL,(0)
LD (0B796H),HL
LD A,(2)
LD (0B798H),A
CALL DEZHEX
JR NC,HLOUT
LD A,7
CALL 0F003H
DEFB 24H
HLOUT
CALL 0F003H
DEFB 1AH
LD A,B
CALL 0F003H
DEFB 1CH
RET
;** eigentliche Unit **
DEZHEX
;C: Steuerbyte
;Bit 7: Integer oder Word
;Bit 3: Quelle BCD oder ASCII
;PA: HL VR: alle
;CY: Zahl }bersteigt Werteber.
;B>0 oder (DE)>20h: Falsche Z.
LD A,C
OR 60H
LD C,A
LD HL,0 ;Akku
LD B,6
DEC DE
CALL DHMAIN
RET C ;Zahl zu gro~
BIT 7,C
RET Z ;Word
LD A,H ;Integer
ADD A ;Bit 7
BIT 6,C ;Plus?
RET NZ ;ohne oder mit CY!
XOR A
SUB L
LD L,A
LD A,0
SBC H
LD H,A
CP 80H
RET ;ohne oder mit CY
DHMAIN
INC DE
BIT 3,C
JR NZ,NIBBLES
INC B ;Repeat until false;
LD A,(DE)
OR A
RET Z ;Sofort Ende
CP 21H
CCF
JR NC,NXZ
CP '-'
JR Z,UDHM
SUB 30H
CCF
RET NC ;keine Ziffer
CP 0AH
RET NC ;--"--
JR UDH1
NIBBLES
XOR A
CALL UPDH1
CP 0AH
JR C,UDH1
JR NZ,NXZ
UDHM ;Minus auswerten
LD A,C
CPL
AND 0E0H ;Word erwartet
RET NZ ;oder Zahl war
RES 6,C ;oder 2.Minus
NXZ
BIT 5,C
RET Z ;1.Nicht-Ziffer
NXZ1
DJNZ DHMAIN
RET ;(immer NC)
UDH1
RES 5,C ;Eine Ziffer kam
ADD HL,HL ;*2
RET C
PUSH DE
ADD L
LD E,A
LD A,H
ADC 0
LD D,A
ADD HL,HL ;*4
JR C,UDHX
ADD HL,HL ;*8
JR C,UDHX
ADD HL,DE ;*10+A
UDHX
POP DE
RET C
JR NXZ1
HEXDEZ
;C-Register
;Bit 0,1,2: L{nge 1..6
;Bit 3: Anzeige oder Schieben
;Bit 4,5: Anz.Stellen mit 0 -1
;Bit 6: Vorzeichen linksb}ndig
;Bit 7: Integer oder Word
PUSH HL
PUSH DE
PUSH BC
XOR A
BIT 7,C
JR Z,WORD
BIT 7,H
JR Z,PLUS
EX DE,HL
LD HL,0
SBC HL,DE
DEFB 11H ;LD DE,
PLUS
RES 7,C
WORD ;Vorzeichen gewandelt
LD A,C
AND 0F8H
LD B,A
LD A,C
CPL
DEC A
AND 7
OR B
LD C,A
RRCA
RRCA
RRCA
RRCA
CPL
AND 3
INC A
LD B,A
LD A,C
AND 0C0H ;VZ
CP 80H ;anh{ngig?
CALL NZ,UPHD6
LD DE,-10000
CALL UPHD
LD DE,-1000
CALL UPHD
LD DE,-100
CALL UPHD
LD DE,-10
CALL UPHD
LD DE,-1
CALL UPHD
POP BC
POP DE
POP HL
RET
UPHD
XOR A
UPHD1 ADD HL,DE
INC A
JR C,UPHD1
SBC HL,DE
DEC A
JR NZ,UPHD2;1.Zahl ausg.
;
LD A,B
OR A
JR Z,UPHD2 ;Null ausg.
DEC B
UPHD6
LD A,C
AND 7
JR Z,UPHD3 ;Nicht-1.Zahl
DEC C
LD A,0FH
JR UPHD4
UPHD3
LD A,C
CPL
AND 0C0H ;Vorz. vorn?
LD A,0BH ;Space
JR NZ,UPHD4
DEC A
JR UPHD8 ;Minus
UPHD2
BIT 7,C ;Vorzeichen
LD B,0 ;Rest ausgeben
PUSH AF
LD A,0AH
CALL NZ,UPHD4
POP AF
UPHD8
RES 7,C ;Vorz. l|schen
UPHD4
BIT 3,C
JR Z,UPHD5
UPDH1
EX DE,HL
LD HL,0B796H
RLD
INC L
RLD
INC L
RLD
EX DE,HL
RET
UPHD5
ADD 30H
CP 3AH
JR C,UPHD7
JR Z,UPMIN
CP 3FH
RET Z
LD A,20H
DEFB 11H ;LD DE,
UPMIN LD A,'-'
UPHD7 CALL 0F003H
DEFB 24H
RET
À@Àt(Àp6ÀnTop of Text: End of Text: Start of MC: ASM-Offset : õÛˆö$ÓˆUPMIN LD A,'-'
UPHD7 CALL 0F003H
DEFB 24H
RET
À@Àt(Àp6ÀnTop of Text: End of Text: Start of MC: ASM-Offset : õÛˆö$Óˆ
Detected encoding: ANSI (CP1252) | 4
|
|