RE: A82: ASM code problem


[Prev][Next][Index][Thread]

RE: A82: ASM code problem



At 07:54 PM 7/7/97 -0400, you wrote:
>>   call (FINAL_ADDR)
>
>Well... CALL (FINAL_ADDR) should mean call the address that's stored at
'FINAL_ADDR', but that's not an instruction in Z80 assembly language, so
I'm assuming it's supposed to be CALL_(FINAL_ADDR), which is the
Zshell/Ash/Oshell-82 defines for calling even though the program will be at
another place.

No, I meant call (FINAL_ADDR).  The call opcode does exist (see the Z80
Instruction Set Summary).  The source I sent to this list is only a small
portion of the ROM_CALL routine that I will be using in ASH <-> OShell.  I
sent the source because I wanted to see if there was any errors in my
knowledge of Z80 ASM.  I have narrowed my problem down to just a line or
two of code.  The following code does NOT work:

#include "ti-82.h"
FINAL_ADDR = $8C2B         ; Word

.ORG 0
.DB "Test Ver",0

  call CLEARLCD            ; Clears the LCD
  ld bc,0                  ; 0 -> c, 0 -> b
  ld (CURSOR_ROW),bc       ; Set cursor at position (0,0)
  ld hl,Text               ; Address of Text -> hl
  ld de,(PROGRAM_ADDR)     ; (PROGRAM_ADDR) -> de
  add hl,de                ; hl = hl + de
  
  ld bc,D_ZT_STR
  ld (FINAL_ADDR),bc
  call (FINAL_ADDR)
GetkeyLoop:
  call GET_KEY             ; Get the keyboard scan code
  cp $37                   ; Check to see if [MODE] was pressed
  ret Z                    ; If so, return to caller
  jr GetkeyLoop            ; Goto GetkeyLoop

Text: .DB "Hello World!!!",0

.END


However, this code works (it gets to be REAL weird after fooling with the
code for a while):

#include "ti-82.h"
FINAL_ADDR = $8C2B         ; Word

.ORG 0
.DB "Test Ver",0

  call CLEARLCD            ; Clears the LCD
  ld bc,0                  ; 0 -> c, 0 -> b
  ld (CURSOR_ROW),bc       ; Set cursor at position (0,0)
  ld hl,Text               ; Address of Text -> hl
  ld de,(PROGRAM_ADDR)     ; (PROGRAM_ADDR) -> de
  add hl,de                ; hl = hl + de
  
  call D_ZT_STR
GetkeyLoop:
  call GET_KEY             ; Get the keyboard scan code
  cp $37                   ; Check to see if [MODE] was pressed
  ret Z                    ; If so, return to caller
  jr GetkeyLoop            ; Goto GetkeyLoop

Text: .DB "Hello World!!!",0

.END

Both programs should be compiled under OShell-82.  This is a very confusing
problem and I really would like any hint to an answer.

TIA,
Thomas J. Hruska

|----------------------------------------------------|
|             Shining Light Productions              |
|      "Meeting the needs of fellow programmers"     |
|                                                    |
|   C/C++ programs                                   |
|   QBasic programs                                  |
|   JavaScript                                       |
|   TI-82 ASM                                        |
|   TI-Basic                                         |
|   HTML                                             |
|                                                    |
| Search for our web site at                         |
| www.geocities.com/SiliconValley/Heights/8504/      |
|                                                    |
| We use a dynamic web server for most of our        |
| documents!!!                                       |
| Soon to go to a full JavaScript 1.1 web site!      |
|----------------------------------------------------|


References: