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 | |
PulkoMandy | 3783e42 | 2023-05-02 17:40:17 +0200 | [diff] [blame] | 25 | ;; void _readdir(void*) |
| 26 | ;; Input: pointer to buffer in HL |
kthacker | 6de6775 | 2006-04-17 15:02:26 +0000 | [diff] [blame] | 27 | __readdir:: |
| 28 | |
PulkoMandy | c0f22c7 | 2023-05-04 23:02:20 +0200 | [diff] [blame^] | 29 | ; The AMSDOS call corrupts IX, which must be saved for SDCC code to work |
| 30 | PUSH IX |
kthacker | 6de6775 | 2006-04-17 15:02:26 +0000 | [diff] [blame] | 31 | |
PulkoMandy | c0f22c7 | 2023-05-04 23:02:20 +0200 | [diff] [blame^] | 32 | ; The parameter is passed in HL but we need it in DE |
| 33 | EX DE,HL |
kthacker | 6de6775 | 2006-04-17 15:02:26 +0000 | [diff] [blame] | 34 | |
kthacker | 6de6775 | 2006-04-17 15:02:26 +0000 | [diff] [blame] | 35 | ;; disable disc messages. Error messages will not be displayed. |
| 36 | ld a,#0xff |
| 37 | rst 0x018 ;; KL FAR CALL |
| 38 | .dw bios_set_message |
| 39 | |
| 40 | ;; disable text output |
| 41 | call txt_vdu_disable |
| 42 | |
PulkoMandy | c0f22c7 | 2023-05-04 23:02:20 +0200 | [diff] [blame^] | 43 | ; Make sure to return an empty buffer if getting the catalog fails |
| 44 | xor a |
| 45 | ld (DE),a |
kthacker | 6de6775 | 2006-04-17 15:02:26 +0000 | [diff] [blame] | 46 | |
| 47 | ;; do catalog |
PulkoMandy | c0f22c7 | 2023-05-04 23:02:20 +0200 | [diff] [blame^] | 48 | call cas_catalog |
kthacker | 6de6775 | 2006-04-17 15:02:26 +0000 | [diff] [blame] | 49 | |
| 50 | ;; enable text output |
| 51 | call txt_vdu_enable |
| 52 | |
| 53 | ;; enable disc messages. Error messages will be displayed |
PulkoMandy | 5523de4 | 2014-06-29 20:28:00 +0200 | [diff] [blame] | 54 | xor a |
kthacker | 6de6775 | 2006-04-17 15:02:26 +0000 | [diff] [blame] | 55 | rst 0x018 ;; KL FAR CALL |
| 56 | .dw bios_set_message |
PulkoMandy | c0f22c7 | 2023-05-04 23:02:20 +0200 | [diff] [blame^] | 57 | |
| 58 | POP IX |
kthacker | 6de6775 | 2006-04-17 15:02:26 +0000 | [diff] [blame] | 59 | ret |
| 60 | |
| 61 | |
| 62 | ;;------------------------------------------------------------------ |
| 63 | |
| 64 | ;; this is initialised when the "BIOS SET MESSAGE" RSX has been found. |
| 65 | bios_set_message: |
PulkoMandy | 5523de4 | 2014-06-29 20:28:00 +0200 | [diff] [blame] | 66 | .dw 0xc033 ;; address of function |
| 67 | .db 7 ;; "rom select" for function |
kthacker | 6de6775 | 2006-04-17 15:02:26 +0000 | [diff] [blame] | 68 | |