
; INCLUDEFILE LARAINC1
; 25.11.88 : RET DARF AUCH NACH 10H FUEHREN
; 24.03.89 : FEHLERMELDUNGEN

UNTRAC:
LD	A,-1
JR	TR0

TRACE:
XOR	A
TR0:LD	(DSPFLG),A	; AUSGABEFLAG

CALL	GET16	; ANZAHL DER TRACES
JR	NZ,$+5
LD	HL,1	; DEFAULT 1
LD	A,H
OR	L
TR1:
PUSH	AF
PUSH	HL
CALL	TRACE1
CALL	TSTESC	; ABBRUCH?
JP	C,EDVECT
POP	HL
POP	AF
JR	Z,TR1	; WENN T(U)0
DEC	HL
LD	A,H
OR	L
JR	NZ,TR1
JP	EDVECT

; BITS VON (IX+5):
; 0 IFF
; 1 JP,CALL
;
; 3 RET
; 4 JP (HL)
; 5 cc
; 6 RST

DSPFLG:DEFS	1

TRACE1:
CALL	GTMNEM	; BEFEHL BERECHNEN
CALL	SETBRK
CALL	EXECON
LD	A,(DSPFLG)
OR	A
RET	NZ	; UNTRACE
CALL	ZR1
RET

SETBRK:
BIT	1,(IX+5)
JR	NZ,XJPCLL
BIT	3,(IX+5)
JR	NZ,XRET
BIT	4,(IX+5)
JR	NZ,XPCHL
LD	DE,(NXTPC)	; BRK
OTHBRK:LD	HL,(LAGPC)	; START
SET	0,(IX)
RES	1,(IX)
BIT	5,(IX+5)	; cc
RET	Z
SET	1,(IX)
LD	BC,(NXTPC)
RET

XPCHL:
LD	HL,(LAGPC)
LD	A,(HL)
LD	HL,(LAGIX)
CP	#DD	; JP (IX)
JR	Z,XCON
LD	HL,(LAGIY)
CP	#FD	; JP (IY)
JR	Z,XCON
LD	HL,(LAGHL)	; JP (HL)
JR	XCON

XJPCLL:; JP, CALL
LD	HL,(JPDEST)
JR	XCON
XRET:; RET
LD	HL,(LAGSP)
LD	A,(HL)
INC	HL
LD	H,(HL)
LD	L,A
XCON:EX	DE,HL
JR	OTHBRK

NXTPC:DEFW	3

EXECUT:; ROUTINE AUSFUEHREN
SET	0,(IX)	; DEFAULT ARGUMENTE DA
SET	1,(IX)
CALL	GET16	; ADRESSE HOLEN
JR	Z,$+5
LD	(LAGPC),HL	; G BEEINFLUSST PC
LD	HL,(LAGPC)	; DEFAULT (PC)
PUSH	HL	; EXECUTION
CALL	GET16	; BREAKPOINT
JR	NZ,$+6
RES	0,(IX)	; 1. FEHLT
PUSH	HL
CALL	GET16
POP	DE	; DE=1.A 
JR	NZ,$+6
RES	1,(IX)	; 2. FEHLT
LD	B,H	; BC=2.A
LD	C,L
POP	HL	; HL=EXE
CALL	EXECON	; AUFRUFEN
CALL	ZR1	; REGISTER AUSGEBEN
JP	EDVECT

BRKST1:DEFS	1
BRKST2:DEFS	1
BRK1:DEFS	2
BRK2:DEFS	2

STBRK:; BREAKPOINT EINSETZEN
LD	A,L
SUB	H
CP	#10	; GLEICH WENN HL=10
RET	Z	; DA SONST BEI #10 RST #10
LD	A,#D7	; RST #10
JP	SCHREI	; LD (HL),A
EXECON:; HL=EX DE=1.B BC=2.B
LD	(BRK2),BC
PUSH	HL
BIT	0,(IX)
JR	Z,NO1B
EX	DE,HL
CALL	LESE	; LD A,(HL)
LD	(BRKST1),A
CALL	STBRK
LD	(BRK1),HL
NO1B:
BIT	1,(IX)
JR	Z,NO2B
LD	HL,(BRK2)
CALL	LESE	; LD A,(HL)
LD	(BRKST2),A
CALL	STBRK
LD	(BRK2),HL
NO2B:
LD	HL,(LAGSP)
POP	DE	; AUFRUFADRESSE
DEC	HL
LD	(HL),D
DEC	HL
LD	(HL),E
LD	(SPSTON),HL
PUSH	IX
PUSH	IY
PUSH	DE
PUSH	BC
PUSH	HL
PUSH	AF
LD	A,I
LD	H,A
LD	A,R
LD	L,A
PUSH	HL
CALL	BEFOR	; RST #10 PATCHEN
LD	IX,(LAGIX)
LD	IY,(LAGIY)
LD	BC,(LAGBC)
LD	HL,(LAGIR)
LD	A,H
LD	I,A
LD	A,L
LD	R,A
LD	HL,(#11)
LD	DE,GO-DISON
ADD	HL,DE
LD	(ADSTOR),HL	; EINSPRUNG
LD	HL,(LAGAF)
PUSH	HL
POP	AF
LD	HL,(LAGHL)
LD	DE,(LAGDE)

CALL	ROMAUF	; FAR CALL

LD	(LAGHL),HL
PUSH	AF
POP	HL
LD	(LAGAF),HL
LD	A,I
LD	H,A
LD	A,R
LD	L,A
LD	(LAGIR),HL
LD	(LAGIX),IX
LD	(LAGIY),IY
LD	(LAGDE),DE
LD	(LAGBC),BC
LD	HL,(SPSTON)	; SP NACH AUSFUEHRUNG
LD	E,(HL)
INC	HL
LD	D,(HL)	; ADRESSE NACH RST#10 POPPEN
INC	HL
DEC	DE
LD	(LAGPC),DE
LD	(LAGSP),HL
LD	DE,(DEFSP)	; TOPLEVEL STACK
OR	A
EX	DE,HL
SBC	HL,DE
JR	NC,NOTOMU	; NOCH NICHT ZUVIELE RETs
LD	HL,(DEFSP)
LD	(LAGSP),HL	; SP UND PC
LD	HL,#F	; INITIALISIEREN
LD	(LAGPC),HL
NOTOMU:
CALL	AFTER	; RST #10
POP	HL
LD	A,H
LD	I,A
LD	A,L
LD	R,A
POP	AF
POP	HL
POP	BC
POP	DE
POP	IY
POP	IX
BIT	0,(IX)
JR	Z,NF1
LD	A,(BRKST1)
LD	HL,(BRK1)
CALL	SCHREI
NF1:BIT	1,(IX)
RET	Z
LD	A,(BRKST2)
LD	HL,(BRK2)
CALL	SCHREI
RET

BEFOR:LD	HL,(#11)
PUSH	HL
LD	DE,BUFFER
LD	BC,DISONE-DISON
LDIR	; RST #10 SAVEN
POP	DE
LD	HL,DISON
BEFCON:LD	BC,DISONE-DISON
LDIR
RET
AFTER:
LD	HL,BUFFER
LD	DE,(#11)
JR	BEFCON

BRKSTO:DEFS	3
GETROM:; ROMKONFIGURATION HOLEN
LD	A,(ROMNUM)
CALL	BYTOUT
CALL	BLNOUT
CALL	GET16	; NEUES BYTE HOLEN
JP	Z,EDVECT	; KEIN NEUES
LD	A,H
OR	A
PUSH	HL
LD	HL,EBYTRQ	; NUR 8 BIT
JP	NZ,WRONG
POP	HL
LD	A,L
LD	(ROMNUM),A
CALL	BYTOUT
JP	EDVECT

REGSTR:DEFM	"AF="
DEFB	0
DEFM	" HL="
DEFB	0
DEFM	" DE="
DEFB	0
DEFM	" BC="
DEFB	0
DEFM	" IX="
DEFB	0
DEFM	" IY="
DEFB	0
DEFM	" IR="
DEFB	0
DEFM	" SP="
DEFB	0
DEFM	" PC="
DEFB	0
DEFB	13,10
DEFM	"(SP)="
DEFB	0
CBACK:DEFB	8,8,8,8,0
ZR:CALL	LINEF	; <= CHNREG
JR	Z1
ZEIREG:; ZEIGE REGISTER
LD	A,(IX+4)
DEC	A
JP	NZ,CHNREG
Z1:CALL	ZR1
JP	EDIT

ZR1:LD	B,10
LD	HL,REGSTR
LD	DE,LAGAF
REOU:
CALL	TXTOUT
PUSH	HL	; => TEXT
EX	DE,HL
LD	E,(HL)
INC	HL
LD	D,(HL)
INC	HL
EX	DE,HL
CALL	ZWBYTO
POP	HL
DJNZ	REOU
LD	HL,CBACK
CALL	TXTOUT
LD	HL,(LAGSP)
LD	A,(HL)
INC	HL
LD	H,(HL)
LD	L,A
CALL	ZWBYTO	; (SP) AUSGEBEN
CALL	BLNOUT
CALL	BLNOUT
LD	A,(LAGAF)
LD	B,A
RL	B
LD	A,"S"
CALL	FLGOUT
RL	B
LD	A,"Z"
CALL	FLGOUT
RL	B
RL	B
LD	A,"H"
CALL	FLGOUT
RL	B
RL	B
LD	A,"P"
CALL	FLGOUT
RL	B
LD	A,"N"
CALL	FLGOUT
RL	B
LD	A,"C"
CALL	FLGOUT

CALL	GTMNEM

LD	B,24
CALL	BLNOUT
DJNZ	$-3
LD	HL,SEP	; "    >> "
CALL	TXTOUT
CALL	AUS1
LD	HL,BUFFER+4
CALL	TXTOUT
CALL	LINEF
LD	HL,(LAGPC)
LD	(PROCOU),HL
LD	(DUMANF),HL	; DUMP UND DISASS STARTET AB PC
RET

FLGOUT:JR	C,$+4
LD	A," "
JP	TXTOPU

SEP:DEFB	" "," ",">",">"," ",0

GTMNEM:; MENEMONIK+BRKADR HOLEN
LD	HL,(PROCOU)
PUSH	HL	; PROCOU VON L
LD	HL,(LAGPC)
LD	(PROCOU),HL
CALL	DISS1
LD	HL,(PROCOU)
LD	(NXTPC),HL
POP	HL
LD	(PROCOU),HL	; OLD PROCOU
RET
CHNREG:
LD	A,2
CP	(IX+4)	; MEHR ALS Z.B. "XH"
LD	HL,ESYNER
JP	NZ,WRONG
LD	A,(DE)
AND	#DF	; UPPER$
CP	"A"
LD	HL,LAGAF
JR	Z,CBTE
CP	"I"
LD	HL,LAGIR
JR	Z,CBTE
CP	"H"
LD	HL,LAGHL
JR	Z,CBTE
CP	"D"
LD	HL,LAGDE
JR	Z,CBTE
CP	"B"
LD	HL,LAGBC
JR	Z,CBTE
CP	"X"
LD	HL,LAGIX
JR	Z,CBTE
CP	"Y"
LD	HL,LAGIY
JR	Z,CBTE
CP	"S"
LD	HL,LAGSP
JR	Z,CBTE
CP	"P"
LD	HL,ESYNER
JP	NZ,WRONG
LD	HL,LAGPC

CBTE:
LD	E,(HL)
INC	HL
LD	D,(HL)	; DOPPELREGISTER HOLEN
PUSH	HL
EX	DE,HL
CALL	ZWBYTO	; AUSGEBEN
CALL	BLNOUT	; " "
LD	(IX+4),4	; 4 ZEICHEN
CALL	GETTXT	; HOLEN
CALL	GET16
JP	Z,ZR
EX	DE,HL
POP	HL
LD	(HL),D
DEC	HL
LD	(HL),E
JP	ZR	; REGISTER ZEIGEN
PUTTXT:; TEXT EINGEBEN
CALL	GET16	; ZIELADRESSE
PUSH	HL
LD	HL,ENOADR
JP	Z,WRONG
POP	HL
PULO:LD	A,(DE)
OR	A
JP	Z,EDVECT	; 0 FERTIG
CALL	SCHREI	; LD (HL),A
INC	HL
INC	DE
JR	PULO


ZWBLN:; ZWEI BYTE +BLANK AUS
CALL	ZWBYTO
JP	BLNOUT

SWPBUF:PUSH	HL
LD	HL,BUFFER
JR	SWPCON
SWAP:; (HL) UND (DE)
PUSH	HL
LD	HL,TXTBUF+1
SWPCON:PUSH	BC
PUSH	DE
PUSH	AF
LD	DE,#A000
LD	B,#30
CALL	SWLOOP
POP	AF
POP	DE
POP	BC
POP	HL
RET

SWLOOP:LD	A,(HL)
LD	C,A
LD	A,(DE)
LD	(HL),A
LD	A,C
LD	(DE),A
INC	HL
INC	DE
DJNZ	SWLOOP
RET
DUMP:; SPEICHERBEREICH AUSDUMPEN
LD	(IX),0
CALL	GET16
JR	NZ,OK3	; ETWAS GEFUNDEN
LD	HL,(DUMANF)
OK3:LD	(DUMANF),HL
CALL	GET16
LD	(DUMEND),HL
LD	(IX+3),13	; DEFAULT: 12 ZEILEN

ZEIDUM:
BIT	3,(IX)	; ENDE ANGEGEBEN
JR	NZ,N1
DEC	(IX+3)	; ZEILENZAEHLER
JP	Z,EDIT	; FERTIG
N1:
CALL	CLRBUF	; BUFFER LOESCHEN

LD	HL,BUFFER	; AM ANFANG 6 BLANKS
LD	(BUFZEI),HL	; PLATZ FUER HEX
LD	HL,BUFFER+55
LD	(BYTZEI),HL	; PLATZ FUER ASCII 

LD	HL,(DUMANF)
PUSH	HL
CALL	VERS4	; PC STAND
LD	B,2
CALL	BLOUT	; "  "
POP	HL
LD	A,L
AND	#F
JR	Z,DMPBYT	; GLATTER ANFANG
LD	L,A
LD	E,A
ADD	A,A
ADD	A,L	; A=A*3
LD	B,A
CALL	BLOUT	; A*3 BLANKS
LD	B,E
BLTOBU:CALL	ATOBUF	; " " IN BUFFER
DJNZ	BLTOBU

DMPBYT:
BIT	3,(IX)
JR	Z,EDVEC+3	; KEIN ENDE ANGEGEBEN
LD	DE,(DUMANF)
LD	HL,(DUMEND)
OR	A
SBC	HL,DE
PUSH	AF
CALL	C,ZEIOUT	; ANFANG>ENDE
POP	AF
EDVEC:JP	C,EDIT
CALL	TSTESC	; TEST AUF ABBRUCH
JR	C,EDVEC

LD	HL,(DUMANF)
CALL	GETBYT
LD	(DUMANF),HL
PUSH	AF	; BYTE
CALL	VERS3	; HEX IN BUFFER
CALL	BLANK
POP	AF
CALL	ATOBUF	; ASCII IN BUFFER
LD	A,(DUMANF)	; LOWBYTE DUMPZEIGER
AND	#F	; NUR LOWNIBBLE
JR	NZ,DMPBYT	; NOCH KEINE 16 BYTES FERTIG

LINFER:CALL	ZEIOUT
JP	ZEIDUM
ZEIOUT:
LD	HL,(BYTZEI)
LD	(HL),0
JP	AUS0
ATOBUF:; ASCII IN BUFFER
LD	HL,(BYTZEI)
CALL	MAKASC	; BIT 7; STEUERZEICHEN?
LD	(HL),A
INC	HL
LD	(BYTZEI),HL
RET
MAKASC:; FUER DUMPEN
AND	#7F	; BIT 7 LOESCHEN
CP	" "
RET	NC
LD	A,"."
RET

MOVCON:
CALL	MOV1
JP	EDIT
MOV1:
CALL	GET16	; ZIEL
PUSH	HL
LD	HL,ENODST
JP	Z,WRONG
POP	HL
EX	DE,HL	; STACK: ANFANG,ENDE,RET
POP	IY	; RET
POP	HL	; ENDE
POP	BC	; ANFANG  
PUSH	IY	; RET
PUSH	BC
PUSH	DE	; ZIEL
SBC	HL,BC	; ENDE-ANFANG
PUSH	HL
LD	HL,EILEND
JP	C,WRONG	; ANFANG>ENDE
POP	HL
LD	B,H
LD	C,L
POP	HL	; ZIEL
POP	DE	; ANFANG
PUSH	HL
SBC	HL,DE	; ZIEL-ANFANG
POP	HL	; ZIEL
EX	DE,HL
INC	BC
JP	C,VLDIR
DEC	BC
ADD	HL,BC	; OBEN ANFANGEN
EX	DE,HL
ADD	HL,BC
EX	DE,HL
INC	BC
JP	VLDDR

MOVE:SET	0,(IX)	; ZEICHEN FUER MOVE
FILL:; SPEICHERBEREICH FUELLEN
CALL	GET16
PUSH	HL	; ANFANG
LD	HL,ENOSTA
JP	Z,WRONG	; NICHTS GEFUNDEN
CALL	GET16
PUSH	HL
LD	HL,ENOEND
JP	Z,WRONG	; KEIN ENDE
BIT	0,(IX)
JR	NZ,MOVCON	; MOVE
CALL	GET8
BIT	3,(IX)
LD	HL,EBYTRQ	; KEIN FILLBYTE
JP	Z,WRONG
OR	A
POP	HL
POP	DE
SBC	HL,DE	; HL:=LAENGE
PUSH	HL
LD	HL,EILEND
JP	C,WRONG	; ANFANG>ENDE
POP	HL
LD	B,H
LD	C,L	; BC:=LAENGE 
EX	DE,HL	; HL:=ANFANG
CALL	SCHREI	; LD (HL),A FILLBYTE
LD	A,B
OR	C
JP	Z,EDIT	; NUR 1 BYTE
LD	D,H
LD	E,L
INC	DE
CALL	KLLDIR	; KL LDIR
JP	EDIT

ZHLOUT:
INC	DE
CALL	GET16
LD	A,1
CALL	PRINT
LD	A,L	; ?CHR$(1)+CHR$(L)
CP	" "
JR	NC,P2	; KEIN STEUERZEICHEN
LD	C,A
LD	A,"^"
CALL	PRINT
LD	A,C
OR	64
P2:CALL	PRINT
CALL	BLNOUT

LD	C,0
PUSH	HL
LD	DE,10000
CALL	TSTDIG
LD	DE,1000
CALL	TSTDIG
LD	DE,100
CALL	TSTDIG
LD	E,10
CALL	TSTDIG
LD	E,1
CALL	TSTDIG
POP	HL
CALL	BLNOUT

LD	BC,16*256+0	; 16 BIT
BITOUT:XOR	A
ADD	HL,HL	; HOECHSTES BIT INS CY
ADC	A,"0"
CP	"1"
JR	Z,PR1-2
BIT	0,C
JR	Z,PR1+3
LD	C,1	; EINE 1 WURDE AUSGEGEBEN
PR1:CALL	PRINT
DJNZ	BITOUT
CALL	LINEF
JP	EDIT
TSTDIG:
XOR	A
INC	A
SBC	HL,DE
JR	NC,TSTDIG+1
ADD	HL,DE
ADD	A,"0"-1
CP	"1"
JR	NC,PRVEC	; >"0"
BIT	0,C	; SCHON 1 DA ?
RET	Z
PRVEC:LD	C,1
JP	PRINT

HEXCOM:; HEXADECIMAL COMPUTATION
LD	A,(IX+4)
DEC	A	; NUR "H"
JP	Z,HELP
LD	A,(DE)
CP	"."
JR	Z,ZHLOUT	; ZAHL AUSGEBEN
CP	":"
JR	Z,DEZHEX	; DEZZAHL ALS HEX AUSGEBEN

CALL	GET16
PUSH	HL
LD	HL,ESYNER
JP	Z,WRONG	; KEIN 1. ARGUMENT
CALL	GET16
PUSH	HL
LD	HL,ESYNER
JP	Z,WRONG	; KEIN 2. ARGUMENT
POP	HL
POP	DE
EX	DE,HL
PUSH	HL
PUSH	DE
ADD	HL,DE
CALL	ZWBYTO	; AUSGEBEN
CALL	BLNOUT
POP	DE
POP	HL
OR	A
SBC	HL,DE
DZAUS:CALL	ZWBYTO	; AUSGEBEN
CALL	LINEF
JP	EDIT

DEZHEX:
LD	B,0
LD	C,(IX+4)	; EINGEGEBENE ZEICHEN
DEC	C	; "H"
DEC	C	; ":"
EX	DE,HL
ADD	HL,BC
EX	DE,HL	; DE ZEIGT AUF LETZTE ZIFFER

LD	HL,0	; BIS JETZT ERGEBNIS 0
LD	BC,1
CALL	STELLE
LD	BC,10
CALL	STELLE
LD	BC,100
CALL	STELLE
LD	BC,1000
CALL	STELLE
LD	BC,10000
CALL	STELLE
LD	A,(DE)
CP	":"
JR	Z,DZAUS
CP	"-"
PUSH	HL
LD	HL,EOVFLW	; OVERFLOW
JP	NZ,WRONG	; ZUVIEL STELLEN
POP	HL
MINUS:
LD	A,H
OR	L
JR	Z,DZAUS	; -0 IST 0
PUSH	HL
LD	DE,32769
OR	A
SBC	HL,DE
PUSH	HL
LD	HL,EOVFLW
JP	NC,WRONG	; OVERFLOW
POP	HL
POP	DE
OR	A
LD	HL,0
SBC	HL,DE	; NEGATIVE ZAHL
JR	DZAUS

STELLE:
LD	A,(DE)
DEC	DE
CP	":"	; AM ANFANG ANGELANGT
JR	Z,DZAUS
CP	"-"
JR	Z,MINUS
SUB	"0"
PUSH	HL
LD	HL,EILDIG
JP	C,WRONG
POP	HL
CP	10
PUSH	HL
LD	HL,EILDIG	; FALSCHE ZIFFER
JP	NC,WRONG
POP	HL
OR	A
RET	Z	; EINE STELLE MIT 0
PUSH	DE
PUSH	HL
LD	D,A	; DEZIMALSTELLE
LD	HL,0
ADDI:ADD	HL,BC
DEC	D
JR	NZ,ADDI
EX	DE,HL	; STELLENWERT NACH DE
POP	HL
ADD	HL,DE
PUSH	HL
LD	HL,EOVFLW
JP	C,WRONG	; UEBERLAUF
POP	HL
POP	DE
RET

CLLUSR:; RUFT USERROUTINE AUF
LD	A,(IX+4)	; EINGEGEBENE ZEICHEN
DEC	A
JR	Z,EXUSR
LD	A,(DE)
AND	#DF
INC	DE
CP	"A"
LD	HL,ESYNER	; SYNTAX ERROR
JP	NZ,WRONG
CALL	GET16
PUSH	AF
EX	DE,HL
LD	HL,(TOPATR)
CALL	ZWBYTO
CALL	BLNOUT
EX	DE,HL
POP	AF
JP	Z,EDVECT	; KEINE NEUE ADRESSE
LD	(TOPATR),HL
CALL	ZWBYTO
JP	EDVECT
TOPATR:DEFW	1000
EXUSR:
LD	C,#FF
LD	HL,(TOPATR)
; CALL FRPCHL 
LD	(ADSTOR),HL
CALL	ROMAUF
JP	EDIT

STORE:; BYTE EINGEBEN
CALL	GET16	; ADRESSE HOLEN
PUSH	HL
LD	HL,ENOADR
JP	Z,WRONG	; KEINE DA
POP	HL
DEC	HL
SLOOP:
INC	HL
PUSH	HL	; ADRESSE
CALL	ZWBYTO	; 16 BIT AUSGEBEN
CALL	BLNOUT	; " "
CALL	GETBYT	; BYTE AUS SPEICHER
PUSH	AF
LD	D,A
LD	A,1
CALL	TXTOPU	; ?CHR$(1)+CHR$(...
LD	A,D
CALL	TXTOPU
CALL	BLNOUT
POP	AF
CALL	BYTOUT	; AUSGEBEN
CALL	BLNOUT	; " "
LD	(IX+4),2	; ZWEI ZEICHEN HOLEN
CALL	GETTXT
JP	NC,EDVECT	; ESC
RES	4,(IX)
LD	A,(DE)
CP	"."
JP	Z,EDVECT	; ENDE
CP	"'"	; ASCII ?
JR	NZ,CGET8
INC	DE
LD	A,(DE)
SET	3,(IX)
JR	CGET8+3

CGET8:CALL	GET8
PUSH	AF
CALL	LINEF
POP	AF
POP	HL	; ADRESSE
BIT	3,(IX)
JR	Z,SLOOP
CALL	SCHREI	; LD (HL),A
JR	SLOOP

POP	HL	; ADRESSE
‡BIT	3