z80:Answers 5
Topic questions
1. ASCII is the American Standard Code for Information Interchange. Though TI uses a different standard than the currently accepted computer standard, it functions in a similar function: data represented by numbers point to an offset that holds a representation of the character.
2. GetKey will wait for a key to be pressed to return a value, and GetCSC will check to see if a key has been pressed, and if so, return that value. Also, GetKey utilizes the shift operators ([2nd] and [Alpha]) while getCSC returns a scan code for those two keys.
Code Fragments
3. Write a short program to display "HELLO WORLD" diagonally
;here's one that looks decent ld hl,0 ld (pencol),hl ld hl,txt loop: ld a,(hl) or a jr z,stop bcall(_vPutmap) inc hl push hl ld hl,(pencol) inc h inc h inc h ld (pencol),hl pop hl jr loop stop: bcall(_GetKey) ret txt: .db "HELLO WORLD",0
4. Write a program that moves a dot around the screen when the user presses an arrow key. (hint: Use the _IPoint, or see sprites for a better method)
;sorry, no comments bcall(_ClrLCDFull) set fullScrnDraw, (IY + apiFlg4) bcall(_runindicoff) ld bc,$3232 ld d,1 push bc bcall(_IPoint) keyloop: bcall(_GetCSC) cp skup jr z,moveUp cp skdown jr z,movedown cp skleft jr z,moveleft cp skright jr z,moveright cp skclear jr z,quit jr keyloop quit: pop bc bcall(_ClrLCDFull) ret movedown: ld d,0 pop bc push bc bcall(_IPoint) pop bc ld a,c or a jr z,$+3 dec a ld c,a push bc ld d,1 bcall(_IPoint) jr keyloop moveup: ld d,0 pop bc push bc bcall(_IPoint) pop bc ld a,c cp 63 jr z,$+3 inc a ld c,a push bc ld d,1 bcall(_IPoint) jr keyloop moveleft: ld d,0 pop bc push bc bcall(_IPoint) pop bc ld a,b or a jr z,$+3 dec a ld b,a push bc ld d,1 bcall(_IPoint) jr keyloop moveright: ld d,0 pop bc push bc bcall(_IPoint) pop bc ld a,b cp 95 jr z,$+3 inc a ld b,a push bc ld d,1 bcall(_IPoint) jr keyloop
Programming Errors
5. Completely correct
6. Two errors: First of all, ionfastcopy uses plotsscreen instead of appbackupscreen, and the way it defines the buffer is running through the rows, as opposed to the columns. Even if plotsscreen was used, you would have an interesting line pattern drawn instead of an 8*8 box (feel free to try it).