kthacker | 6de6775 | 2006-04-17 15:02:26 +0000 | [diff] [blame] | 1 | ;; This example shows how to perform a directory of a disc |
| 2 | ;; and extract the filenames. |
| 3 | ;; |
| 4 | ;; This code is public domain and can freely be used in your |
| 5 | ;; own programs. |
| 6 | ;; |
| 7 | ;; Written by Kevin Thacker. 2002 |
| 8 | |
| 9 | |
| 10 | |
| 11 | ;;------------------------------------------------------------------ |
| 12 | |
| 13 | ;; firmware function to catalog a disc or cassette |
| 14 | cas_catalog == 0xbc9b |
| 15 | ;; firmware function to disable text output |
| 16 | txt_vdu_enable == 0xbb54 |
| 17 | ;; firmware function to enable text output |
| 18 | txt_vdu_disable == 0xbb57 |
| 19 | ;; firmware function to find a RSX |
| 20 | kl_find_command == 0xbcd4 |
| 21 | |
| 22 | .globl __readdir |
| 23 | .area _CODE |
| 24 | |
| 25 | ;;------------------------------------------------------------------ |
| 26 | ;; find BIOS SET MESSAGE command |
| 27 | ;; this is used to disable disc messages. |
| 28 | ;; this is compatible with other DOSs that also provide this command |
PulkoMandy | 3783e42 | 2023-05-02 17:40:17 +0200 | [diff] [blame^] | 29 | ;; void _readdir(void*) |
| 30 | ;; Input: pointer to buffer in HL |
kthacker | 6de6775 | 2006-04-17 15:02:26 +0000 | [diff] [blame] | 31 | __readdir:: |
| 32 | |
PulkoMandy | 5523de4 | 2014-06-29 20:28:00 +0200 | [diff] [blame] | 33 | ;ld hl,#cmd_bios_set_message |
| 34 | ;call kl_find_command |
| 35 | ;ret nc |
kthacker | 6de6775 | 2006-04-17 15:02:26 +0000 | [diff] [blame] | 36 | |
| 37 | ;; command found |
| 38 | |
| 39 | ;; store address of command |
PulkoMandy | 5523de4 | 2014-06-29 20:28:00 +0200 | [diff] [blame] | 40 | ;ld (bios_set_message),hl |
| 41 | ;ld a,c |
kthacker | 6de6775 | 2006-04-17 15:02:26 +0000 | [diff] [blame] | 42 | ;; store "rom select" of command |
PulkoMandy | 5523de4 | 2014-06-29 20:28:00 +0200 | [diff] [blame] | 43 | ;ld (bios_set_message+2),a |
kthacker | 6de6775 | 2006-04-17 15:02:26 +0000 | [diff] [blame] | 44 | |
| 45 | ;;------------------------------------------------------------------ |
| 46 | |
| 47 | ;; do CAT |
PulkoMandy | 3783e42 | 2023-05-02 17:40:17 +0200 | [diff] [blame^] | 48 | EX DE,HL ;; Put pointer to buffer in DE instead |
kthacker | 6de6775 | 2006-04-17 15:02:26 +0000 | [diff] [blame] | 49 | |
| 50 | ;;------------------------------------------------------------------ |
| 51 | ;; display files from data generated by CAS CATALOG function |
| 52 | |
| 53 | ;; perform a CAT command |
| 54 | |
kthacker | 6de6775 | 2006-04-17 15:02:26 +0000 | [diff] [blame] | 55 | ;; disable disc messages. Error messages will not be displayed. |
| 56 | ld a,#0xff |
| 57 | rst 0x018 ;; KL FAR CALL |
| 58 | .dw bios_set_message |
| 59 | |
| 60 | ;; disable text output |
| 61 | call txt_vdu_disable |
| 62 | |
kthacker | 6de6775 | 2006-04-17 15:02:26 +0000 | [diff] [blame] | 63 | xor a |
| 64 | ld (de),a |
| 65 | |
| 66 | ;; do catalog |
| 67 | call cas_catalog |
| 68 | |
| 69 | ;; enable text output |
| 70 | call txt_vdu_enable |
| 71 | |
| 72 | ;; enable disc messages. Error messages will be displayed |
PulkoMandy | 5523de4 | 2014-06-29 20:28:00 +0200 | [diff] [blame] | 73 | xor a |
kthacker | 6de6775 | 2006-04-17 15:02:26 +0000 | [diff] [blame] | 74 | rst 0x018 ;; KL FAR CALL |
| 75 | .dw bios_set_message |
| 76 | ret |
| 77 | |
| 78 | |
| 79 | ;;------------------------------------------------------------------ |
| 80 | |
| 81 | ;; this is initialised when the "BIOS SET MESSAGE" RSX has been found. |
| 82 | bios_set_message: |
PulkoMandy | 5523de4 | 2014-06-29 20:28:00 +0200 | [diff] [blame] | 83 | .dw 0xc033 ;; address of function |
| 84 | .db 7 ;; "rom select" for function |
kthacker | 6de6775 | 2006-04-17 15:02:26 +0000 | [diff] [blame] | 85 | |
| 86 | |
PulkoMandy | 5523de4 | 2014-06-29 20:28:00 +0200 | [diff] [blame] | 87 | ;cmd_bios_set_message: |
| 88 | ;.db #0x01+#0x80 ;; this is the "BIOS SET MESSAGE" RSX |
kthacker | 6de6775 | 2006-04-17 15:02:26 +0000 | [diff] [blame] | 89 | |