RE: A83: Will this work?
[Prev][Next][Index][Thread]
RE: A83: Will this work?
I haven't looked over all it. I just wanted to say that you cannot load b
into a variable like you did in line 3. ld (BOOKNUMBER),a
In line 2, I recomend xor a ; set a to 0
ld (BOOKNUMBER),a
There may be a more efficient way, and if someone knows of one please tell
me.
-----Original Message-----
From: owner-assembly-83@lists.ticalc.org
[mailto:owner-assembly-83@lists.ticalc.org]On Behalf Of james l
Sent: Monday, February 19, 2001 2:08 PM
To: assembly-83@lists.ticalc.org
Subject: A83: Will this work?
I am kind of new at assembly and wrote this yesterday and today to search
for
programs (protected or not) starting with the charachters E and B. The ones
that match are stored in variables pointed to by TEMP1 (rom page, offset,
and
ti-os name) If there is an easier way to do this, please tell me.
I know it is inefficient and not commented well, but if someone with more
experence would look over this, I would be very thankful. (This is for a
book
reading program for the 83+, but not the 83 (too limited amount of ram, and
I
don't have one), however when I am done if someone wants to port it, I will
try to help)
Sorry about the long message,
James Lancaster
LOAD_EB_PROGRAMS:
ld b,0
ld (BOOKNUMBER),b
ld bc,86B9h ;38 bytes less than where it will start as
ld (TEMP1),bc ;LOAD_RECORD adds 38 to it
ld hl,progPtr
jp RECORD_TESTS
RESET_TO_START_2: ;I know these are inefficient as hell
inc hl
RESET_TO_START_1:
inc hl
inc hl
inc hl
inc hl
inc hl
inc hl
inc hl
NEXT_RECORD:
dec hl
dec hl
dec hl
dec hl
dec hl
dec hl
ld a,(hl)
AGAIN:
dec a
dec hl
cp 0
jp nz,AGAIN
RECORD_TESTS:
ld bc,(Ptemp)
ld a,h
cp b
jp nz,NOT_DONE_WITH_SEARCH
ld a,l
cp c
jp nz,NOT_DONE_WITH_SEARCH
ret ;done searching
NOT_DONE_WITH_SEARCH:
ld a,(hl)
and 7
bit 3,a
jp z,NEXT_RECORD
cp 4
jp z,NEXT_RECORD
cp 7
jp z,NEXT_RECORD
;this record is a (un)protected program either works
dec hl
dec hl
dec hl
dec hl
dec hl
dec hl
dec hl ;now at first char of name
ld a,(hl)
cp 69 ;is a E in other words
jp z,RESET_TO_START_1
dec hl
ld a,(hl)
cp 66 ;is a B in other words
jp z,RESET_TO_START_2
inc hl
inc hl ;now at # of chars in title byte
LOAD_RECORD:
inc hl
inc hl
inc hl
ld ix,(TEMP1)
ld e,38
ld d,0
add ix,de
ld (TEMP1),ix ;each record takes up 38 bytes, so this goes to the
next record
ld a,(hl)
ld (ix+9),a
inc hl
ld a,(hl)
ld (ix+11),a
inc hl
ld a,(hl)
ld (ix+10),a
dec hl
dec hl
dec hl
ld a,(hl)
ld c,a
RECORD_NAME: ;loop for number of chars
dec hl
ld b,(hl)
dec a
ld (IX),b
cp 0
jp nz,RECORD_NAME
;name, flash rom page, offset on that page should all be in ram
GO_TO_NEXT_RECORD:
inc hl ;it was on last byte of name, search again
jp RECORD_TESTS
References: