Home
JAQForum Ver 20.06
Log In or Join  
Active Topics
Local Time 01:10 30 Mar 2024 Privacy Policy
Jump to

Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.

Forum Index : Microcontroller and PC projects : Help for data logging with MM2 and SD card

     Page 1 of 2    
Author Message
Frank N. Furter
Guru

Joined: 28/05/2012
Location: Germany
Posts: 813
Posted: 09:09am 14 Jan 2020
Copy link to clipboard 
Print this post

Hello to all,

I want to log whether the lamp in a room is switched on or off.
Therefore I want to write the information 0 or 1 with a timestamp (RTC) as CSV file on a SD card.
A MM2 with "Updated MX170 SD card drivers"  with a PCF8563 should be used.

Has anyone ever realized something similar and can help me with the write accesses? I don't know much about those...

Any help is apreciated!
Thanks!

Frank
 
CaptainBoing

Guru

Joined: 07/09/2016
Location: United Kingdom
Posts: 1983
Posted: 10:31am 14 Jan 2020
Copy link to clipboard 
Print this post

is it portability of the data (i.e. take the card and out it in a PC) or just capacity you are after?

If the latter, consider a Winbond flash memory - they are brilliant and really easy to interface with. You can get them with capacities upto 16MB (more might be possible but I have yet to see them in the wild). If you take your log messages to be roughly 50 chars long on average, that gives you 335K log entries which is enough to log every second for almost four days. If you use a compressed method (I have one that logs down to seconds in just 7 bytes) which would give the same logging for almost a month.

jus' sayin'
Edited 2020-01-14 20:56 by CaptainBoing
 
Frank N. Furter
Guru

Joined: 28/05/2012
Location: Germany
Posts: 813
Posted: 11:01am 14 Jan 2020
Copy link to clipboard 
Print this post

Hi CaptainBoing,

yes it is to transfer the data to a PC. The Winbond flash memory is unfortunately not an option.
I don't need that many entries. A week with about 100 switching operations a day should be enough.

Frank
 
CaptainBoing

Guru

Joined: 07/09/2016
Location: United Kingdom
Posts: 1983
Posted: 11:28am 14 Jan 2020
Copy link to clipboard 
Print this post

Ah right - I understand.

Sadly I never played with SD cards on the smaller 170s - sorry.

Someone here should be able to give you some code to get you started though. I seem to remember there was something funny about creating a file from scratch - you needed to create a blank file entry in the directory. Dunno - might be remembering wrong here - it happens a lot.
 
Poppy

Guru

Joined: 25/07/2019
Location: Germany
Posts: 486
Posted: 11:55am 14 Jan 2020
Copy link to clipboard 
Print this post

I have not done it myself ...

But I think this is very important, because this is the reason I use to take Duinomites for getting this task easily done, but for sadly not knowing any SLEEP the Duinomite generally is just a substitute.
Andre ... such a GURU?
 
Frank N. Furter
Guru

Joined: 28/05/2012
Location: Germany
Posts: 813
Posted: 01:04pm 14 Jan 2020
Copy link to clipboard 
Print this post

Hi Poppy,

how did you realize it with the Duinomite?
If I understood that correctly it should not work much different with the SD card driver.
Peter has explained the commands here.

Frank
 
Poppy

Guru

Joined: 25/07/2019
Location: Germany
Posts: 486
Posted: 02:11pm 14 Jan 2020
Copy link to clipboard 
Print this post

Hi Frank,

currently too busy, but take a look at the Manual, Page 36 for

OPEN fname$ FOR mode
AS [#]fnbr



Andre ... such a GURU?
 
lizby
Guru

Joined: 17/05/2016
Location: United States
Posts: 2989
Posted: 02:34pm 14 Jan 2020
Copy link to clipboard 
Print this post

Others have gotten it to work with 170s, but I failed in multiple attempts.

Any reason not to use the STM32F407VET6 with matherp's excellent mmbasic port with SD access provided?
PicoMite, Armmite F4, SensorKits, MMBasic Hardware, Games, etc. on fruitoftheshed
 
Andrew_G
Guru

Joined: 18/10/2016
Location: Australia
Posts: 839
Posted: 03:26am 15 Jan 2020
Copy link to clipboard 
Print this post

Hi Frank,
I am a complete novice but I got a MM170 to happily record to an OpenLog SD card reader. I then remove the SD card and plug it into a reader on my PC.
(this has now been mostly superseded by software I wrote for my PC).

In my "project" I use an HC-12 to listen to my weather station network (10 HC-12 transmitters), read the data coming in on one Serial line, add a Time/Date stamp and "Print" it to the second serial port which has the OpenLog attached.
(There is some wind data every 10 seconds which would clog the file so I discard that first)  

I can record months++ of data like this on the card:
"
13-07-2018,12:11:50,$AG10M,0,0.2794,14.3,78.7,7*79
13-07-2018,12:11:50,$AGAM,18.25,0*1A
13-07-2018,12:11:50,$AGAM,14.3,7*25
13-07-2018,12:19:50,$AGAM,18.5,4*2C
13-07-2018,12:21:49,$AG10M,0,0.2794,15.5,78.5,7*7C
"

I'd suggest an OpenLog and can help with details if you wish.

Have a look at this to get you started . . .

Cheers,

Andrew
 
Frank N. Furter
Guru

Joined: 28/05/2012
Location: Germany
Posts: 813
Posted: 07:42am 15 Jan 2020
Copy link to clipboard 
Print this post

@lizby:
STM32F407VET6 is unfortunately not an option - I have to realize the project until this weekend with parts I have here...  

@Andrew:
Unfortunately the same applies to OpenLog - although it is very interesting!  

Did anyone successfully get the SD card driver to work? Until now I only get error messages and I don't know if it is due to my hardware or software...

Frank
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 8517
Posted: 08:30am 15 Jan 2020
Copy link to clipboard 
Print this post

  Quote   Until now I only get error messages and I don't know if it is due to my hardware or software...


If you post some code and circuit details then we might be able to help. I assume you know you have to create a file first on a PC big enough for your logging requirement? PetitFS can't create files only overwrite them so the file can't just be a short blank. If not search back through all my threads on this. Way back there are some test programs. Haven't tested on recent firmware releases but no obvious reasons why it wouldn't work
 
Frank N. Furter
Guru

Joined: 28/05/2012
Location: Germany
Posts: 813
Posted: 11:52am 15 Jan 2020
Copy link to clipboard 
Print this post

Hi Peter,

thanks for your reply!

I have here a 28 pin Micromite with MMBasic Ver 5.05.01.

I use a INTENSO 16GB Micro SD card in a "Ciseco B026 I/O POD microSD Card Socket 3.3V SPI Communication"  holder. On the SD card is the empty 98 KB file from the example which I renamed to "empty.txt".


The following wiring was done:

Micromite - SD Card
===================
Pin2  - SS
Pin3  - MOSI
Pin14 - MISO
Pin25 - SCK

I took the program from the example and copied it together with the last Csub for SPI1 and changed "sdcard 0,32" to "sdcard 0,2":

option explicit
option default none
' Constants defining SD card calls
const fileopen=1
const readfile=2
const writefile=3
const opendir=4
const readdir=5
'
CONST CTRL_Z = 26 'Used in example as EOF marker
const CS_PIN=24 'Chip select pin conected to the SD card
dim integer i,filepos,num
dim s$
prepnumbers()
'
' Mount the disk

' open directory
SDcard opendir,""

'read the directory
do
 SDcard readdir,s$

 if s$<>"" then print s$
loop while s$<>""

' Open a file to use for write
SDCard fileopen,"empty.txt"

' Write out a title line
s$="Title: 73 times table "+chr$(13)
SDcard writefile,s$,0,len(s$)

' maintain the file pointer - this must be done in the Basic program
filepos=len(s$)
num=0

' write out 500 lines of output updating the file pointer as we go
for i=1 to 500
   s$=int2text$(num)+chr$(13)
   num=num+73
   SDcard writefile,s$,filepos,len(s$)
   filepos=filepos+len(s$)
next i

' write something we can recognise as the end of file
s$=chr$(CTRL_Z) 'end of file marker CTRL-Z
SDcard writefile,s$,filepos,len(s$)

'
' Now lets read back the file to check it

' Read in the first 240 characters positioning the filemarker to the beginning of the file
SDcard readfile,s$,0,240,filepos
print s$;
' loop through the file
do 'NB we call readfile with  
 SDcard readfile,s$,-1,240,filepos
 if instr(s$,CHR$(CTRL_Z)) THEN
   s$=left$(s$,instr(s$,CHR$(CTRL_Z))-1)
   filepos=0
 endif
 print s$;
loop while filepos<>0 'loop until the end of the physical file or our end-of-file marker
print ""
end
FUNCTION int2Text$(number AS integer)
   local num AS integer, outP AS STRING length 60, unit AS INTEGER
   local tmpLng1 AS integer
 
   IF 0 = number THEN
       int2Text$ = "zero"
       EXIT FUNCTION
   END IF
 
   num = ABS(number)
 
   DO
       tmpLng1 = num MOD 100
       SELECT CASE tmpLng1
           CASE 1 TO 19
               outP = small(tmpLng1) + " " + outP
           CASE 20 TO 99
               SELECT CASE tmpLng1 MOD 10
                   CASE 0
                       outP = tens((tmpLng1 \ 10) - 2) + " " + outP
                   CASE ELSE
                       outP = tens((tmpLng1 \ 10) - 2) + "-" + small(tmpLng1 MOD 10) + " " + outP
               END SELECT
       END SELECT
 
       tmpLng1 = (num MOD 1000) \ 100
       IF tmpLng1 THEN
           outP = small(tmpLng1) + " hundred " + outP
       END IF
 
       num = num \ 1000
       IF num < 1 THEN EXIT DO
 
       tmpLng1 = num MOD 1000
       IF tmpLng1 THEN outP = big(unit) + " " + outP
 
       unit = unit + 1
   LOOP
 
   IF number < 0 THEN outP = "negative " + outP
   Do WHILE ASC(RIGHT$(outp,1))<=32
      outp = LEFT$(outp,len(outp)-1)  
   loop
   int2Text$ = outP
END FUNCTION
'
sub prepnumbers
'small
 DATA "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"
 DATA "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"
'tens
 DATA "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"
'big
 DATA "thousand", "million", "billion"
 dim small(19) AS STRING length 10, tens(7) AS STRING length 10, big(2) AS STRING length 10
 FOR i = 1 TO 19
   READ small(i)
 NEXT
 FOR i = 0 TO 7
   READ tens(i)
 NEXT
 FOR i = 0 TO 2
   READ big(i)
 NEXT
end sub
'


sub mm.startup
' include initialisation for display driver here if required
 sdcard 0,2 'set up the chip select pin for the SDcard
end sub
sub load(f$)
 sdcard 6,f$
end
end sub
sub save(f$)
 sdcard 7,f$
end sub
Csub SDcard 'SPI1 version 2.04
   00000676
   'rcv_spi
   240300FF 3C02BF80 AC435820 3C03BF80 8C625810 30420080 1040FFFD 3C02BF80
   8C425820 03E00008 304200FF
   'xmit_spi
   308400FF 3C02BF80 AC445820 3C03BF80 8C625810 30420080 1040FFFD 3C02BF80
   8C425820 03E00008 304200FF
   'mem_set
   10C00006 00801021 00862021 A0450000 24420001 5444FFFE A0450000 03E00008
   00000000
   'mem_cmp
   2407FFFF 24C6FFFF 10C70008 00001021 80830000 80A20000 00621023 14400003
   24840001 1000FFF7 24A50001 03E00008 00000000
   'mystrlen
   80830000 10600006 00001021 24420001 00821821 80630000 5460FFFD 24420001
   03E00008 00000000
   'send_cmd
   27BDFFE0 AFBF001C AFB20018 AFB10014 AFB00010 309100FF 7C111420 04410009
   00A09021 24040077 00002821 0411FFF4 00000000 2C430002 10600034 8FBF001C
   3231007F 3C109D00 8E030090 8E02001C 80640030 0040F809 24050006 0411FFB2
   00000000 8E030090 8E02001C 80640030 0040F809 24050005 0411FFAB 00000000
   02202021 0411FFB3 00000000 00122602 0411FFB0 00000000 7E443C00 0411FFAD
   00000000 7E443A00 0411FFAA 00000000 324400FF 0411FFA7 00000000 24020040
   12220006 24040095 3A310048 24020001 24030087 00402021 0071200A 0411FF9D
   00000000 2410000A 0411FF8F 00000000 7C021C20 04610004 2610FFFF 321000FF
   1600FFF9 00000000 8FBF001C 8FB20018 8FB10014 8FB00010 03E00008 27BD0020
   'disk_readp
   27BDFFD8 AFBF0024 AFB40020 AFB3001C AFB20018 AFB10014 AFB00010 00809021
   00C09821 00E0A021 3C029D00 8C42008C 8C4300FC 30630008 00051240 24040051
   0043280A 0411FFA6 00000000 14400024 24100001 34109C40 241100FF 0411FF6A
   00000000 14510005 2610FFFF 1600FFFB 00000000 1000001A 24100001 240300FE
   14430017 24100001 00138823 26310202 12600006 02348823 0411FF5B 00000000
   2673FFFF 1660FFFC 00000000 02548021 0411FF55 00000000 A2420000 26520001
   1650FFFB 00000000 0411FF4F 00000000 2631FFFF 1620FFFC 00000000 00008021
   3C029D00 8C430090 8C42001C 80640030 0040F809 24050006 0411FF43 00000000
   02001021 8FBF0024 8FB40020 8FB3001C 8FB20018 8FB10014 8FB00010 03E00008
   27BD0028
   'clust2sect
   24A5FFFE 8C830008 2463FFFE 00A3182B 10600005 00001021 90830002 8C820014
   70A32002 00821021 03E00008 00000000
   'dir_rewind
   27BDFFE8 AFBF0014 AFB00010 00A08021 A4A00000 8CA50008 24030001 10A30015
   24020001 8C830008 00A3182B 50600012 8FBF0014 54A00008 AE05000C 90830000
   24020003 54620008 AE00000C 8C850010 10A00005 AE05000C 0411FFDD 00000000
   10000003 AE020010 8C820010 AE020010 00001021 8FBF0014 8FB00010 03E00008
   27BD0018
   'create_name
   27BDFFE0 AFBF001C AFB10018 AFB00014 00A08021 8C910004 02202021 24050020
   2406000B 0411FF18 00000000 8E080000 00002021 00001821 24070008 2409002F
   2406002E 240A0008 01031021 90420000 24630001 2C450021 14A00018 306300FF
   50490017 01031821 10460003 0087282B 14A00008 2445FF9F 54EA0011 01031821
   5446000F 01031821 01402021 1000FFEE 2407000B 30A500FF 2CA5001A 10A00003
   02242821 2442FFE0 304200FF A0A20000 24840001 1000FFE4 308400FF 01031821
   AE030000 2C420021 A222000B 00001021 8FBF001C 8FB10018 8FB00014 03E00008
   27BD0020
   'get_clust
   90840000 24020003 14820006 00001821 90A30015 00031A00 90A20014 00621825
   00031C00 90A2001B 00021200 90A4001A 00441025 03E00008 00621025
   'get_fat
   27BDFFE0 AFBF001C 2CA20002 1440001B 24030001 8C820008 00A2102B 10400018
   00601021 000519C2 8C82000C 30A6007F 27A40010 00622821 00063080 24070004
   0411FF31 00000000 1440000C 24030001 93A30013 00031E00 93A20012 00021400
   00621825 93A20010 00621825 93A20011 00021200 00621825 7C63D800 00601021
   8FBF001C 03E00008 27BD0020
   'dir_next
   27BDFFE0 AFBF001C AFB20018 AFB10014 AFB00010 00808821 00A08021 94B20000
   26520001 3252FFFF 12400028 24020003 8CA30010 50600026 8FBF001C 3242000F
   54400021 A6120000 24630001 ACA30010 8CA5000C 14A00007 00121902 94830004
   0243182B 14600017 24020003 10000018 8FBF001C 90820002 2442FFFF 00621024
   54400011 A6120000 0411FFBA 00000000 00402821 2C430002 1460000C 24020001
   8E230008 00A3182B 10600008 24020003 AE05000C 02202021 0411FF39 00000000
   AE020010 A6120000 00001021 8FBF001C 8FB20018 8FB10014 8FB00010 03E00008
   27BD0020
   'dir_find
   27BDFFD8 AFBF0024 AFB30020 AFB2001C AFB10018 AFB00014 00809821 00A08821
   00C09021 0411FF31 00000000 14400021 00408021 96260000 30C6000F 02402021
   8E250010 00063140 24070020 0411FED2 00000000 0002802B 16000017 02001021
   92420000 50400013 24100003 9242000B 30420008 14400008 02602021 02402021
   8E250004 2406000B 0411FE64 00000000 10400008 02602021 02202821 0411FF9F
   00000000 1040FFE3 00408021 10000002 02001021 02001021 8FBF0024 8FB30020
   8FB2001C 8FB10018 8FB00014 03E00008 27BD0028
   'follow_path
   27BDFFE0 AFBF001C AFB20018 AFB10014 AFB00010 00809021 00A08021 AFA7002C
   80E20000 24030020 14430006 00C08821 24E70001 AFA7002C 80E20000 5043FFFD
   24E70001 2403002F 54430004 AE000008 24E70001 AFA7002C AE000008 8FA2002C
   90420000 2C420020 10400008 02002021 02402021 02002821 0411FEE7 00000000
   1000001B A2200000 02002021 27A5002C 0411FF02 00000000 14400015 02402021
   02002821 02203021 0411FFA0 00000000 14400010 8FBF001C 8E030004 9063000B
   5460000D 8FB20018 9222000B 30420010 10400006 02402021 02202821 0411FF28
   00000000 1000FFE8 AE020008 24020003 8FBF001C 8FB20018 8FB10014 8FB00010
   03E00008 27BD0020
   'pf_lseek
   27BDFFD8 AFBF0024 AFB30020 AFB2001C AFB10018 AFB00014 00808021 1080004F
   24020005 90830001 30630001 1060004B 24020004 8C82001C 0045902B 00B2100A
   00409021 8C830018 AC800018 12400043 00001021 90910002 10600012 00118A40
   2463FFFF 2642FFFF 0051001B 022001F4 00001012 0071001B 022001F4 00002012
   0044102B 54400008 8E050020 00111023 00431824 AE030018 02439023 10000003
   8E050024 8E050020 AE050024 0232102B 10400018 00119823 02519023 02002021
   0411FEFC 00000000 00402821 2C420002 54400006 A2000001 8E020008 00A2102B
   54400004 AE050024 A2000001 1000001B 24020001 8E020018 00511021 AE020018
   02531021 00511821 0223182B 5460FFEB 00409021 8E020018 00529021 AE120018
   02002021 0411FE6E 00000000 54400004 92040002 A2000001 10000008 24020001
   2484FFFF 8E030018 00031A42 00831824 00431021 AE020028 00001021 8FBF0024
   8FB30020 8FB2001C 8FB10018 8FB00014 03E00008 27BD0028
   'pf_read
   27BDFFD0 AFBF002C AFB60028 AFB50024 AFB40020 AFB3001C AFB20018 AFB10014
   AFB00010 00808021 00A0A821 00E09821 ACE00000 1080004A 24020005 90830001
   30630001 10600046 24020004 8C92001C 8C820018 02429023 0246102B 00C2900A
   1240003F 00001021 00A0A021 24160200 8E020018 304301FF 5460001F 8E060018
   00021A42 92110002 2631FFFF 00718824 323100FF 1620000E 02002021 54400003
   8E050024 10000003 8E020020 0411FEA3 00000000 2C430002 50600004 AE020024
   A2000001 10000026 24020001 02002021 8E050024 0411FE24 00000000 14400004
   00518821 A2000001 1000001D 24020001 AE110028 8E060018 30C601FF 02C61023
   0052882B 0251100A 00408821 00002021 0295200B 8E050028 00403821 0411FDC9
   00000000 50400004 8E020018 A2000001 1000000B 24020001 00511021 AE020018
   02519023 8E620000 00511021 12400003 AE620000 1000FFC6 0291A021 00001021
   8FBF002C 8FB60028 8FB50024 8FB40020 8FB3001C 8FB20018 8FB10014 8FB00010
   03E00008 27BD0030
   'disk_initialize
   27BDFFD0 AFBF002C AFB30028 AFB20024 AFB10020 AFB0001C 2403003B 3C02BF80
   AC435830 3C029D00 8C430090 8C42001C 80640030 0040F809 24050006 2410000A
   0411FD20 00000000 2610FFFF 321000FF 1600FFFB 24040040 00002821 0411FD4F
   00000000 24030001 14430061 3C029D00 24040048 240501AA 0411FD48 00000000
   24030001 14430037 240400E9 27B00010 27B10014 0411FD0B 00000000 A2020000
   26100001 1611FFFB 93A30012 24020001 1462004E 00008021 93A30013 240200AA
   1462004B 3C029D00 10000008 24112710 0040F809 24040064 2631FFFF 16200005
   240400E9 1000003F 00008021 3C109D00 240400E9 3C054000 0411FD28 00000000
   5440FFF3 8E020004 12200038 00008021 2404007A 00002821 0411FD20 00000000
   14400033 3C029D00 24110004 0411FCE5 00000000 27A40010 00901821 26100001
   1611FFFA A0620000 93B00010 32100040 2402000C 24030004 0070100A 10000023
   00408021 00002821 0411FD0C 00000000 2C420002 24030002 24100001 0062800B
   240300E9 24130041 0062980B 24112710 10000006 3C129D00 0040F809 24040064
   2631FFFF 52200011 00008021 02602021 00002821 0411FCF9 00000000 5440FFF6
   8E420004 52200009 00008021 24040050 24050200 0411FCF1 00000000 10000003
   0002800B 10000002 3C029D00 3C029D00 8C43008C AC7000FC 8C430090 8C42001C
   80640030 0040F809 24050006 0411FCAD 00000000 12000005 3C029D00 8C420090
   8043003C 3C02BF80 AC435830 2E020001 8FBF002C 8FB30028 8FB20024 8FB10020
   8FB0001C 03E00008 27BD0030
   'disk_writep
   27BDFFE0 AFBF001C AFB20018 AFB10014 AFB00010 10800014 00808021 30A5FFFF
   10A00052 00009021 97828010 1040004F 00858821 92040000 26100001 0411FC99
   00000000 97828010 2442FFFF 3042FFFF 12110045 A7828010 5440FFF7 92040000
   10000042 00009021 10A00016 97908010 3C029D00 8C42008C 8C4300FC 30630008
   00051240 24040058 0043280A 0411FCB0 00000000 14400035 24120001 240400FF
   0411FC80 00000000 240400FE 0411FC7D 00000000 24020200 A7828010 1000002B
   00009021 26100002 12000008 2610FFFF 2411FFFF 00002021 0411FC72 00000000
   2610FFFF 1611FFFC 00002021 0411FC62 00000000 3042001F 24030005 14430010
   24120001 10000005 241207D0 0040F809 240403E8 10000003 2652FFFF 241100FF
   3C109D00 0411FC54 00000000 50510004 2E520001 5640FFF5 8E020004 24120001
   3C029D00 8C430090 8C42001C 80640030 0040F809 24050006 0411FC47 00000000
   10000003 02401021 00009021 02401021 8FBF001C 8FB20018 8FB10014 8FB00010
   03E00008 27BD0020
   'pf_write
   27BDFFD0 AFBF002C AFB60028 AFB50024 AFB40020 AFB3001C AFB20018 AFB10014
   AFB00010 00808021 00C09021 00E09821 ACE00000 1080007B 24020005 90830001
   30640001 10800077 24020004 14C00010 30630040 5060000A 92020001 00002021
   00002821 0411FF84 00000000 50400004 92020001 A2000001 1000006A 24020001
   304200BF A2020001 10000066 00001021 54600006 8E03001C 8E030018 2402FE00
   00621024 AE020018 8E03001C 8E020018 00621023 0052182B 14600005 00000000
   00A0A021 24150200 10000005 2416FFBF 1440FFFB 00409021 10000053 8FBF002C
   8E020018 304301FF 54600029 8E110018 00021A42 92110002 2631FFFF 00718824
   323100FF 1620000E 02002021 54400003 8E050024 10000003 8E020020 0411FD30
   00000000 2C430002 50600004 AE020024 A2000001 1000003B 24020001 02002021
   8E050024 0411FCB1 00000000 14400004 00512821 A2000001 10000032 24020001
   AE050028 00002021 0411FF43 00000000 50400004 92020001 A2000001 10000029
   24020001 34420040 A2020001 8E110018 323101FF 02B18823 0232102B 0242880A
   02802021 02202821 0411FF33 00000000 50400004 8E020018 A2000001 10000019
   24020001 00511021 AE020018 8E620000 00511021 AE620000 8E020018 304201FF
   5440000D 02519023 00002021 00002821 0411FF21 00000000 50400004 92020001
   A2000001 10000007 24020001 00561024 A2020001 02519023 1640FFB1 0291A021
   00001021 8FBF002C 8FB60028 8FB50024 8FB40020 8FB3001C 8FB20018 8FB10014
   8FB00010 03E00008 27BD0030
   'check_fs
   27BDFFE0 AFBF001C AFB10018 AFB00014 00808021 00A08821 240601FE 24070002
   0411FC1E 00000000 14400028 24030003 92040001 00042200 92020000 00822025
   7C042620 2402AA55 14820020 24030002 02002021 02202821 24060036 24070002
   0411FC0E 00000000 1440000A 02002021 92040001 00042200 92020000 00822025
   7C042620 24024146 10820010 00001821 02002021 02202821 24060052 24070002
   0411FBFE 00000000 14400008 24030001 92030001 00031A00 92020000 00621825
   7C031E20 38634146 0003182B 00601021 8FBF001C 8FB10018 8FB00014 03E00008
   27BD0020
   'pf_mount
   27BDFFB8 AFBF0044 AFB10040 AFB0003C 00808021 0411FE39 00000000 30420001
   14400087 24030002 27A40010 00002821 0411FFBA 00000000 24030001 1443001A
   00008821 27A40010 00002821 240601BE 24070010 0411FBD8 00000000 14400078
   24030001 93A20014 10400075 24030006 93B1001B 00118E00 93A2001A 00021400
   02228825 93A20018 02228825 93A20019 00021200 02228825 27A40010 02202821
   0411FF9E 00000000 24040003 10440064 24030001 14400062 24030006 27A40010
   02202821 2406000D 24070024 0411FBBA 00000000 1440005A 24030001 93A2001A
   00021200 93A30019 00431025 1440000C 93A30013 93A3002A 00031E00 93A20029
   00021400 00621025 93A30027 00431025 93A30028 00031A00 00431025 93A30013
   70431002 93A60012 00063200 93A30011 00C33025 02268821 AE11000C 93A50010
   A2050002 93A40015 00042200 93A30014 00832025 A6040004 93A30017 00031A00
   93A70016 00671825 1460000B 00042102 93A70026 00073E00 93A30025 00031C00
   00E31825 93A70023 00671825 93A70024 00073A00 00671825 00661823 00621823
   00641823 0065001B 00A001F4 00003012 24C50002 AE050008 24C6F00A 3407EFFF
   00C7302B 2CA70FF7 24030002 0066380B 3403FFF7 00A3282B 10A0001F 24030003
   10E00017 24030006 24030003 14E3000D A2070000 93A50032 00052E00 93A30031
   00031C00 00A32825 93A3002F 00A32825 93A30030 00031A00 00A31825 10000003
   AE030010 00511821 AE030010 02248821 02221021 AE020014 A2000001 00001821
   00601021 8FBF0044 8FB10040 8FB0003C 03E00008 27BD0048 1000FFE6 A2030000
   'pf_open
   27BDFFA0 AFBF005C AFB10058 AFB00054 00808821 00A03821 10800025 24100005
   A0800001 27A20024 AFA20014 27A50010 27A60030 0411FC97 00000000 1440001C
   00408021 93A20030 10400018 93A2003B 30420010 54400016 24100003 02202021
   27A50030 0411FBEB 00000000 AE220020 93A3004F 00031E00 93A2004E 00021400
   00621025 93A3004C 00431025 93A3004D 00031A00 00431025 AE22001C AE200018
   24020001 10000002 A2220001 24100003 02001021 8FBF005C 8FB10058 8FB00054
   03E00008 27BD0060
   'pf_opendir
   27BDFFB0 AFBF004C AFB10048 AFB00044 00808021 00A08821 00C03821 10800018
   24020005 27A20010 ACA20004 27A6001C 0411FC66 00000000 14400012 8FBF004C
   93A2001C 1040000B 02002021 93A30027 30630010 1060000A 24020003 02002021
   27A5001C 0411FBB9 00000000 AE220008 02002021 02202821 0411FB5A 00000000
   8FBF004C 8FB10048 8FB00044 03E00008 27BD0050
   'get_fileinfo
   8C830010 10600036 24C20009 90A30000 24040020 1064000E 00A02021 244A0008
   24090005 240800E5 10000003 240B0020 106B0007 24840001 00693826 0107180A
   A0430000 24420001 544AFFF9 90830001 90A40008 24030020 1083000A 2403002E
   A0430000 90A30008 24040020 1464001E 24420001 10000004 90A3000B A0430000
   24420001 90A3000B A0C30008 90A4001F 00042600 90A3001E 00031C00 00831825
   90A4001C 00641825 90A4001D 00042200 00641825 ACC30000 90A30019 00031A00
   90A40018 00641825 A4C30004 90A30017 00031A00 90A40016 00641825 A4C30006
   03E00008 A0400000 A0430000 90A30009 24040020 1064FFE3 24420001 A0430000
   90A3000A 1464FFDD 24420001 1000FFDE 90A3000B
   'dir_read
   27BDFFD8 AFBF0024 AFB40020 AFB3001C AFB20018 AFB10014 AFB00010 00809821
   00A08021 00C08821 24020003 241200E5 10000019 2414002E 30C6000F 02202021
   00063140 24070020 0411FAA7 00000000 0002102B 54400016 AE000010 92230000
   50600012 24020003 10720005 9224000B 10740003 30840008 1080000E 8FBF0024
   02602021 02002821 0411FB78 00000000 54400007 AE000010 8E050010 54A0FFE6
   96060000 10400003 8FBF0024 AE000010 8FBF0024 8FB40020 8FB3001C 8FB20018
   8FB10014 8FB00010 03E00008 27BD0028
   'pf_readdir
   27BDFFB0 AFBF004C AFB20048 AFB10044 AFB00040 00808821 00A08021 00C09021
   1080001B 24020005 27A20010 14C00005 ACA20004 0411FACD 00000000 10000015
   8FBF004C 27A6001C 0411FFB9 00000000 24030003 10430004 02002021 1440000D
   8FBF004C 02002021 27A5001C 02403021 0411FF6A 00000000 02202021 02002821
   0411FB46 00000000 38430003 0003100A 8FBF004C 8FB20048 8FB10044 8FB00040
   03E00008 27BD0050
   'getFPC
   27BDFFF8 AFBF0004 00852023 03E42021 ACC40000 8FBF0004 03E00008 27BD0008
   'errstring
   27BDFFE0 AFBF001C AFB00018 00808021 00002021 3C059D00 24A518D0 27A60010
   0411FFEF 00000000 8FA20010 1200003C 24030001 16030006 24030002 8FA30010
   3C049D00 24842544 10000012 00832021 56030006 3C049D00 8FA30010 3C049D00
   24842554 10000013 00832021 24842534 00822021 24020003 16020007 24020004
   8FA30010 3C049D00 24842560 10000011 00832021 24020004 16020007 24020005
   8FA30010 3C049D00 2484256C 10000011 00832021 24020005 16020007 24020006
   8FA30010 3C049D00 2484257C 10000010 00832021 24020006 16020007 24020007
   8FA30010 3C049D00 2484258C 10000008 00832021 24020007 16020006 3C029D00
   8FA30010 3C049D00 248425A0 00832021 3C029D00 8C4200BC 0040F809 00000000
   8FBF001C 8FB00018 03E00008 27BD0020
   'main
   27BDFFA8 AFBF0054 AFBE0050 AFB7004C AFB60048 AFB50044 AFB40040 AFB3003C
   AFB20038 AFB10034 AFB00030 00808021 00A08821 00C0A821 00E09821 3C02BF80
   8C455830 3C039D00 8C64008C AC850044 8C455800 8C64008C AC850048 8C455840
   8C64008C AC85004C 34048260 AC445800 24040C00 AC445840 8C640090 8084003C
   AC445830 8C72008C 26540050 8E060000 24020001 10C20006 26570078 24020006
   10C20003 24020007 14C20006 24020004 82250000 04A10007 00001021 1000000F
   03A52821 14C2001A 24020007 1000FFF9 82250000 27A40010 00821821 02222021
   90840000 A0640000 24420001 00A2182A 1060FFF9 27A40010 03A52821 24020006
   14C20005 A0A00011 3C029D00 8C4200C4 0040F809 00000000 8E060000 24020001
   10C20007 24020006 10C20005 24020007 10C20003 24020004 54C200CB 8E030000
   3C029D00 8C430090 80640030 8C430088 00041080 00431021 8C430000 24020065
   10620003 24040007 0411FF59 00000000 3C02BF81 8C44F220 7C84D800 3C030661
   3463A053 1083000B 24020050 3C02BF81 8C43F220 7C63D800 3C020660 3442A053
   00621026 24030050 2404000C 0082180B 00601021 3C039D00 8C630088 00431021
   8C430000 24020065 10620084 3C029D00 8C420010 3C03BF81 8C65F220 7CA5D800
   3C030661 3463A053 10A3000B 24040014 3C03BF81 8C64F220 7C84D800 3C030660
   3463A053 00832026 24030014 24050003 00A4180B 00602021 24050008 0040F809
   00003021 3C029D00 8C420010 3C03BF81 8C65F220 7CA5D800 3C030661 3463A053
   10A3000B 24040014 3C03BF81 8C64F220 7C84D800 3C030660 3463A053 00832026
   24030014 24050003 00A4180B 00602021 24050064 0040F809 00003021 3C029D00
   8C420010 3C03BF81 8C65F220 7CA5D800 3C030661 3463A053 10A3000B 24040029
   3C03BF81 8C64F220 7C84D800 3C030660 3463A053 00832026 24030029 2405000E
   00A4180B 00602021 24050002 0040F809 00003021 3C029D00 8C420010 3C03BF81
   8C65F220 7CA5D800 3C030661 3463A053 10A3000B 24040029 3C03BF81 8C64F220
   7C84D800 3C030660 3463A053 00832026 24030029 2405000E 00A4180B 00602021
   24050064 0040F809 00003021 3C029D00 8C420010 3C03BF81 8C65F220 7CA5D800
   3C030661 3463A053 10A3000B 2404000E 3C03BF81 8C64F220 7C84D800 3C030660
   3463A053 00832026 2403000E 24050019 00A4180B 00602021 24050008 0040F809
   00003021 3C029D00 8C420010 3C03BF81 8C65F220 7CA5D800 3C030661 3463A053
   10A3000B 2404000E 3C03BF81 8C64F220 7C84D800 3C030660 3463A053 00832026
   2403000E 24050019 00A4180B 00602021 24050064 0040F809 00003021 3C02BF81
   8C43FA84 24160001 7EC31804 AC43FA84 3C02BF81 8C43FB04 24040003 7C831804
   AC43FB04 3C02BF80 34038260 AC435800 24030C00 AC435840 3C029D00 8C42008C
   AC4000F8 02802021 0411FD0F 00000000 00402021 0411FEA6 00000000 8E020000
   54560009 8E030000 02802021 27A50011 0411FD9D 00000000 00402021 0411FE9C
   00000000 8E030000 24020002 54620022 8E030000 8EA50000 04A00006 02802021
   0411FA78 00000000 00402021 0411FE90 00000000 8E660000 28C20100 1040000B
   02802021 26250001 27A70020 0411FACB 00000000 00402021 0411FE85 00000000
   8FA20020 10000008 A2220000 02202821 27A70020 0411FAC1 00000000 00402021
   0411FE7B 00000000 8FA30020 8FA20068 AC430000 8E030000 24020003 5462007B
   8E030000 8EA20000 04410005 3C029D00 8C42008C 8C4200F8 AEA20000 3C029D00
   8C42008C 8C4400F8 8E630000 00831821 AC4300F8 8EB60000 241EFE00 02DEF024
   02802021 03C02821 0411FA46 00000000 00402021 0411FE5E 00000000 8E660000
   28C20100 02221021 AFA2002C 8EA20000 105E004C 32D601FF AFB60028 3C029D00
   8C420040 0040F809 24040200 0040B021 02802021 00402821 24060200 27A70020
   0411FA8E 00000000 00402021 0411FE48 00000000 02802021 03C02821 0411FA29
   00000000 00402021 0411FE41 00000000 8E650000 8FA20028 00452821 2CA20201
   14400003 0000F021 24BEFE00 24050200 8FA30028 0065102A 10400009 8FA3002C
   8FA40028 02C41021 02C52821 90640000 A0440000 24420001 1445FFFC 24630001
   02802021 02C02821 8FA60020 27A70020 0411FBC1 00000000 00402021 0411FE24
   00000000 13C0000D 02802021 8E650000 00BE2823 8FA2002C 00452821 03C03021
   27A70020 0411FBB4 00000000 00402021 0411FE17 00000000 02802021 00002821
   00003021 27A70020 0411FBAB 00000000 00402021 0411FE0E 00000000 10000013
   8E030000 02802021 8FA5002C 27A70020 0411FBA1 00000000 00402021 0411FE04
   00000000 02802021 00002821 00003021 27A70020 0411FB98 00000000 00402021
   0411FDFB 00000000 8E030000 24020004 5462000A 8E030000 02802021 02E02821
   27A60011 0411FD22 00000000 00402021 0411FDEF 00000000 8E030000 24020005
   5462003C 8E030000 265200A0 02802021 02E02821 02403021 0411FDB3 00000000
   00402021 0411FDE2 00000000 92430008 24020016 5462000A 82420009 02802021
   02E02821 02403021 0411FDA7 00000000 00402021 0411FDD6 00000000 82420009
   50400023 A2200000 92420008 30420010 54400006 2402003C 24130001 02331821
   00001021 1000000C 2405000C A2220001 24020044 A2220002 24020069 A2220003
   24020072 A2220004 2402003E A2220005 1000FFF2 24130006 02422021 90840009
   A0640000 24420001 1445FFFB 24630001 2402000C AFA20020 26440009 0411F7B6
   00000000 2673FFFF 02629821 A2330000 8E030000 24020006 5462003E 8E030000
   3C029D00 8C420040 0040F809 3404C800 0040B821 02802021 27A50011 0411FCA2
   00000000 00402021 0411FDA1 00000000 02802021 00002821 0411F982 00000000
   00402021 0411FD9A 00000000 02E09021 0000B021 24130001 02802021 02402821
   24060080 27A70020 0411F9D4 00000000 00402021 0411FD8E 00000000 8FA30020
   1860000E 00001021 02421821 80630000 54600006 24420001 52600004 24420001
   AFA20020 00009821 24420001 8FA30020 0043202A 5480FFF5 02421821 24020080
   14620003 02C3B021 1000FFE3 26520080 02F6B021 A2C00000 A2C00001 3C029D00
   8C4200B8 02E02021 0040F809 00002821 8E030000 24020007 5462004D 8E020000
   02802021 27A50011 0411FC67 00000000 00402021 0411FD66 00000000 02802021
   00002821 0411F947 00000000 00402021 0411FD5F 00000000 3C129D00 8E420040
   0040F809 24040100 00409821 8E5600C0 24120001 3C179D00 1000001D 241E000D
   1452FFFF 02602021 8EE200C8 0040F809 02C02821 0040B021 02602021 0411F74E
   00000000 02621821 A07E0000 2404000A A0640001 02802021 02602821 24460002
   27A70020 0411FADC 00000000 00402021 0411FD3F 00000000 82C20000 14400005
   00000000 82C20001 50400005 A2600000 82C20000 1440FFE2 00000000 A2600000
   A2600001 02802021 02602821 24060002 27A70020 0411FAC8 00000000 00402021
   0411FD2B 00000000 02802021 00002821 00003021 27A70020 0411FABF 00000000
   00402021 0411FD22 00000000 8E020000 1440002D 3C029D00 8C420090 92230000
   12A00006 A0430030 3C029D00 8C420090 8EA30000 10000005 A043003C 3C029D00
   8C420090 24030002 A043003C 3C029D00 8C430090 80640030 8C420088 00041880
   00621021 8C430000 24020065 1062000B 3C109D00 8E020010 24050008 0040F809
   00003021 8E030090 8E020010 80640030 24050065 0040F809 00003021 3C109D00
   8E030090 8E02001C 80640030 0040F809 2405FFFD 8E030090 8E02001C 80640030
   0040F809 24050006 3C029D00 8C43008C 8C640044 3C02BF80 AC445830 8C640048
   AC445800 8C63004C AC435840 8FBF0054 8FBE0050 8FB7004C 8FB60048 8FB50044
   8FB40040 8FB3003C 8FB20038 8FB10034 8FB00030 03E00008 27BD0058
   '.rodata
   'err0
   6E6B6E55 206E776F 6F727265 000A0D72
   'err1
   6B736944 72724520 0A0D726F 00000000
   'err2
   20746F4E 64616552 000A0D79
   'err3
   46206F4E 0D656C69 0000000A 20746F4E 6E65704F 0A0D6465 00000000 20746F4E
   62616E45 0D64656C 0000000A 46206F4E 20656C69 74737953 0A0D6D65 00000000
   20746F4E 6E756F6D 0D646574 0000000A
end csub


When I insert the SD card the Micromite is reset - immediately afterwards I get:

[19] SDcard opendir,""
Error: Disk Error

or less often:

[19] SDcard opendir,""
Error: Not Ready

What am I doing wrong?

Frank
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 8517
Posted: 01:00pm 15 Jan 2020
Copy link to clipboard 
Print this post

Just tested on a new install of 5.05.02 on a MM2 using pin 2 as CS and SPI1 and works fine.

Start simply.
NEW
LIBRARY CLEAR
Load the attached - just to make sure it is the correct version
LIBRARY SAVE
CPU RESTART

Then try and open a file at the command prompt. Remember long filenames are not supported.

SDCARD 1,"myfile.tst"

You should get the command prompt without error message indicating all is well

DIM S$
SDCARD 2,S$,0,40,a%
? s$ 'print first 40 chars of file
? a% 'print # of chars actually read

Things to try:
Different SDCARDs
Remove Pullup resistors on card module if fitted
Fit 10K Pullup resistors on all signal pins if not fitted
attach 10uF cap + 0.1uF cap directly across power pins on card module
feed power to module through a 2R2 resistor


sub mm.startup
' include initialisation for display driver here if required
 sdcard 0,2 'set up the chip select pin for the SDcard
end sub
sub load(f$)
 sdcard 6,f$
end
end sub
sub save(f$)
 sdcard 7,f$
end sub
Csub SDcard 'SPI1 version 2.04
   00000676
   'rcv_spi
   240300FF 3C02BF80 AC435820 3C03BF80 8C625810 30420080 1040FFFD 3C02BF80
   8C425820 03E00008 304200FF
   'xmit_spi
   308400FF 3C02BF80 AC445820 3C03BF80 8C625810 30420080 1040FFFD 3C02BF80
   8C425820 03E00008 304200FF
   'mem_set
   10C00006 00801021 00862021 A0450000 24420001 5444FFFE A0450000 03E00008
   00000000
   'mem_cmp
   2407FFFF 24C6FFFF 10C70008 00001021 80830000 80A20000 00621023 14400003
   24840001 1000FFF7 24A50001 03E00008 00000000
   'mystrlen
   80830000 10600006 00001021 24420001 00821821 80630000 5460FFFD 24420001
   03E00008 00000000
   'send_cmd
   27BDFFE0 AFBF001C AFB20018 AFB10014 AFB00010 309100FF 7C111420 04410009
   00A09021 24040077 00002821 0411FFF4 00000000 2C430002 10600034 8FBF001C
   3231007F 3C109D00 8E030090 8E02001C 80640030 0040F809 24050006 0411FFB2
   00000000 8E030090 8E02001C 80640030 0040F809 24050005 0411FFAB 00000000
   02202021 0411FFB3 00000000 00122602 0411FFB0 00000000 7E443C00 0411FFAD
   00000000 7E443A00 0411FFAA 00000000 324400FF 0411FFA7 00000000 24020040
   12220006 24040095 3A310048 24020001 24030087 00402021 0071200A 0411FF9D
   00000000 2410000A 0411FF8F 00000000 7C021C20 04610004 2610FFFF 321000FF
   1600FFF9 00000000 8FBF001C 8FB20018 8FB10014 8FB00010 03E00008 27BD0020
   'disk_readp
   27BDFFD8 AFBF0024 AFB40020 AFB3001C AFB20018 AFB10014 AFB00010 00809021
   00C09821 00E0A021 3C029D00 8C42008C 8C4300FC 30630008 00051240 24040051
   0043280A 0411FFA6 00000000 14400024 24100001 34109C40 241100FF 0411FF6A
   00000000 14510005 2610FFFF 1600FFFB 00000000 1000001A 24100001 240300FE
   14430017 24100001 00138823 26310202 12600006 02348823 0411FF5B 00000000
   2673FFFF 1660FFFC 00000000 02548021 0411FF55 00000000 A2420000 26520001
   1650FFFB 00000000 0411FF4F 00000000 2631FFFF 1620FFFC 00000000 00008021
   3C029D00 8C430090 8C42001C 80640030 0040F809 24050006 0411FF43 00000000
   02001021 8FBF0024 8FB40020 8FB3001C 8FB20018 8FB10014 8FB00010 03E00008
   27BD0028
   'clust2sect
   24A5FFFE 8C830008 2463FFFE 00A3182B 10600005 00001021 90830002 8C820014
   70A32002 00821021 03E00008 00000000
   'dir_rewind
   27BDFFE8 AFBF0014 AFB00010 00A08021 A4A00000 8CA50008 24030001 10A30015
   24020001 8C830008 00A3182B 50600012 8FBF0014 54A00008 AE05000C 90830000
   24020003 54620008 AE00000C 8C850010 10A00005 AE05000C 0411FFDD 00000000
   10000003 AE020010 8C820010 AE020010 00001021 8FBF0014 8FB00010 03E00008
   27BD0018
   'create_name
   27BDFFE0 AFBF001C AFB10018 AFB00014 00A08021 8C910004 02202021 24050020
   2406000B 0411FF18 00000000 8E080000 00002021 00001821 24070008 2409002F
   2406002E 240A0008 01031021 90420000 24630001 2C450021 14A00018 306300FF
   50490017 01031821 10460003 0087282B 14A00008 2445FF9F 54EA0011 01031821
   5446000F 01031821 01402021 1000FFEE 2407000B 30A500FF 2CA5001A 10A00003
   02242821 2442FFE0 304200FF A0A20000 24840001 1000FFE4 308400FF 01031821
   AE030000 2C420021 A222000B 00001021 8FBF001C 8FB10018 8FB00014 03E00008
   27BD0020
   'get_clust
   90840000 24020003 14820006 00001821 90A30015 00031A00 90A20014 00621825
   00031C00 90A2001B 00021200 90A4001A 00441025 03E00008 00621025
   'get_fat
   27BDFFE0 AFBF001C 2CA20002 1440001B 24030001 8C820008 00A2102B 10400018
   00601021 000519C2 8C82000C 30A6007F 27A40010 00622821 00063080 24070004
   0411FF31 00000000 1440000C 24030001 93A30013 00031E00 93A20012 00021400
   00621825 93A20010 00621825 93A20011 00021200 00621825 7C63D800 00601021
   8FBF001C 03E00008 27BD0020
   'dir_next
   27BDFFE0 AFBF001C AFB20018 AFB10014 AFB00010 00808821 00A08021 94B20000
   26520001 3252FFFF 12400028 24020003 8CA30010 50600026 8FBF001C 3242000F
   54400021 A6120000 24630001 ACA30010 8CA5000C 14A00007 00121902 94830004
   0243182B 14600017 24020003 10000018 8FBF001C 90820002 2442FFFF 00621024
   54400011 A6120000 0411FFBA 00000000 00402821 2C430002 1460000C 24020001
   8E230008 00A3182B 10600008 24020003 AE05000C 02202021 0411FF39 00000000
   AE020010 A6120000 00001021 8FBF001C 8FB20018 8FB10014 8FB00010 03E00008
   27BD0020
   'dir_find
   27BDFFD8 AFBF0024 AFB30020 AFB2001C AFB10018 AFB00014 00809821 00A08821
   00C09021 0411FF31 00000000 14400021 00408021 96260000 30C6000F 02402021
   8E250010 00063140 24070020 0411FED2 00000000 0002802B 16000017 02001021
   92420000 50400013 24100003 9242000B 30420008 14400008 02602021 02402021
   8E250004 2406000B 0411FE64 00000000 10400008 02602021 02202821 0411FF9F
   00000000 1040FFE3 00408021 10000002 02001021 02001021 8FBF0024 8FB30020
   8FB2001C 8FB10018 8FB00014 03E00008 27BD0028
   'follow_path
   27BDFFE0 AFBF001C AFB20018 AFB10014 AFB00010 00809021 00A08021 AFA7002C
   80E20000 24030020 14430006 00C08821 24E70001 AFA7002C 80E20000 5043FFFD
   24E70001 2403002F 54430004 AE000008 24E70001 AFA7002C AE000008 8FA2002C
   90420000 2C420020 10400008 02002021 02402021 02002821 0411FEE7 00000000
   1000001B A2200000 02002021 27A5002C 0411FF02 00000000 14400015 02402021
   02002821 02203021 0411FFA0 00000000 14400010 8FBF001C 8E030004 9063000B
   5460000D 8FB20018 9222000B 30420010 10400006 02402021 02202821 0411FF28
   00000000 1000FFE8 AE020008 24020003 8FBF001C 8FB20018 8FB10014 8FB00010
   03E00008 27BD0020
   'pf_lseek
   27BDFFD8 AFBF0024 AFB30020 AFB2001C AFB10018 AFB00014 00808021 1080004F
   24020005 90830001 30630001 1060004B 24020004 8C82001C 0045902B 00B2100A
   00409021 8C830018 AC800018 12400043 00001021 90910002 10600012 00118A40
   2463FFFF 2642FFFF 0051001B 022001F4 00001012 0071001B 022001F4 00002012
   0044102B 54400008 8E050020 00111023 00431824 AE030018 02439023 10000003
   8E050024 8E050020 AE050024 0232102B 10400018 00119823 02519023 02002021
   0411FEFC 00000000 00402821 2C420002 54400006 A2000001 8E020008 00A2102B
   54400004 AE050024 A2000001 1000001B 24020001 8E020018 00511021 AE020018
   02531021 00511821 0223182B 5460FFEB 00409021 8E020018 00529021 AE120018
   02002021 0411FE6E 00000000 54400004 92040002 A2000001 10000008 24020001
   2484FFFF 8E030018 00031A42 00831824 00431021 AE020028 00001021 8FBF0024
   8FB30020 8FB2001C 8FB10018 8FB00014 03E00008 27BD0028
   'pf_read
   27BDFFD0 AFBF002C AFB60028 AFB50024 AFB40020 AFB3001C AFB20018 AFB10014
   AFB00010 00808021 00A0A821 00E09821 ACE00000 1080004A 24020005 90830001
   30630001 10600046 24020004 8C92001C 8C820018 02429023 0246102B 00C2900A
   1240003F 00001021 00A0A021 24160200 8E020018 304301FF 5460001F 8E060018
   00021A42 92110002 2631FFFF 00718824 323100FF 1620000E 02002021 54400003
   8E050024 10000003 8E020020 0411FEA3 00000000 2C430002 50600004 AE020024
   A2000001 10000026 24020001 02002021 8E050024 0411FE24 00000000 14400004
   00518821 A2000001 1000001D 24020001 AE110028 8E060018 30C601FF 02C61023
   0052882B 0251100A 00408821 00002021 0295200B 8E050028 00403821 0411FDC9
   00000000 50400004 8E020018 A2000001 1000000B 24020001 00511021 AE020018
   02519023 8E620000 00511021 12400003 AE620000 1000FFC6 0291A021 00001021
   8FBF002C 8FB60028 8FB50024 8FB40020 8FB3001C 8FB20018 8FB10014 8FB00010
   03E00008 27BD0030
   'disk_initialize
   27BDFFD0 AFBF002C AFB30028 AFB20024 AFB10020 AFB0001C 2403003B 3C02BF80
   AC435830 3C029D00 8C430090 8C42001C 80640030 0040F809 24050006 2410000A
   0411FD20 00000000 2610FFFF 321000FF 1600FFFB 24040040 00002821 0411FD4F
   00000000 24030001 14430061 3C029D00 24040048 240501AA 0411FD48 00000000
   24030001 14430037 240400E9 27B00010 27B10014 0411FD0B 00000000 A2020000
   26100001 1611FFFB 93A30012 24020001 1462004E 00008021 93A30013 240200AA
   1462004B 3C029D00 10000008 24112710 0040F809 24040064 2631FFFF 16200005
   240400E9 1000003F 00008021 3C109D00 240400E9 3C054000 0411FD28 00000000
   5440FFF3 8E020004 12200038 00008021 2404007A 00002821 0411FD20 00000000
   14400033 3C029D00 24110004 0411FCE5 00000000 27A40010 00901821 26100001
   1611FFFA A0620000 93B00010 32100040 2402000C 24030004 0070100A 10000023
   00408021 00002821 0411FD0C 00000000 2C420002 24030002 24100001 0062800B
   240300E9 24130041 0062980B 24112710 10000006 3C129D00 0040F809 24040064
   2631FFFF 52200011 00008021 02602021 00002821 0411FCF9 00000000 5440FFF6
   8E420004 52200009 00008021 24040050 24050200 0411FCF1 00000000 10000003
   0002800B 10000002 3C029D00 3C029D00 8C43008C AC7000FC 8C430090 8C42001C
   80640030 0040F809 24050006 0411FCAD 00000000 12000005 3C029D00 8C420090
   8043003C 3C02BF80 AC435830 2E020001 8FBF002C 8FB30028 8FB20024 8FB10020
   8FB0001C 03E00008 27BD0030
   'disk_writep
   27BDFFE0 AFBF001C AFB20018 AFB10014 AFB00010 10800014 00808021 30A5FFFF
   10A00052 00009021 97828010 1040004F 00858821 92040000 26100001 0411FC99
   00000000 97828010 2442FFFF 3042FFFF 12110045 A7828010 5440FFF7 92040000
   10000042 00009021 10A00016 97908010 3C029D00 8C42008C 8C4300FC 30630008
   00051240 24040058 0043280A 0411FCB0 00000000 14400035 24120001 240400FF
   0411FC80 00000000 240400FE 0411FC7D 00000000 24020200 A7828010 1000002B
   00009021 26100002 12000008 2610FFFF 2411FFFF 00002021 0411FC72 00000000
   2610FFFF 1611FFFC 00002021 0411FC62 00000000 3042001F 24030005 14430010
   24120001 10000005 241207D0 0040F809 240403E8 10000003 2652FFFF 241100FF
   3C109D00 0411FC54 00000000 50510004 2E520001 5640FFF5 8E020004 24120001
   3C029D00 8C430090 8C42001C 80640030 0040F809 24050006 0411FC47 00000000
   10000003 02401021 00009021 02401021 8FBF001C 8FB20018 8FB10014 8FB00010
   03E00008 27BD0020
   'pf_write
   27BDFFD0 AFBF002C AFB60028 AFB50024 AFB40020 AFB3001C AFB20018 AFB10014
   AFB00010 00808021 00C09021 00E09821 ACE00000 1080007B 24020005 90830001
   30640001 10800077 24020004 14C00010 30630040 5060000A 92020001 00002021
   00002821 0411FF84 00000000 50400004 92020001 A2000001 1000006A 24020001
   304200BF A2020001 10000066 00001021 54600006 8E03001C 8E030018 2402FE00
   00621024 AE020018 8E03001C 8E020018 00621023 0052182B 14600005 00000000
   00A0A021 24150200 10000005 2416FFBF 1440FFFB 00409021 10000053 8FBF002C
   8E020018 304301FF 54600029 8E110018 00021A42 92110002 2631FFFF 00718824
   323100FF 1620000E 02002021 54400003 8E050024 10000003 8E020020 0411FD30
   00000000 2C430002 50600004 AE020024 A2000001 1000003B 24020001 02002021
   8E050024 0411FCB1 00000000 14400004 00512821 A2000001 10000032 24020001
   AE050028 00002021 0411FF43 00000000 50400004 92020001 A2000001 10000029
   24020001 34420040 A2020001 8E110018 323101FF 02B18823 0232102B 0242880A
   02802021 02202821 0411FF33 00000000 50400004 8E020018 A2000001 10000019
   24020001 00511021 AE020018 8E620000 00511021 AE620000 8E020018 304201FF
   5440000D 02519023 00002021 00002821 0411FF21 00000000 50400004 92020001
   A2000001 10000007 24020001 00561024 A2020001 02519023 1640FFB1 0291A021
   00001021 8FBF002C 8FB60028 8FB50024 8FB40020 8FB3001C 8FB20018 8FB10014
   8FB00010 03E00008 27BD0030
   'check_fs
   27BDFFE0 AFBF001C AFB10018 AFB00014 00808021 00A08821 240601FE 24070002
   0411FC1E 00000000 14400028 24030003 92040001 00042200 92020000 00822025
   7C042620 2402AA55 14820020 24030002 02002021 02202821 24060036 24070002
   0411FC0E 00000000 1440000A 02002021 92040001 00042200 92020000 00822025
   7C042620 24024146 10820010 00001821 02002021 02202821 24060052 24070002
   0411FBFE 00000000 14400008 24030001 92030001 00031A00 92020000 00621825
   7C031E20 38634146 0003182B 00601021 8FBF001C 8FB10018 8FB00014 03E00008
   27BD0020
   'pf_mount
   27BDFFB8 AFBF0044 AFB10040 AFB0003C 00808021 0411FE39 00000000 30420001
   14400087 24030002 27A40010 00002821 0411FFBA 00000000 24030001 1443001A
   00008821 27A40010 00002821 240601BE 24070010 0411FBD8 00000000 14400078
   24030001 93A20014 10400075 24030006 93B1001B 00118E00 93A2001A 00021400
   02228825 93A20018 02228825 93A20019 00021200 02228825 27A40010 02202821
   0411FF9E 00000000 24040003 10440064 24030001 14400062 24030006 27A40010
   02202821 2406000D 24070024 0411FBBA 00000000 1440005A 24030001 93A2001A
   00021200 93A30019 00431025 1440000C 93A30013 93A3002A 00031E00 93A20029
   00021400 00621025 93A30027 00431025 93A30028 00031A00 00431025 93A30013
   70431002 93A60012 00063200 93A30011 00C33025 02268821 AE11000C 93A50010
   A2050002 93A40015 00042200 93A30014 00832025 A6040004 93A30017 00031A00
   93A70016 00671825 1460000B 00042102 93A70026 00073E00 93A30025 00031C00
   00E31825 93A70023 00671825 93A70024 00073A00 00671825 00661823 00621823
   00641823 0065001B 00A001F4 00003012 24C50002 AE050008 24C6F00A 3407EFFF
   00C7302B 2CA70FF7 24030002 0066380B 3403FFF7 00A3282B 10A0001F 24030003
   10E00017 24030006 24030003 14E3000D A2070000 93A50032 00052E00 93A30031
   00031C00 00A32825 93A3002F 00A32825 93A30030 00031A00 00A31825 10000003
   AE030010 00511821 AE030010 02248821 02221021 AE020014 A2000001 00001821
   00601021 8FBF0044 8FB10040 8FB0003C 03E00008 27BD0048 1000FFE6 A2030000
   'pf_open
   27BDFFA0 AFBF005C AFB10058 AFB00054 00808821 00A03821 10800025 24100005
   A0800001 27A20024 AFA20014 27A50010 27A60030 0411FC97 00000000 1440001C
   00408021 93A20030 10400018 93A2003B 30420010 54400016 24100003 02202021
   27A50030 0411FBEB 00000000 AE220020 93A3004F 00031E00 93A2004E 00021400
   00621025 93A3004C 00431025 93A3004D 00031A00 00431025 AE22001C AE200018
   24020001 10000002 A2220001 24100003 02001021 8FBF005C 8FB10058 8FB00054
   03E00008 27BD0060
   'pf_opendir
   27BDFFB0 AFBF004C AFB10048 AFB00044 00808021 00A08821 00C03821 10800018
   24020005 27A20010 ACA20004 27A6001C 0411FC66 00000000 14400012 8FBF004C
   93A2001C 1040000B 02002021 93A30027 30630010 1060000A 24020003 02002021
   27A5001C 0411FBB9 00000000 AE220008 02002021 02202821 0411FB5A 00000000
   8FBF004C 8FB10048 8FB00044 03E00008 27BD0050
   'get_fileinfo
   8C830010 10600036 24C20009 90A30000 24040020 1064000E 00A02021 244A0008
   24090005 240800E5 10000003 240B0020 106B0007 24840001 00693826 0107180A
   A0430000 24420001 544AFFF9 90830001 90A40008 24030020 1083000A 2403002E
   A0430000 90A30008 24040020 1464001E 24420001 10000004 90A3000B A0430000
   24420001 90A3000B A0C30008 90A4001F 00042600 90A3001E 00031C00 00831825
   90A4001C 00641825 90A4001D 00042200 00641825 ACC30000 90A30019 00031A00
   90A40018 00641825 A4C30004 90A30017 00031A00 90A40016 00641825 A4C30006
   03E00008 A0400000 A0430000 90A30009 24040020 1064FFE3 24420001 A0430000
   90A3000A 1464FFDD 24420001 1000FFDE 90A3000B
   'dir_read
   27BDFFD8 AFBF0024 AFB40020 AFB3001C AFB20018 AFB10014 AFB00010 00809821
   00A08021 00C08821 24020003 241200E5 10000019 2414002E 30C6000F 02202021
   00063140 24070020 0411FAA7 00000000 0002102B 54400016 AE000010 92230000
   50600012 24020003 10720005 9224000B 10740003 30840008 1080000E 8FBF0024
   02602021 02002821 0411FB78 00000000 54400007 AE000010 8E050010 54A0FFE6
   96060000 10400003 8FBF0024 AE000010 8FBF0024 8FB40020 8FB3001C 8FB20018
   8FB10014 8FB00010 03E00008 27BD0028
   'pf_readdir
   27BDFFB0 AFBF004C AFB20048 AFB10044 AFB00040 00808821 00A08021 00C09021
   1080001B 24020005 27A20010 14C00005 ACA20004 0411FACD 00000000 10000015
   8FBF004C 27A6001C 0411FFB9 00000000 24030003 10430004 02002021 1440000D
   8FBF004C 02002021 27A5001C 02403021 0411FF6A 00000000 02202021 02002821
   0411FB46 00000000 38430003 0003100A 8FBF004C 8FB20048 8FB10044 8FB00040
   03E00008 27BD0050
   'getFPC
   27BDFFF8 AFBF0004 00852023 03E42021 ACC40000 8FBF0004 03E00008 27BD0008
   'errstring
   27BDFFE0 AFBF001C AFB00018 00808021 00002021 3C059D00 24A518D0 27A60010
   0411FFEF 00000000 8FA20010 1200003C 24030001 16030006 24030002 8FA30010
   3C049D00 24842544 10000012 00832021 56030006 3C049D00 8FA30010 3C049D00
   24842554 10000013 00832021 24842534 00822021 24020003 16020007 24020004
   8FA30010 3C049D00 24842560 10000011 00832021 24020004 16020007 24020005
   8FA30010 3C049D00 2484256C 10000011 00832021 24020005 16020007 24020006
   8FA30010 3C049D00 2484257C 10000010 00832021 24020006 16020007 24020007
   8FA30010 3C049D00 2484258C 10000008 00832021 24020007 16020006 3C029D00
   8FA30010 3C049D00 248425A0 00832021 3C029D00 8C4200BC 0040F809 00000000
   8FBF001C 8FB00018 03E00008 27BD0020
   'main
   27BDFFA8 AFBF0054 AFBE0050 AFB7004C AFB60048 AFB50044 AFB40040 AFB3003C
   AFB20038 AFB10034 AFB00030 00808021 00A08821 00C0A821 00E09821 3C02BF80
   8C455830 3C039D00 8C64008C AC850044 8C455800 8C64008C AC850048 8C455840
   8C64008C AC85004C 34048260 AC445800 24040C00 AC445840 8C640090 8084003C
   AC445830 8C72008C 26540050 8E060000 24020001 10C20006 26570078 24020006
   10C20003 24020007 14C20006 24020004 82250000 04A10007 00001021 1000000F
   03A52821 14C2001A 24020007 1000FFF9 82250000 27A40010 00821821 02222021
   90840000 A0640000 24420001 00A2182A 1060FFF9 27A40010 03A52821 24020006
   14C20005 A0A00011 3C029D00 8C4200C4 0040F809 00000000 8E060000 24020001
   10C20007 24020006 10C20005 24020007 10C20003 24020004 54C200CB 8E030000
   3C029D00 8C430090 80640030 8C430088 00041080 00431021 8C430000 24020065
   10620003 24040007 0411FF59 00000000 3C02BF81 8C44F220 7C84D800 3C030661
   3463A053 1083000B 24020050 3C02BF81 8C43F220 7C63D800 3C020660 3442A053
   00621026 24030050 2404000C 0082180B 00601021 3C039D00 8C630088 00431021
   8C430000 24020065 10620084 3C029D00 8C420010 3C03BF81 8C65F220 7CA5D800
   3C030661 3463A053 10A3000B 24040014 3C03BF81 8C64F220 7C84D800 3C030660
   3463A053 00832026 24030014 24050003 00A4180B 00602021 24050008 0040F809
   00003021 3C029D00 8C420010 3C03BF81 8C65F220 7CA5D800 3C030661 3463A053
   10A3000B 24040014 3C03BF81 8C64F220 7C84D800 3C030660 3463A053 00832026
   24030014 24050003 00A4180B 00602021 24050064 0040F809 00003021 3C029D00
   8C420010 3C03BF81 8C65F220 7CA5D800 3C030661 3463A053 10A3000B 24040029
   3C03BF81 8C64F220 7C84D800 3C030660 3463A053 00832026 24030029 2405000E
   00A4180B 00602021 24050002 0040F809 00003021 3C029D00 8C420010 3C03BF81
   8C65F220 7CA5D800 3C030661 3463A053 10A3000B 24040029 3C03BF81 8C64F220
   7C84D800 3C030660 3463A053 00832026 24030029 2405000E 00A4180B 00602021
   24050064 0040F809 00003021 3C029D00 8C420010 3C03BF81 8C65F220 7CA5D800
   3C030661 3463A053 10A3000B 2404000E 3C03BF81 8C64F220 7C84D800 3C030660
   3463A053 00832026 2403000E 24050019 00A4180B 00602021 24050008 0040F809
   00003021 3C029D00 8C420010 3C03BF81 8C65F220 7CA5D800 3C030661 3463A053
   10A3000B 2404000E 3C03BF81 8C64F220 7C84D800 3C030660 3463A053 00832026
   2403000E 24050019 00A4180B 00602021 24050064 0040F809 00003021 3C02BF81
   8C43FA84 24160001 7EC31804 AC43FA84 3C02BF81 8C43FB04 24040003 7C831804
   AC43FB04 3C02BF80 34038260 AC435800 24030C00 AC435840 3C029D00 8C42008C
   AC4000F8 02802021 0411FD0F 00000000 00402021 0411FEA6 00000000 8E020000
   54560009 8E030000 02802021 27A50011 0411FD9D 00000000 00402021 0411FE9C
   00000000 8E030000 24020002 54620022 8E030000 8EA50000 04A00006 02802021
   0411FA78 00000000 00402021 0411FE90 00000000 8E660000 28C20100 1040000B
   02802021 26250001 27A70020 0411FACB 00000000 00402021 0411FE85 00000000
   8FA20020 10000008 A2220000 02202821 27A70020 0411FAC1 00000000 00402021
   0411FE7B 00000000 8FA30020 8FA20068 AC430000 8E030000 24020003 5462007B
   8E030000 8EA20000 04410005 3C029D00 8C42008C 8C4200F8 AEA20000 3C029D00
   8C42008C 8C4400F8 8E630000 00831821 AC4300F8 8EB60000 241EFE00 02DEF024
   02802021 03C02821 0411FA46 00000000 00402021 0411FE5E 00000000 8E660000
   28C20100 02221021 AFA2002C 8EA20000 105E004C 32D601FF AFB60028 3C029D00
   8C420040 0040F809 24040200 0040B021 02802021 00402821 24060200 27A70020
   0411FA8E 00000000 00402021 0411FE48 00000000 02802021 03C02821 0411FA29
   00000000 00402021 0411FE41 00000000 8E650000 8FA20028 00452821 2CA20201
   14400003 0000F021 24BEFE00 24050200 8FA30028 0065102A 10400009 8FA3002C
   8FA40028 02C41021 02C52821 90640000 A0440000 24420001 1445FFFC 24630001
   02802021 02C02821 8FA60020 27A70020 0411FBC1 00000000 00402021 0411FE24
   00000000 13C0000D 02802021 8E650000 00BE2823 8FA2002C 00452821 03C03021
   27A70020 0411FBB4 00000000 00402021 0411FE17 00000000 02802021 00002821
   00003021 27A70020 0411FBAB 00000000 00402021 0411FE0E 00000000 10000013
   8E030000 02802021 8FA5002C 27A70020 0411FBA1 00000000 00402021 0411FE04
   00000000 02802021 00002821 00003021 27A70020 0411FB98 00000000 00402021
   0411FDFB 00000000 8E030000 24020004 5462000A 8E030000 02802021 02E02821
   27A60011 0411FD22 00000000 00402021 0411FDEF 00000000 8E030000 24020005
   5462003C 8E030000 265200A0 02802021 02E02821 02403021 0411FDB3 00000000
   00402021 0411FDE2 00000000 92430008 24020016 5462000A 82420009 02802021
   02E02821 02403021 0411FDA7 00000000 00402021 0411FDD6 00000000 82420009
   50400023 A2200000 92420008 30420010 54400006 2402003C 24130001 02331821
   00001021 1000000C 2405000C A2220001 24020044 A2220002 24020069 A2220003
   24020072 A2220004 2402003E A2220005 1000FFF2 24130006 02422021 90840009
   A0640000 24420001 1445FFFB 24630001 2402000C AFA20020 26440009 0411F7B6
   00000000 2673FFFF 02629821 A2330000 8E030000 24020006 5462003E 8E030000
   3C029D00 8C420040 0040F809 3404C800 0040B821 02802021 27A50011 0411FCA2
   00000000 00402021 0411FDA1 00000000 02802021 00002821 0411F982 00000000
   00402021 0411FD9A 00000000 02E09021 0000B021 24130001 02802021 02402821
   24060080 27A70020 0411F9D4 00000000 00402021 0411FD8E 00000000 8FA30020
   1860000E 00001021 02421821 80630000 54600006 24420001 52600004 24420001
   AFA20020 00009821 24420001 8FA30020 0043202A 5480FFF5 02421821 24020080
   14620003 02C3B021 1000FFE3 26520080 02F6B021 A2C00000 A2C00001 3C029D00
   8C4200B8 02E02021 0040F809 00002821 8E030000 24020007 5462004D 8E020000
   02802021 27A50011 0411FC67 00000000 00402021 0411FD66 00000000 02802021
   00002821 0411F947 00000000 00402021 0411FD5F 00000000 3C129D00 8E420040
   0040F809 24040100 00409821 8E5600C0 24120001 3C179D00 1000001D 241E000D
   1452FFFF 02602021 8EE200C8 0040F809 02C02821 0040B021 02602021 0411F74E
   00000000 02621821 A07E0000 2404000A A0640001 02802021 02602821 24460002
   27A70020 0411FADC 00000000 00402021 0411FD3F 00000000 82C20000 14400005
   00000000 82C20001 50400005 A2600000 82C20000 1440FFE2 00000000 A2600000
   A2600001 02802021 02602821 24060002 27A70020 0411FAC8 00000000 00402021
   0411FD2B 00000000 02802021 00002821 00003021 27A70020 0411FABF 00000000
   00402021 0411FD22 00000000 8E020000 1440002D 3C029D00 8C420090 92230000
   12A00006 A0430030 3C029D00 8C420090 8EA30000 10000005 A043003C 3C029D00
   8C420090 24030002 A043003C 3C029D00 8C430090 80640030 8C420088 00041880
   00621021 8C430000 24020065 1062000B 3C109D00 8E020010 24050008 0040F809
   00003021 8E030090 8E020010 80640030 24050065 0040F809 00003021 3C109D00
   8E030090 8E02001C 80640030 0040F809 2405FFFD 8E030090 8E02001C 80640030
   0040F809 24050006 3C029D00 8C43008C 8C640044 3C02BF80 AC445830 8C640048
   AC445800 8C63004C AC435840 8FBF0054 8FBE0050 8FB7004C 8FB60048 8FB50044
   8FB40040 8FB3003C 8FB20038 8FB10034 8FB00030 03E00008 27BD0058
   '.rodata
   'err0
   6E6B6E55 206E776F 6F727265 000A0D72
   'err1
   6B736944 72724520 0A0D726F 00000000
   'err2
   20746F4E 64616552 000A0D79
   'err3
   46206F4E 0D656C69 0000000A 20746F4E 6E65704F 0A0D6465 00000000 20746F4E
   62616E45 0D64656C 0000000A 46206F4E 20656C69 74737953 0A0D6D65 00000000
   20746F4E 6E756F6D 0D646574 0000000A
end csub

Edited 2020-01-15 23:10 by matherp
 
Frank N. Furter
Guru

Joined: 28/05/2012
Location: Germany
Posts: 813
Posted: 03:04pm 15 Jan 2020
Copy link to clipboard 
Print this post

Thanks Peter but I have no luck!  

What have I done:

I killed all with
NEW
LIBRARY DELETE

Than I loaded your attached library and saved it with
LIBRARY SAVE

and restarted Micromite with
CPU RESTART
SDCARD 1,"empty.txt"

After a restart I get every time:
> cpu restart
> SDCARD 1,"empty.txt"
Error: Not Ready

and then:
> SDCARD 1,"empty.txt"
Error: Not mounted

Then I made your hardware changes:

10µF between 3V3 and GND
10K pullups on SCK, MOSI and MISO
=> no change

I tried a 2GB SD (no SD HC) card => No Filesystem

I tried another 16GB card and get the same
> cpu restart
> SDCARD 1,"empty.txt"
Error: Not Ready

> SDCARD 1,"empty.txt"
Error: Not mounted

But sometimes also
cpu restart
> SDCARD 1,"empty.txt"
Error: No File System

> SDCARD 1,"empty.txt"
Error: Not mounted


All cards were formatted as FAT32 and I tried two different sized "empty.txt

Can you send me a file that you know works with him?

Do you have any more suggestions?

Frank
 
Frank N. Furter
Guru

Joined: 28/05/2012
Location: Germany
Posts: 813
Posted: 03:36pm 15 Jan 2020
Copy link to clipboard 
Print this post

UPDATE!!!      

I have attached an additional 220µF capacitor to the supply line. Now the access works at least with the second 16GB card - the first one still doesn't work...

Thank you very much Peter!!!

Frank
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 8517
Posted: 04:03pm 15 Jan 2020
Copy link to clipboard 
Print this post

Another thing to try is to add an extra parameter to the MM.Startup command

Try

sub mm.startup
' include initialisation for display driver here if required
sdcard 0,2,4 'set up the chip select pin for the SDcard
end sub


The extra parameter is the setting for the SPI speed, default is 2. 4 halves the speed and should increase reliability, play with values > 2. This was probably documented in a thread way back when...

NB: 2GB cards are always an issue, 4GB minimum recommended, class 6 or above preferred.
Edited 2020-01-16 02:17 by matherp
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 3423
Posted: 07:55pm 15 Jan 2020
Copy link to clipboard 
Print this post

Dear Peter, dear Frank,

Just out of interest, I wired up an arduino datalogger shield to an MX170, since I plan to use sdcards in the future (not with the arduino shield, but that was what I had lying around.

I did an option reset (pin 2 was assigned to the ILI9341 LCD)
That also deletes the libraries if present.
loaded the csub and mm.startup, did library save

connected the shield as in franks message (the arduino shield has buffers, but these where powered from 3.3V). On my PC I made a text file "test.txt" with around 40 "0"'s on the SD card. This was a 2Gbyte card.


> cpu restart
> dim s$
> dim a%
> sdcard 1,"test.txt"
> sdcard 2,s$,0,20,a%
> ?s$
00000000000000000000
> ?a%
20


I was able to load a string of "0" fro the sdcard. So basically it works.

I also tried the additional parameter in MM.startup (sdcard 0,2,4).

That also works.


But... if you do exactly the above, it works. With every mistake you make (i.e. forget to dim s$ or a%) you get an error message, but won't be able to get it working again. You need to restart the CPU in order to make it work again. So this is not very robust.

I would have tried other things, but am missing some documentation. I assume
sdcard 0,.... initializes the hardware
sdcard 1,.... assigns a file name
sdcard 2,.... is for reading

This is contradicting the earlier information that Peter wrote.
sdcard opendir,""
sdcard readdir, a$
etc...

Is there a writeup I can use to understand writing and closing files ?

In one instance I got this response after reading the card
CPU exception #7 at address 0x9D01AC84
Processor restarted


Regards,

Volhout
Edited 2020-01-16 06:04 by Volhout
PicomiteVGA PETSCII ROBOTS
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 8517
Posted: 10:52pm 15 Jan 2020
Copy link to clipboard 
Print this post

  Quote  This is contradicting the earlier information that Peter wrote.


No its not.

Read the code Frank posted and download and read the files posted here as he correctly referenced above.

const fileopen=1
const readfile=2
const writefile=3
const opendir=4
const readdir=5


  Quote   So this is not very robust.


If you don't like it don't use it. You can use some other SDcard routines for the MM2 (oops there aren't any)

Getting this to run at all on a MM2 was non trivial. You have to work within its limitations or use a MM+ which has a full FatFS implementation. One of the limitations is that all variables have to be DIM'ed before use. Use OPTION EXPLICIT in all your programs and you will never get this wrong.
 
Frank N. Furter
Guru

Joined: 28/05/2012
Location: Germany
Posts: 813
Posted: 08:02am 16 Jan 2020
Copy link to clipboard 
Print this post

...I am afraid that really something is not quite stable - but only at the first initialization!

I often get the following error messages during a restart:
[22] SDCard fileopen,"Timelog.csv"
Error: Not Ready

> Micromite MKII MMBasic Ver 5.05.01
Copyright 2011-2018 Geoff Graham

[22] SDCard fileopen,"Timelog.csv"
Error: No File System

> Micromite MKII MMBasic Ver 5.05.01
Copyright 2011-2018 Geoff Graham

[22] SDCard fileopen,"Timelog.csv"
Error: No File System

> Micromite MKII MMBasic Ver 5.05.01
Copyright 2011-2018 Geoff Graham

Micromite MKII MMBasic Ver 5.05.01
Copyright 2011-2018 Geoff Graham

0
0
1
1
2
-
3
0
4

Usually only after several restarts (and longer disconnections from the power supply) everything works as intended.

I also saw the "CPU exception #7" very often yesterday!

I have reduced the speed - no change!

The 16GB Intenso card still does not work, the 16GB HAMA only has problems at startup - then everything works very stable!
Is it possible that something is borderline during initialization?

Is the card maybe accessed too quickly after a reboot without giving it time to start? I tried a PAUSE in MM.Startup - no success...

@Peter: Thanks for your driver and your efforts!!!

Frank
Edited 2020-01-16 18:06 by Frank N. Furter
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 8517
Posted: 09:39am 16 Jan 2020
Copy link to clipboard 
Print this post

Try the attached. This slows the SPI bus from 400KHz to 100KHz during card initialisation. May not make any difference. This speed is unrelated to the extra parameter which controls the speed once the card has initialised successfully

  Quote  I also saw the "CPU exception #7" very often yesterday!


This means you are trying to read or write to an invalid memory address. Most likely that an array wasn't big enough for the data or similar. If you can find a way to reproduce simply, post it I can have a look but it is not possible to do things like array bounds checking in a CFUNCTION, or to check things like FLOAT or INTEGER. NB: All arrays and parameters used for SDCARD transfers are integer except read and write less than 256 bytes when the buffers should be a string.

sub mm.startup
' include initialisation for display driver here if required
 sdcard 0,2 'set up the chip select pin for the SDcard
end sub
sub load(f$)
 sdcard 6,f$
end
end sub
sub save(f$)
 sdcard 7,f$
end sub
Csub SDcard 'SPI1 version 2.04
   00000676
   'rcv_spi
   240300FF 3C02BF80 AC435820 3C03BF80 8C625810 30420080 1040FFFD 3C02BF80
   8C425820 03E00008 304200FF
   'xmit_spi
   308400FF 3C02BF80 AC445820 3C03BF80 8C625810 30420080 1040FFFD 3C02BF80
   8C425820 03E00008 304200FF
   'mem_set
   10C00006 00801021 00862021 A0450000 24420001 5444FFFE A0450000 03E00008
   00000000
   'mem_cmp
   2407FFFF 24C6FFFF 10C70008 00001021 80830000 80A20000 00621023 14400003
   24840001 1000FFF7 24A50001 03E00008 00000000
   'mystrlen
   80830000 10600006 00001021 24420001 00821821 80630000 5460FFFD 24420001
   03E00008 00000000
   'send_cmd
   27BDFFE0 AFBF001C AFB20018 AFB10014 AFB00010 309100FF 7C111420 04410009
   00A09021 24040077 00002821 0411FFF4 00000000 2C430002 10600034 8FBF001C
   3231007F 3C109D00 8E030090 8E02001C 80640030 0040F809 24050006 0411FFB2
   00000000 8E030090 8E02001C 80640030 0040F809 24050005 0411FFAB 00000000
   02202021 0411FFB3 00000000 00122602 0411FFB0 00000000 7E443C00 0411FFAD
   00000000 7E443A00 0411FFAA 00000000 324400FF 0411FFA7 00000000 24020040
   12220006 24040095 3A310048 24020001 24030087 00402021 0071200A 0411FF9D
   00000000 2410000A 0411FF8F 00000000 7C021C20 04610004 2610FFFF 321000FF
   1600FFF9 00000000 8FBF001C 8FB20018 8FB10014 8FB00010 03E00008 27BD0020
   'disk_readp
   27BDFFD8 AFBF0024 AFB40020 AFB3001C AFB20018 AFB10014 AFB00010 00809021
   00C09821 00E0A021 3C029D00 8C42008C 8C4300FC 30630008 00051240 24040051
   0043280A 0411FFA6 00000000 14400024 24100001 34109C40 241100FF 0411FF6A
   00000000 14510005 2610FFFF 1600FFFB 00000000 1000001A 24100001 240300FE
   14430017 24100001 00138823 26310202 12600006 02348823 0411FF5B 00000000
   2673FFFF 1660FFFC 00000000 02548021 0411FF55 00000000 A2420000 26520001
   1650FFFB 00000000 0411FF4F 00000000 2631FFFF 1620FFFC 00000000 00008021
   3C029D00 8C430090 8C42001C 80640030 0040F809 24050006 0411FF43 00000000
   02001021 8FBF0024 8FB40020 8FB3001C 8FB20018 8FB10014 8FB00010 03E00008
   27BD0028
   'clust2sect
   24A5FFFE 8C830008 2463FFFE 00A3182B 10600005 00001021 90830002 8C820014
   70A32002 00821021 03E00008 00000000
   'dir_rewind
   27BDFFE8 AFBF0014 AFB00010 00A08021 A4A00000 8CA50008 24030001 10A30015
   24020001 8C830008 00A3182B 50600012 8FBF0014 54A00008 AE05000C 90830000
   24020003 54620008 AE00000C 8C850010 10A00005 AE05000C 0411FFDD 00000000
   10000003 AE020010 8C820010 AE020010 00001021 8FBF0014 8FB00010 03E00008
   27BD0018
   'create_name
   27BDFFE0 AFBF001C AFB10018 AFB00014 00A08021 8C910004 02202021 24050020
   2406000B 0411FF18 00000000 8E080000 00002021 00001821 24070008 2409002F
   2406002E 240A0008 01031021 90420000 24630001 2C450021 14A00018 306300FF
   50490017 01031821 10460003 0087282B 14A00008 2445FF9F 54EA0011 01031821
   5446000F 01031821 01402021 1000FFEE 2407000B 30A500FF 2CA5001A 10A00003
   02242821 2442FFE0 304200FF A0A20000 24840001 1000FFE4 308400FF 01031821
   AE030000 2C420021 A222000B 00001021 8FBF001C 8FB10018 8FB00014 03E00008
   27BD0020
   'get_clust
   90840000 24020003 14820006 00001821 90A30015 00031A00 90A20014 00621825
   00031C00 90A2001B 00021200 90A4001A 00441025 03E00008 00621025
   'get_fat
   27BDFFE0 AFBF001C 2CA20002 1440001B 24030001 8C820008 00A2102B 10400018
   00601021 000519C2 8C82000C 30A6007F 27A40010 00622821 00063080 24070004
   0411FF31 00000000 1440000C 24030001 93A30013 00031E00 93A20012 00021400
   00621825 93A20010 00621825 93A20011 00021200 00621825 7C63D800 00601021
   8FBF001C 03E00008 27BD0020
   'dir_next
   27BDFFE0 AFBF001C AFB20018 AFB10014 AFB00010 00808821 00A08021 94B20000
   26520001 3252FFFF 12400028 24020003 8CA30010 50600026 8FBF001C 3242000F
   54400021 A6120000 24630001 ACA30010 8CA5000C 14A00007 00121902 94830004
   0243182B 14600017 24020003 10000018 8FBF001C 90820002 2442FFFF 00621024
   54400011 A6120000 0411FFBA 00000000 00402821 2C430002 1460000C 24020001
   8E230008 00A3182B 10600008 24020003 AE05000C 02202021 0411FF39 00000000
   AE020010 A6120000 00001021 8FBF001C 8FB20018 8FB10014 8FB00010 03E00008
   27BD0020
   'dir_find
   27BDFFD8 AFBF0024 AFB30020 AFB2001C AFB10018 AFB00014 00809821 00A08821
   00C09021 0411FF31 00000000 14400021 00408021 96260000 30C6000F 02402021
   8E250010 00063140 24070020 0411FED2 00000000 0002802B 16000017 02001021
   92420000 50400013 24100003 9242000B 30420008 14400008 02602021 02402021
   8E250004 2406000B 0411FE64 00000000 10400008 02602021 02202821 0411FF9F
   00000000 1040FFE3 00408021 10000002 02001021 02001021 8FBF0024 8FB30020
   8FB2001C 8FB10018 8FB00014 03E00008 27BD0028
   'follow_path
   27BDFFE0 AFBF001C AFB20018 AFB10014 AFB00010 00809021 00A08021 AFA7002C
   80E20000 24030020 14430006 00C08821 24E70001 AFA7002C 80E20000 5043FFFD
   24E70001 2403002F 54430004 AE000008 24E70001 AFA7002C AE000008 8FA2002C
   90420000 2C420020 10400008 02002021 02402021 02002821 0411FEE7 00000000
   1000001B A2200000 02002021 27A5002C 0411FF02 00000000 14400015 02402021
   02002821 02203021 0411FFA0 00000000 14400010 8FBF001C 8E030004 9063000B
   5460000D 8FB20018 9222000B 30420010 10400006 02402021 02202821 0411FF28
   00000000 1000FFE8 AE020008 24020003 8FBF001C 8FB20018 8FB10014 8FB00010
   03E00008 27BD0020
   'pf_lseek
   27BDFFD8 AFBF0024 AFB30020 AFB2001C AFB10018 AFB00014 00808021 1080004F
   24020005 90830001 30630001 1060004B 24020004 8C82001C 0045902B 00B2100A
   00409021 8C830018 AC800018 12400043 00001021 90910002 10600012 00118A40
   2463FFFF 2642FFFF 0051001B 022001F4 00001012 0071001B 022001F4 00002012
   0044102B 54400008 8E050020 00111023 00431824 AE030018 02439023 10000003
   8E050024 8E050020 AE050024 0232102B 10400018 00119823 02519023 02002021
   0411FEFC 00000000 00402821 2C420002 54400006 A2000001 8E020008 00A2102B
   54400004 AE050024 A2000001 1000001B 24020001 8E020018 00511021 AE020018
   02531021 00511821 0223182B 5460FFEB 00409021 8E020018 00529021 AE120018
   02002021 0411FE6E 00000000 54400004 92040002 A2000001 10000008 24020001
   2484FFFF 8E030018 00031A42 00831824 00431021 AE020028 00001021 8FBF0024
   8FB30020 8FB2001C 8FB10018 8FB00014 03E00008 27BD0028
   'pf_read
   27BDFFD0 AFBF002C AFB60028 AFB50024 AFB40020 AFB3001C AFB20018 AFB10014
   AFB00010 00808021 00A0A821 00E09821 ACE00000 1080004A 24020005 90830001
   30630001 10600046 24020004 8C92001C 8C820018 02429023 0246102B 00C2900A
   1240003F 00001021 00A0A021 24160200 8E020018 304301FF 5460001F 8E060018
   00021A42 92110002 2631FFFF 00718824 323100FF 1620000E 02002021 54400003
   8E050024 10000003 8E020020 0411FEA3 00000000 2C430002 50600004 AE020024
   A2000001 10000026 24020001 02002021 8E050024 0411FE24 00000000 14400004
   00518821 A2000001 1000001D 24020001 AE110028 8E060018 30C601FF 02C61023
   0052882B 0251100A 00408821 00002021 0295200B 8E050028 00403821 0411FDC9
   00000000 50400004 8E020018 A2000001 1000000B 24020001 00511021 AE020018
   02519023 8E620000 00511021 12400003 AE620000 1000FFC6 0291A021 00001021
   8FBF002C 8FB60028 8FB50024 8FB40020 8FB3001C 8FB20018 8FB10014 8FB00010
   03E00008 27BD0030
   'disk_initialize
   27BDFFD0 AFBF002C AFB30028 AFB20024 AFB10020 AFB0001C 240300C7 3C02BF80
   AC435830 3C029D00 8C430090 8C42001C 80640030 0040F809 24050006 2410000A
   0411FD20 00000000 2610FFFF 321000FF 1600FFFB 24040040 00002821 0411FD4F
   00000000 24030001 14430061 3C029D00 24040048 240501AA 0411FD48 00000000
   24030001 14430037 240400E9 27B00010 27B10014 0411FD0B 00000000 A2020000
   26100001 1611FFFB 93A30012 24020001 1462004E 00008021 93A30013 240200AA
   1462004B 3C029D00 10000008 24112710 0040F809 24040064 2631FFFF 16200005
   240400E9 1000003F 00008021 3C109D00 240400E9 3C054000 0411FD28 00000000
   5440FFF3 8E020004 12200038 00008021 2404007A 00002821 0411FD20 00000000
   14400033 3C029D00 24110004 0411FCE5 00000000 27A40010 00901821 26100001
   1611FFFA A0620000 93B00010 32100040 2402000C 24030004 0070100A 10000023
   00408021 00002821 0411FD0C 00000000 2C420002 24030002 24100001 0062800B
   240300E9 24130041 0062980B 24112710 10000006 3C129D00 0040F809 24040064
   2631FFFF 52200011 00008021 02602021 00002821 0411FCF9 00000000 5440FFF6
   8E420004 52200009 00008021 24040050 24050200 0411FCF1 00000000 10000003
   0002800B 10000002 3C029D00 3C029D00 8C43008C AC7000FC 8C430090 8C42001C
   80640030 0040F809 24050006 0411FCAD 00000000 12000005 3C029D00 8C420090
   8043003C 3C02BF80 AC435830 2E020001 8FBF002C 8FB30028 8FB20024 8FB10020
   8FB0001C 03E00008 27BD0030
   'disk_writep
   27BDFFE0 AFBF001C AFB20018 AFB10014 AFB00010 10800014 00808021 30A5FFFF
   10A00052 00009021 97828010 1040004F 00858821 92040000 26100001 0411FC99
   00000000 97828010 2442FFFF 3042FFFF 12110045 A7828010 5440FFF7 92040000
   10000042 00009021 10A00016 97908010 3C029D00 8C42008C 8C4300FC 30630008
   00051240 24040058 0043280A 0411FCB0 00000000 14400035 24120001 240400FF
   0411FC80 00000000 240400FE 0411FC7D 00000000 24020200 A7828010 1000002B
   00009021 26100002 12000008 2610FFFF 2411FFFF 00002021 0411FC72 00000000
   2610FFFF 1611FFFC 00002021 0411FC62 00000000 3042001F 24030005 14430010
   24120001 10000005 241207D0 0040F809 240403E8 10000003 2652FFFF 241100FF
   3C109D00 0411FC54 00000000 50510004 2E520001 5640FFF5 8E020004 24120001
   3C029D00 8C430090 8C42001C 80640030 0040F809 24050006 0411FC47 00000000
   10000003 02401021 00009021 02401021 8FBF001C 8FB20018 8FB10014 8FB00010
   03E00008 27BD0020
   'pf_write
   27BDFFD0 AFBF002C AFB60028 AFB50024 AFB40020 AFB3001C AFB20018 AFB10014
   AFB00010 00808021 00C09021 00E09821 ACE00000 1080007B 24020005 90830001
   30640001 10800077 24020004 14C00010 30630040 5060000A 92020001 00002021
   00002821 0411FF84 00000000 50400004 92020001 A2000001 1000006A 24020001
   304200BF A2020001 10000066 00001021 54600006 8E03001C 8E030018 2402FE00
   00621024 AE020018 8E03001C 8E020018 00621023 0052182B 14600005 00000000
   00A0A021 24150200 10000005 2416FFBF 1440FFFB 00409021 10000053 8FBF002C
   8E020018 304301FF 54600029 8E110018 00021A42 92110002 2631FFFF 00718824
   323100FF 1620000E 02002021 54400003 8E050024 10000003 8E020020 0411FD30
   00000000 2C430002 50600004 AE020024 A2000001 1000003B 24020001 02002021
   8E050024 0411FCB1 00000000 14400004 00512821 A2000001 10000032 24020001
   AE050028 00002021 0411FF43 00000000 50400004 92020001 A2000001 10000029
   24020001 34420040 A2020001 8E110018 323101FF 02B18823 0232102B 0242880A
   02802021 02202821 0411FF33 00000000 50400004 8E020018 A2000001 10000019
   24020001 00511021 AE020018 8E620000 00511021 AE620000 8E020018 304201FF
   5440000D 02519023 00002021 00002821 0411FF21 00000000 50400004 92020001
   A2000001 10000007 24020001 00561024 A2020001 02519023 1640FFB1 0291A021
   00001021 8FBF002C 8FB60028 8FB50024 8FB40020 8FB3001C 8FB20018 8FB10014
   8FB00010 03E00008 27BD0030
   'check_fs
   27BDFFE0 AFBF001C AFB10018 AFB00014 00808021 00A08821 240601FE 24070002
   0411FC1E 00000000 14400028 24030003 92040001 00042200 92020000 00822025
   7C042620 2402AA55 14820020 24030002 02002021 02202821 24060036 24070002
   0411FC0E 00000000 1440000A 02002021 92040001 00042200 92020000 00822025
   7C042620 24024146 10820010 00001821 02002021 02202821 24060052 24070002
   0411FBFE 00000000 14400008 24030001 92030001 00031A00 92020000 00621825
   7C031E20 38634146 0003182B 00601021 8FBF001C 8FB10018 8FB00014 03E00008
   27BD0020
   'pf_mount
   27BDFFB8 AFBF0044 AFB10040 AFB0003C 00808021 0411FE39 00000000 30420001
   14400087 24030002 27A40010 00002821 0411FFBA 00000000 24030001 1443001A
   00008821 27A40010 00002821 240601BE 24070010 0411FBD8 00000000 14400078
   24030001 93A20014 10400075 24030006 93B1001B 00118E00 93A2001A 00021400
   02228825 93A20018 02228825 93A20019 00021200 02228825 27A40010 02202821
   0411FF9E 00000000 24040003 10440064 24030001 14400062 24030006 27A40010
   02202821 2406000D 24070024 0411FBBA 00000000 1440005A 24030001 93A2001A
   00021200 93A30019 00431025 1440000C 93A30013 93A3002A 00031E00 93A20029
   00021400 00621025 93A30027 00431025 93A30028 00031A00 00431025 93A30013
   70431002 93A60012 00063200 93A30011 00C33025 02268821 AE11000C 93A50010
   A2050002 93A40015 00042200 93A30014 00832025 A6040004 93A30017 00031A00
   93A70016 00671825 1460000B 00042102 93A70026 00073E00 93A30025 00031C00
   00E31825 93A70023 00671825 93A70024 00073A00 00671825 00661823 00621823
   00641823 0065001B 00A001F4 00003012 24C50002 AE050008 24C6F00A 3407EFFF
   00C7302B 2CA70FF7 24030002 0066380B 3403FFF7 00A3282B 10A0001F 24030003
   10E00017 24030006 24030003 14E3000D A2070000 93A50032 00052E00 93A30031
   00031C00 00A32825 93A3002F 00A32825 93A30030 00031A00 00A31825 10000003
   AE030010 00511821 AE030010 02248821 02221021 AE020014 A2000001 00001821
   00601021 8FBF0044 8FB10040 8FB0003C 03E00008 27BD0048 1000FFE6 A2030000
   'pf_open
   27BDFFA0 AFBF005C AFB10058 AFB00054 00808821 00A03821 10800025 24100005
   A0800001 27A20024 AFA20014 27A50010 27A60030 0411FC97 00000000 1440001C
   00408021 93A20030 10400018 93A2003B 30420010 54400016 24100003 02202021
   27A50030 0411FBEB 00000000 AE220020 93A3004F 00031E00 93A2004E 00021400
   00621025 93A3004C 00431025 93A3004D 00031A00 00431025 AE22001C AE200018
   24020001 10000002 A2220001 24100003 02001021 8FBF005C 8FB10058 8FB00054
   03E00008 27BD0060
   'pf_opendir
   27BDFFB0 AFBF004C AFB10048 AFB00044 00808021 00A08821 00C03821 10800018
   24020005 27A20010 ACA20004 27A6001C 0411FC66 00000000 14400012 8FBF004C
   93A2001C 1040000B 02002021 93A30027 30630010 1060000A 24020003 02002021
   27A5001C 0411FBB9 00000000 AE220008 02002021 02202821 0411FB5A 00000000
   8FBF004C 8FB10048 8FB00044 03E00008 27BD0050
   'get_fileinfo
   8C830010 10600036 24C20009 90A30000 24040020 1064000E 00A02021 244A0008
   24090005 240800E5 10000003 240B0020 106B0007 24840001 00693826 0107180A
   A0430000 24420001 544AFFF9 90830001 90A40008 24030020 1083000A 2403002E
   A0430000 90A30008 24040020 1464001E 24420001 10000004 90A3000B A0430000
   24420001 90A3000B A0C30008 90A4001F 00042600 90A3001E 00031C00 00831825
   90A4001C 00641825 90A4001D 00042200 00641825 ACC30000 90A30019 00031A00
   90A40018 00641825 A4C30004 90A30017 00031A00 90A40016 00641825 A4C30006
   03E00008 A0400000 A0430000 90A30009 24040020 1064FFE3 24420001 A0430000
   90A3000A 1464FFDD 24420001 1000FFDE 90A3000B
   'dir_read
   27BDFFD8 AFBF0024 AFB40020 AFB3001C AFB20018 AFB10014 AFB00010 00809821
   00A08021 00C08821 24020003 241200E5 10000019 2414002E 30C6000F 02202021
   00063140 24070020 0411FAA7 00000000 0002102B 54400016 AE000010 92230000
   50600012 24020003 10720005 9224000B 10740003 30840008 1080000E 8FBF0024
   02602021 02002821 0411FB78 00000000 54400007 AE000010 8E050010 54A0FFE6
   96060000 10400003 8FBF0024 AE000010 8FBF0024 8FB40020 8FB3001C 8FB20018
   8FB10014 8FB00010 03E00008 27BD0028
   'pf_readdir
   27BDFFB0 AFBF004C AFB20048 AFB10044 AFB00040 00808821 00A08021 00C09021
   1080001B 24020005 27A20010 14C00005 ACA20004 0411FACD 00000000 10000015
   8FBF004C 27A6001C 0411FFB9 00000000 24030003 10430004 02002021 1440000D
   8FBF004C 02002021 27A5001C 02403021 0411FF6A 00000000 02202021 02002821
   0411FB46 00000000 38430003 0003100A 8FBF004C 8FB20048 8FB10044 8FB00040
   03E00008 27BD0050
   'getFPC
   27BDFFF8 AFBF0004 00852023 03E42021 ACC40000 8FBF0004 03E00008 27BD0008
   'errstring
   27BDFFE0 AFBF001C AFB00018 00808021 00002021 3C059D00 24A518D0 27A60010
   0411FFEF 00000000 8FA20010 1200003C 24030001 16030006 24030002 8FA30010
   3C049D00 24842574 10000012 00832021 56030006 3C049D00 8FA30010 3C049D00
   24842584 10000013 00832021 24842564 00822021 24020003 16020007 24020004
   8FA30010 3C049D00 24842590 10000011 00832021 24020004 16020007 24020005
   8FA30010 3C049D00 2484259C 10000011 00832021 24020005 16020007 24020006
   8FA30010 3C049D00 248425AC 10000010 00832021 24020006 16020007 24020007
   8FA30010 3C049D00 248425BC 10000008 00832021 24020007 16020006 3C029D00
   8FA30010 3C049D00 248425D0 00832021 3C029D00 8C4200BC 0040F809 00000000
   8FBF001C 8FB00018 03E00008 27BD0020
   'main
   27BDFFA8 AFBF0054 AFBE0050 AFB7004C AFB60048 AFB50044 AFB40040 AFB3003C
   AFB20038 AFB10034 AFB00030 00808021 00A08821 00C0A821 00E09821 3C03BF80
   8C655830 3C029D00 8C44008C AC850044 8C655800 8C44008C AC850048 8C645840
   8C43008C AC64004C 8C430090 80640030 8C430088 00041080 00431021 8C430000
   24020065 1462000B 3C029D00 3C02BF80 34038260 AC435800 24030C00 AC435840
   3C039D00 8C630090 8063003C AC435830 3C029D00 8C52008C 26540050 8E060000
   24020001 10C20006 26570078 24020006 10C20003 24020007 14C20006 24020004
   82250000 04A10007 00001021 1000000F 03A52821 14C2001A 24020007 1000FFF9
   82250000 27A40010 00821821 02222021 90840000 A0640000 24420001 00A2182A
   1060FFF9 27A40010 03A52821 24020006 14C20005 A0A00011 3C029D00 8C4200C4
   0040F809 00000000 8E060000 24020001 10C20007 24020006 10C20005 24020007
   10C20003 24020004 54C200CB 8E030000 3C029D00 8C430090 80640030 8C430088
   00041080 00431021 8C430000 24020065 10620003 24040007 0411FF4D 00000000
   3C02BF81 8C44F220 7C84D800 3C030661 3463A053 1083000B 24020050 3C02BF81
   8C43F220 7C63D800 3C020660 3442A053 00621026 24030050 2404000C 0082180B
   00601021 3C039D00 8C630088 00431021 8C430000 24020065 10620084 3C029D00
   8C420010 3C03BF81 8C65F220 7CA5D800 3C030661 3463A053 10A3000B 24040014
   3C03BF81 8C64F220 7C84D800 3C030660 3463A053 00832026 24030014 24050003
   00A4180B 00602021 24050008 0040F809 00003021 3C029D00 8C420010 3C03BF81
   8C65F220 7CA5D800 3C030661 3463A053 10A3000B 24040014 3C03BF81 8C64F220
   7C84D800 3C030660 3463A053 00832026 24030014 24050003 00A4180B 00602021
   24050064 0040F809 00003021 3C029D00 8C420010 3C03BF81 8C65F220 7CA5D800
   3C030661 3463A053 10A3000B 24040029 3C03BF81 8C64F220 7C84D800 3C030660
   3463A053 00832026 24030029 2405000E 00A4180B 00602021 24050002 0040F809
   00003021 3C029D00 8C420010 3C03BF81 8C65F220 7CA5D800 3C030661 3463A053
   10A3000B 24040029 3C03BF81 8C64F220 7C84D800 3C030660 3463A053 00832026
   24030029 2405000E 00A4180B 00602021 24050064 0040F809 00003021 3C029D00
   8C420010 3C03BF81 8C65F220 7CA5D800 3C030661 3463A053 10A3000B 2404000E
   3C03BF81 8C64F220 7C84D800 3C030660 3463A053 00832026 2403000E 24050019
   00A4180B 00602021 24050008 0040F809 00003021 3C029D00 8C420010 3C03BF81
   8C65F220 7CA5D800 3C030661 3463A053 10A3000B 2404000E 3C03BF81 8C64F220
   7C84D800 3C030660 3463A053 00832026 2403000E 24050019 00A4180B 00602021
   24050064 0040F809 00003021 3C02BF81 8C43FA84 24160001 7EC31804 AC43FA84
   3C02BF81 8C43FB04 24040003 7C831804 AC43FB04 3C02BF80 34038260 AC435800
   24030C00 AC435840 3C029D00 8C42008C AC4000F8 02802021 0411FD03 00000000
   00402021 0411FE9A 00000000 8E020000 54560009 8E030000 02802021 27A50011
   0411FD91 00000000 00402021 0411FE90 00000000 8E030000 24020002 54620022
   8E030000 8EA50000 04A00006 02802021 0411FA6C 00000000 00402021 0411FE84
   00000000 8E660000 28C20100 1040000B 02802021 26250001 27A70020 0411FABF
   00000000 00402021 0411FE79 00000000 8FA20020 10000008 A2220000 02202821
   27A70020 0411FAB5 00000000 00402021 0411FE6F 00000000 8FA30020 8FA20068
   AC430000 8E030000 24020003 5462007B 8E030000 8EA20000 04410005 3C029D00
   8C42008C 8C4200F8 AEA20000 3C029D00 8C42008C 8C4400F8 8E630000 00831821
   AC4300F8 8EB60000 241EFE00 02DEF024 02802021 03C02821 0411FA3A 00000000
   00402021 0411FE52 00000000 8E660000 28C20100 02221021 AFA2002C 8EA20000
   105E004C 32D601FF AFB60028 3C029D00 8C420040 0040F809 24040200 0040B021
   02802021 00402821 24060200 27A70020 0411FA82 00000000 00402021 0411FE3C
   00000000 02802021 03C02821 0411FA1D 00000000 00402021 0411FE35 00000000
   8E650000 8FA20028 00452821 2CA20201 14400003 0000F021 24BEFE00 24050200
   8FA30028 0065102A 10400009 8FA3002C 8FA40028 02C41021 02C52821 90640000
   A0440000 24420001 1445FFFC 24630001 02802021 02C02821 8FA60020 27A70020
   0411FBB5 00000000 00402021 0411FE18 00000000 13C0000D 02802021 8E650000
   00BE2823 8FA2002C 00452821 03C03021 27A70020 0411FBA8 00000000 00402021
   0411FE0B 00000000 02802021 00002821 00003021 27A70020 0411FB9F 00000000
   00402021 0411FE02 00000000 10000013 8E030000 02802021 8FA5002C 27A70020
   0411FB95 00000000 00402021 0411FDF8 00000000 02802021 00002821 00003021
   27A70020 0411FB8C 00000000 00402021 0411FDEF 00000000 8E030000 24020004
   5462000A 8E030000 02802021 02E02821 27A60011 0411FD16 00000000 00402021
   0411FDE3 00000000 8E030000 24020005 5462003C 8E030000 265200A0 02802021
   02E02821 02403021 0411FDA7 00000000 00402021 0411FDD6 00000000 92430008
   24020016 5462000A 82420009 02802021 02E02821 02403021 0411FD9B 00000000
   00402021 0411FDCA 00000000 82420009 50400023 A2200000 92420008 30420010
   54400006 2402003C 24130001 02331821 00001021 1000000C 2405000C A2220001
   24020044 A2220002 24020069 A2220003 24020072 A2220004 2402003E A2220005
   1000FFF2 24130006 02422021 90840009 A0640000 24420001 1445FFFB 24630001
   2402000C AFA20020 26440009 0411F7AA 00000000 2673FFFF 02629821 A2330000
   8E030000 24020006 5462003E 8E030000 3C029D00 8C420040 0040F809 3404C800
   0040B821 02802021 27A50011 0411FC96 00000000 00402021 0411FD95 00000000
   02802021 00002821 0411F976 00000000 00402021 0411FD8E 00000000 02E09021
   0000B021 24130001 02802021 02402821 24060080 27A70020 0411F9C8 00000000
   00402021 0411FD82 00000000 8FA30020 1860000E 00001021 02421821 80630000
   54600006 24420001 52600004 24420001 AFA20020 00009821 24420001 8FA30020
   0043202A 5480FFF5 02421821 24020080 14620003 02C3B021 1000FFE3 26520080
   02F6B021 A2C00000 A2C00001 3C029D00 8C4200B8 02E02021 0040F809 00002821
   8E030000 24020007 5462004D 8E020000 02802021 27A50011 0411FC5B 00000000
   00402021 0411FD5A 00000000 02802021 00002821 0411F93B 00000000 00402021
   0411FD53 00000000 3C129D00 8E420040 0040F809 24040100 00409821 8E5600C0
   24120001 3C179D00 1000001D 241E000D 1452FFFF 02602021 8EE200C8 0040F809
   02C02821 0040B021 02602021 0411F742 00000000 02621821 A07E0000 2404000A
   A0640001 02802021 02602821 24460002 27A70020 0411FAD0 00000000 00402021
   0411FD33 00000000 82C20000 14400005 00000000 82C20001 50400005 A2600000
   82C20000 1440FFE2 00000000 A2600000 A2600001 02802021 02602821 24060002
   27A70020 0411FABC 00000000 00402021 0411FD1F 00000000 02802021 00002821
   00003021 27A70020 0411FAB3 00000000 00402021 0411FD16 00000000 8E020000
   1440002D 3C029D00 8C420090 92230000 12A00006 A0430030 3C029D00 8C420090
   8EA30000 10000005 A043003C 3C029D00 8C420090 24030002 A043003C 3C029D00
   8C430090 80640030 8C420088 00041880 00621021 8C430000 24020065 1062000B
   3C109D00 8E020010 24050008 0040F809 00003021 8E030090 8E020010 80640030
   24050065 0040F809 00003021 3C109D00 8E030090 8E02001C 80640030 0040F809
   2405FFFD 8E030090 8E02001C 80640030 0040F809 24050006 3C029D00 8C43008C
   8C640044 3C02BF80 AC445830 8C640048 AC445800 8C63004C AC435840 8FBF0054
   8FBE0050 8FB7004C 8FB60048 8FB50044 8FB40040 8FB3003C 8FB20038 8FB10034
   8FB00030 03E00008 27BD0058
   '.rodata
   'err0
   6E6B6E55 206E776F 6F727265 000A0D72
   'err1
   6B736944 72724520 0A0D726F 00000000
   'err2
   20746F4E 64616552 000A0D79
   'err3
   46206F4E 0D656C69 0000000A 20746F4E 6E65704F 0A0D6465 00000000 20746F4E
   62616E45 0D64656C 0000000A 46206F4E 20656C69 74737953 0A0D6D65 00000000
   20746F4E 6E756F6D 0D646574 0000000A
End CSub


Edited 2020-01-16 19:51 by matherp
 
     Page 1 of 2    
Print this page
© JAQ Software 2024