Rather than seek out yet another forum (http://wabbit.codeplex.com/ or http://www.revsoft.org/phpBB2/index.php), I'd like to ask here about trouble I'm having with understanding what is probably basic operations with this IDE.
Why does it not allow me to "Add->New File"? I can add existing, but add new just does nothing.
Also, "Assemble->Assemble is grayed out. Why would that be?
I have downloaded the latest version for windows: 0.2.3785.35474
I have set Build Step to build an .asm file that I added to the project to build to TI83 Plus Application.
Are they only supporting Mac from now on? This link seems to make that apparent. http://code.google.com/p/wabbitstudio/
Here are my steps for usage of the Wabbitcode.
Make new project. Add this .asm file to it. (yes it stinks of noob, I know)
Code: Select all
include "ti83plus.inc"
EXT_APP equ 1 ;This definition is required of all apps
cseg ;This linker directive is required of all apps.
;This is the application header definition area required for all apps.
db 080h,0Fh ;Field: Program length
db 00h,00h,00h,00h ;Length=0 (N/A for unsigned apps)
db 080h,012h ;Field: Program type
db 01h,04h ;Type= Shareware, TI-83Plus
db 080h,021h ;Field: App ID
db 01h ;Id = 1
db 080h,031h ;Field: App Build
db 01h ;Build = 1
db 080h,048h ;Field: App Name
db 54h, 45h, 53h, 54h, 4dh, 4Bh, 45h, 52h ;Name = "TESTMAKER" must be 8 characters
db 080h,081h ;Field: App Pages
db 01h ;App Pages = 1
db 080h,090h ;No default splash screen
db 03h,026h ,09h,04h, 04h,06fh,01bh,80h ;Field: Date stamp- 5/12/1999
db 02h,0dh,040h ;Dummy encrypted TI date stamp signature
db 0a1h ,06bh ,099h ,0f6h ,059h ,0bch ,067h
db 0f5h ,085h ,09ch ,09h ,06ch ,0fh ,0b4h ,03h ,09bh ,0c9h
db 03h ,032h ,02ch ,0e0h ,03h ,020h ,0e3h ,02ch ,0f4h ,02dh
db 073h ,0b4h ,027h ,0c4h ,0a0h ,072h ,054h ,0b9h ,0eah ,07ch
db 03bh ,0aah ,016h ,0f6h ,077h ,083h ,07ah ,0eeh ,01ah ,0d4h
db 042h ,04ch ,06bh ,08bh ,013h ,01fh ,0bbh ,093h ,08bh ,0fch
db 019h ,01ch ,03ch ,0ech ,04dh ,0e5h ,075h
db 80h,7Fh ;Field: Program Image length
db 0,0,0,0 ;Length=0, N/A
db 0,0,0,0 ;Reserved
db 0,0,0,0 ;Reserved
db 0,0,0,0 ;Reserved
db 0,0,0,0 ;Reserved
;appBackUpScreen = 98FA
;holds current selection id
StartApp:
B_CALL ClrLCDFull
call SetDefaults
Main:
MenuLoop:
call DisplayMenu
B_CALL GetKey
call ProcessMenuAction
B_CALL GetKey
B_JUMP JForceCmdNoChar ;Exit the application
; ret
SetDefaults:
ld a, 0
ld (appBackUpScreen), a
call CreateVs
ret
DisplayMenu:
;****Give two options
; 1. take test
; 2. make test
; 3. last test taken score
; 4. quit
call PageNew
call ResTI
ld hl, MainHeader
call Display
call NewLine
call ResTI
call GetSelected
ld c, 0
call SetSelected
ld hl, MainChoice1
call Display
call NewLine
call ResTI
call GetSelected
ld c, 1
call SetSelected
ld hl, MainChoice2
call Display
call NewLine
call ResTI
call GetSelected
ld c, 2
call SetSelected
ld hl, MainChoice3
call Display
call NewLine
call ResTI
call GetSelected
ld c, 3
call SetSelected
ld hl, MainChoice4
call Display
ret
SetSelected:
ld a, (de)
cp c
call z, SetTI
ret
SetTI:
set textInverse,(IY + textFlags)
ret
ResTI:
res textInverse, (IY+textFlags)
ret
PageNew:
ld a, 0
ld (penCol), a
ld a, 0
ld (penRow), a
ret
NewLine:
ld a, 0
ld (penCol), a
ld a, (penRow)
add a, 8
ld (penRow), a
ret
Display:
ld de, OP1
ld BC, 23
; B_CALL StrCopy ;Copy the string to ram
ldir
ld hl, OP1
B_CALL VPutS
ret
;**ProcessMenuAction*************************************
ProcessMenuAction:
cp kDown
jp z, MoveDown
cp kUp
jp z, MoveUp
cp kEnter
jp ProcessCommand
ret
ProcessCommand:
call GetSelected
ld a, (de)
cp 1 ; make test
jp z, MakeTest
jp MenuLoop
GetSelected: ; de will point to the data
ld hl, SELname
B_CALL Mov9ToOP1
B_CALL ChkFindSym
ret c
ld a, b ; archived status
add 0ffh
ret c
inc de
inc de
inc de
inc de
inc de
inc de
ret
MoveUp:
;;;;;;;;;;;;;;;;;HERE HERE decrement variable
; ld a, (appBackUpScreen)
;decrement the selected variable
ld hl, SELname
B_CALL Mov9ToOP1
B_CALL ChkFindSym
ret c
ld a, b ; archived status
add 0ffh
ret c
;de is pointing to the data
inc de
inc de
inc de
inc de
inc de
inc de
ld a, (de)
ld h, 1
sub a, h
ld (de), a
jp MenuLoop;
MoveDown:
ld hl, SELname
B_CALL Mov9ToOP1
B_CALL ChkFindSym
ret c
ld a, b ; archived status
add 0ffh
ret c
;de is pointing to the data
;INCREMENT the value of the data
inc de
inc de
inc de
inc de
inc de
inc de
ld a, (de)
ld h, 1
add a, h
ld (de), a
jp MenuLoop;
;**Exit_App*************************************
Exit_App:
B_CALL ReloadAppEntryVecs ; load the monitor vectors
; to App loader
;
B_JUMP JForceCmdNoChar ; exit the app and
; initiate home screen
;---Make runtime variables
CreateVs:
LD hl, SELname
B_CALL Mov9ToOP1
LD hl, 7 ; 2 for size, 4 for identifier, 1 for value = 7 bytes
B_CALL CreateAppVar
;de points to the data structure
;load our identifier into first part of variable
inc de ;get over size bytes
inc de
ld hl,Identifier
ld bc,4
ldir
;default value set to 0
;inc de
ld a, 0
ld (de), a
ret
MakeTest:
;initialize test index variable if needed
;variable will allow retrieval of other variables that represent tests.
call InitTestIndex
B_CALL ClrLCDFull
ld a, 0
ld (penRow), a
ld (penCol), a
;save pointer to the name buffer
;appBackupScreen + 50 => 98A4h is the pointer variable to the end of the buffer
;initialize the pointer to point to the appBackupScreen
ld hl, 98A4h
ld (hl), 98h
inc hl
ld (hl), 72h
GetTestNameLoop:
;enter name of new test (max 30 characters)
B_CALL GetKey
cp kEnter
jp z, SaveNewTestName
;'a' contains the key pressed
;save it in the name buffer
;get current pointer value (transfer ram value to a register
; so use hl)
ld hl, (98A4h)
ld b, h
ld h, l
ld l, b
ld (hl), a ;save character to the current buffer end position
;increment the pointer by 1
inc hl ;move the end of the buffer end position by 1
;flip hl again to save it ??? i guess
ld b, h
ld h, l
ld l, b
;save new pointer value
ld (98A4h), hl ;save the new position of the buffer end to the pointer location
;write to the screen
;save the value of a to a place in ram that has null after it
ld (98A6h), a
ld a, 0
ld (98A7h), a
ld hl, 98A6h
B_CALL VPutS
call SlidePen
;save in appBackUpScreen (1 offset) each character
;when enter is pressed, write 0
;save new variable 'Test' + testname using createAppVar
;ask for text of new question
;save in appBackUpScreen (1 offset) each character
;when enter is pressed, write 0
;if length is greater than zero, append to test variable
;use 0, question token, question text, 0
;if length is zero, then return to menu loop label
;ask for answer option
;save in appBackUpScreen (1 offset) each character
;when enter is pressed, write 0
;if length of is greater than zero, append to test variable
;use 0, choice token, choice text,0
;if length is zero, then ask for number of the correct choice
jp GetTestNameLoop
InitTestIndex:
;load the variable identifier
ld hl, TestIdxname
B_CALL Mov9ToOP1
;check symbol table
B_CALL ChkFindSym
jr nc, InitTestCreated
;if not, create it for initially 100 bytes
ld hl, 100
B_CALL CreateAppVar
push hl
push de
B_CALL OP4ToOP1
pop de
pop hl
ret
InitTestCreated:
;variable created by now, check if it is archived
ld a, b
or a
jr z, InitTestIndexDone
;unarchive variable
B_CALL Arc_Unarc
jr InitTestIndex
InitTestIndexDone:
;set the Identifier "TMKR" as the first 4 bytes
;even if already there
inc de
inc de
ld hl,Identifier
ld bc,4
ldir
ret
SlidePen:
ld a, (penCol)
inc a
ld (penCol), a
ret
SaveNewTestName:
;saves characters from the appbufferscreen
;=9872 addy
;save to variable TestIdx
;resize if neccessary
ret
;write the pc to the port for debug tracing
TracePC:
push pc
ret
;23 characters per line
MainHeader:
DB "Test Maker App", 0
MainChoice1:
DB "Take Test",0
MainChoice2:
DB "Make Test",0
MainChoice3:
DB "Last Test Score",0
MainChoice4:
DB "Quit",0
SELname:
DB AppVarObj, "Selected",0
TestIdxname:
DB AppVarObj, "TestIdx",0
Identifier:
DB "TMKR",0
Then have ti83plus.inc in same directory. And then "try" to build. However it is grayed out. This code worked when assembled by Zilog and then loaded into the TI-83 flash debugger. What am I missing?
Thanks in advance.