home *** CD-ROM | disk | FTP | other *** search
/ ticalc.org / ticalc_org_rev_b.iso / archives / 83 / asm / source / progptr.z80 < prev    next >
Encoding:
Text File  |  2001-07-01  |  2.0 KB  |  105 lines

  1. ; PROGRAM:    PROGPTR
  2. ; VERSION:    2.00
  3. ; AUTHOR:     David Eriksson, edison@kuai.se
  4. ; DATE:       10/26/96
  5.  
  6. kEnter .EQU  05h                ; Enter key
  7. kQuit  .EQU  40h                ; Quit key
  8.  
  9. #define equ    .equ                ; these will make ti83asm.inc and tokens.inc work in TASM
  10. #define EQU    .equ
  11.  
  12. .NOLIST
  13. .INCLUDE "ti83asm.inc"            ; TI83 System Routine Equates
  14. .INCLUDE "tokens.inc"            ; TI83 Tokens
  15. .LIST
  16.  
  17. .ORG     9327h                    ; All TI83 programs have base 9327h
  18.  
  19.     LD        HL, (PROGPTR)        ; get offset to program/list table
  20.  
  21.     LD        A, 4                ; four programs/keypress
  22.  
  23. main_loop:
  24.     LD        (count), A            ; store latest update of count
  25.  
  26.     LD        A, (HL)                ; get type of data
  27.     AND        01FH                ; mask out bits 0-4
  28.  
  29.     CP        05H                    ; program
  30.     JR        Z, program
  31.     CP        06H                    ; protected program
  32.     JR        Z, program
  33.  
  34.     CP        01H                    ; real list
  35.     JR        Z, list
  36.  
  37.     CP        0DH                    ; complex list
  38.     JR        Z, list
  39.  
  40.     JR        the_end                ; unknown/end of list
  41.  
  42. program:
  43.     DEC        HL                    ; move back 3 bytes to length-of-name
  44.     DEC        HL
  45.     DEC        HL
  46.  
  47.     CP        06h                    ; display '*' for protected programs
  48.     JR        Z, protected
  49.     LD        A, ' '
  50.     JR        go_on
  51.  
  52. protected:
  53.     LD        A, '*'
  54.  
  55. go_on:
  56.     CALL    _PUTC
  57.  
  58.     LD        B, (HL)                ; load length-of-string
  59. program_loop:
  60.     DEC        HL                    ; move backwards to next char
  61.     LD        A, (HL)                ; load char
  62.     CALL    _PUTC                ; display char
  63.     DJNZ    program_loop
  64.  
  65.     DEC        HL                    ; move backwards to next item
  66.     CALL    _NEWLINE
  67.  
  68.     LD        A, (count)            ; have we displayed four programs?
  69.     DEC        A
  70.     JR        NZ, main_loop
  71.  
  72. key_loop:
  73.     PUSH    HL
  74.     CALL    _GETKEY                ; wait for key
  75.     POP        HL
  76.     CP        kQuit
  77.     JR        Z, the_end
  78.     CP      kEnter                ; enter key?
  79.     JR      NZ, key_loop        ; no
  80.  
  81.     LD        A, 4                ; four programs/keypress
  82.     JR        main_loop
  83.     
  84. list:
  85.     DEC        HL                    ; move back 3 bytes to length-of-name
  86.     DEC        HL
  87.     DEC        HL
  88.     LD        B, (HL)                ; load length-of-string
  89. list_loop:
  90.     DEC        HL                    ; move backwards to next char
  91.     DJNZ    list_loop
  92.  
  93.     DEC        HL                    ; move backwards to next item
  94.     
  95.     LD        A, (count)            ; no change really, load A
  96.     JP        main_loop
  97.  
  98. the_end:
  99.     RET
  100.  
  101. count:
  102.     .DB        00h
  103.  
  104. .END
  105.