Sharp X68000 Disassemblies
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

copyall.s 10.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694
  1. ;=============================================
  2. ; Filename copyall.x
  3. ;
  4. ;
  5. ; Base address 000000
  6. ; Exec address 000000
  7. ; Text size 000624 byte(s)
  8. ; Data size 00027a byte(s)
  9. ; Bss size 0000f2 byte(s)
  10. ; 103 Labels
  11. ;
  12. ; Commandline dis -b2 -h -m68000 --sp -q1 -B -M -o120 -gcopyall.lab --overwrite copyall.x copyall.s
  13. ; DIS version 3.16
  14. ;=============================================
  15. .include inc/doscall.mac
  16. .include inc/iocscall.mac
  17. .include inc/fefunc.mac
  18. .cpu 68000
  19. .text
  20. Start:
  21. move.l ($0008,a0),d0
  22. and.l #$fffffffc,d0
  23. movea.l d0,sp
  24. DOS _VERNUM
  25. move.w d0,(L00089e)
  26. addq.l #1,a2
  27. lea.l (L0008a2),a0
  28. bsr.w L000526
  29. lea.l (L0008fe),a0
  30. bsr.w L000526
  31. bsr.w L000562
  32. pea.l (L000624)
  33. DOS _PRINT
  34. addq.l #4,sp
  35. tst.b (L0008a2)
  36. beq.s L000070
  37. tst.b (L00089a)
  38. beq.s L000062
  39. DOS _FFLUSH
  40. pea.l (L00085c)
  41. DOS _PRINT
  42. addq.l #4,sp
  43. DOS _GETC
  44. DOS _FFLUSH
  45. pea.l (L000800)
  46. DOS _PRINT
  47. addq.l #4,sp
  48. L000062:
  49. clr.w (L0008a0)
  50. bsr.s L00007e
  51. tst.l d0
  52. bmi.s L000070
  53. DOS _EXIT
  54. L000070:
  55. pea.l (L000658)
  56. DOS _PRINT
  57. move.w #$0001,-(sp)
  58. DOS _EXIT2
  59. L00007e:
  60. addq.w #1,(L0008a0)
  61. movem.l a6,-(sp)
  62. lea.l (-$00f0,sp),sp
  63. movea.l sp,a6
  64. clr.w ($00ee,a6)
  65. tst.b (L00089c)
  66. beq.s L0000a0
  67. move.w #$8000,($00ee,a6)
  68. L0000a0:
  69. bsr.w L000492
  70. bmi.s L00011e
  71. bsr.w L0001d2
  72. tst.b (L000896)
  73. beq.s L0000e6
  74. lea.l (L0008fe),a0
  75. lea.l ($0092,a6),a1
  76. L0000bc:
  77. move.b (a1)+,(a0)+
  78. bne.s L0000bc
  79. clr.b (-$0002,a0)
  80. cmpi.b #$3a,(-$0003,a0) ;':'
  81. beq.s L0000e8
  82. move.w #$0010,-(sp)
  83. pea.l (L0008fe)
  84. pea.l (L00095a)
  85. DOS _FILES
  86. lea.l ($000a,sp),sp
  87. tst.l d0
  88. bmi.s L00011e
  89. L0000e6:
  90. bsr.s L00012e
  91. L0000e8:
  92. bsr.w L000462
  93. beq.s L000116
  94. btst.l #$04,d0
  95. bne.s L000106
  96. bsr.w L000204
  97. bpl.s L000116
  98. pea.l (L000843)
  99. DOS _PRINT
  100. addq.l #4,sp
  101. bra.s L000116
  102. L000106:
  103. tst.b (L000895)
  104. bne.s L000116
  105. bsr.w L0003c6
  106. bsr.w L00007e
  107. L000116:
  108. bsr.w L000508
  109. bpl.s L0000e8
  110. clr.l d0
  111. L00011e:
  112. lea.l ($00f0,sp),sp
  113. movem.l (sp)+,a6
  114. subq.w #1,(L0008a0)
  115. rts
  116. L00012e:
  117. lea.l (L0008fe),a0
  118. lea.l ($0092,a6),a1
  119. bsr.w L0001d8
  120. L00013c:
  121. tst.b (a1)
  122. beq.s L0001a8
  123. move.b #$5c,(a0)+ ;'\'
  124. bsr.w L0001d8
  125. tst.b (L000898)
  126. bne.s L00018a
  127. movem.l a0,-(sp)
  128. lea.l (L0008fe),a0
  129. bsr.w L000428
  130. movem.l (sp)+,a0
  131. pea.l (L0008fe)
  132. DOS _MKDIR
  133. addq.l #4,sp
  134. cmp.l #$ffffffe9,d0
  135. beq.s L00017c
  136. cmp.l #$ffffffe8,d0
  137. bne.s L000180
  138. L00017c:
  139. bsr.s L0001aa
  140. bra.s L00012e
  141. L000180:
  142. tst.l d0
  143. bmi.s L00013c
  144. move.w #$8000,($00ee,a6)
  145. L00018a:
  146. pea.l (L000803)
  147. DOS _PRINT
  148. pea.l (L0008fe)
  149. DOS _PRINT
  150. pea.l (L000800)
  151. DOS _PRINT
  152. lea.l ($000c,sp),sp
  153. bra.s L00013c
  154. L0001a8:
  155. rts
  156. L0001aa:
  157. move.w #$0100,d0
  158. move.b ($0092,a6),d0
  159. and.b #$1f,d0
  160. move.w d0,-(sp)
  161. DOS _DRVCTRL
  162. addq.l #2,sp
  163. pea.l (L00080a)
  164. DOS _PRINT
  165. DOS _GETC
  166. pea.l (L000800)
  167. DOS _PRINT
  168. lea.l ($0008,sp),sp
  169. L0001d2:
  170. clr.l d0
  171. rts
  172. L0001d6:
  173. move.b d0,(a0)+
  174. L0001d8:
  175. move.b (a1)+,d0
  176. beq.s L0001fe
  177. cmp.b #$5c,d0 ;'\'
  178. beq.s L000200
  179. cmp.b #$80,d0
  180. bcs.s L0001d6
  181. cmp.b #$a0,d0
  182. bcs.s L0001f4
  183. cmp.b #$e0,d0
  184. bcs.s L0001d6
  185. L0001f4:
  186. move.b d0,(a0)+
  187. move.b (a1)+,d0
  188. bne.s L0001d6
  189. move.b #$40,(a0)+ ;'@'
  190. L0001fe:
  191. subq.l #1,a1
  192. L000200:
  193. clr.b (a0)
  194. rts
  195. L000204:
  196. bsr.w L0003f6
  197. tst.b (L000896)
  198. bne.s L000218
  199. tst.b (L000897)
  200. beq.s L000266
  201. L000218:
  202. move.w #$00ff,-(sp)
  203. pea.l (L0008fe)
  204. pea.l (L00095a)
  205. DOS _FILES
  206. lea.l ($000a,sp),sp
  207. clr.l d1
  208. cmp.l #$fffffffe,d0
  209. beq.s L000250
  210. cmp.l #$ffffffee,d0
  211. beq.s L000250
  212. tst.l d0
  213. bne.w L00039e
  214. move.l (L000970),d1
  215. swap.w d1
  216. bra.s L00025a
  217. L000250:
  218. tst.b (L000896)
  219. bne.w L00039e
  220. L00025a:
  221. move.l ($0016,a6),d0
  222. swap.w d0
  223. cmp.l d0,d1
  224. bcc.w L00039e
  225. L000266:
  226. pea.l (L0007f8)
  227. DOS _PRINT
  228. pea.l (L0008a2)
  229. DOS _PRINT
  230. tst.b (L000898)
  231. beq.s L000290
  232. pea.l (L0007fe)
  233. DOS _PRINT
  234. pea.l (L0008fe)
  235. DOS _PRINT
  236. addq.l #8,sp
  237. L000290:
  238. pea.l (L000800)
  239. DOS _PRINT
  240. lea.l ($000c,sp),sp
  241. L00029c:
  242. bra.s L0002ac
  243. L00029e:
  244. bsr.w L0001aa
  245. bsr.w L00012e
  246. bsr.w L0003f6
  247. bra.s L00029c
  248. L0002ac:
  249. tst.b (L000898)
  250. bne.w L00039e
  251. clr.w d4
  252. clr.w -(sp)
  253. pea.l (L0008a2)
  254. DOS _OPEN
  255. addq.l #6,sp
  256. tst.l d0
  257. bmi.w L000374
  258. move.w d0,d2
  259. bsr.w L0003a2
  260. move.w ($00ee,a6),d0
  261. move.b ($0015,a6),d0
  262. move.w d0,-(sp)
  263. pea.l (L0008fe)
  264. DOS _CREATE
  265. addq.l #6,sp
  266. tst.l d0
  267. bmi.s L000336
  268. move.w d0,d3
  269. move.l sp,d7
  270. sub.l #$00000040,d7
  271. sub.l #End,d7
  272. L0002f8:
  273. move.l d7,-(sp)
  274. pea.l (End)
  275. move.w d2,-(sp)
  276. DOS _READ
  277. lea.l ($000a,sp),sp
  278. tst.l d0
  279. bmi.s L000358
  280. beq.s L000378
  281. move.l d0,d1
  282. move.l d1,-(sp)
  283. pea.l (End)
  284. move.w d3,-(sp)
  285. DOS _WRITE
  286. lea.l ($000a,sp),sp
  287. tst.l d0
  288. bmi.s L000328
  289. cmp.l d0,d1
  290. beq.s L0002f8
  291. L000328:
  292. movem.l d0,-(sp)
  293. bsr.s L000358
  294. movem.l (sp)+,d0
  295. bra.w L00029e
  296. L000336:
  297. movem.l d0,-(sp)
  298. bsr.s L00036e
  299. movem.l (sp)+,d0
  300. cmp.l #$ffffffe9,d0
  301. beq.w L00029e
  302. cmp.l #$ffffffe8,d0
  303. beq.w L00029e
  304. moveq.l #$ff,d1
  305. rts
  306. L000358:
  307. move.w d3,-(sp)
  308. DOS _CLOSE
  309. addq.l #2,sp
  310. bsr.s L0003a2
  311. pea.l (L0008fe)
  312. DOS _DELETE
  313. addq.l #4,sp
  314. bra.w L00036e
  315. L00036e:
  316. move.w d2,-(sp)
  317. DOS _CLOSE
  318. addq.l #2,sp
  319. L000374:
  320. moveq.l #$ff,d1
  321. rts
  322. L000378:
  323. clr.l -(sp)
  324. move.w d2,-(sp)
  325. DOS _FILEDATE
  326. addq.l #6,sp
  327. swap.w d0
  328. cmp.w #$ffff,d0
  329. beq.s L000358
  330. swap.w d0
  331. move.l d0,-(sp)
  332. move.w d3,-(sp)
  333. DOS _FILEDATE
  334. addq.l #6,sp
  335. move.w d3,-(sp)
  336. DOS _CLOSE
  337. addq.l #2,sp
  338. move.w d2,-(sp)
  339. DOS _CLOSE
  340. addq.l #2,sp
  341. L00039e:
  342. clr.l d1
  343. rts
  344. L0003a2:
  345. move.w #$ffff,-(sp)
  346. pea.l (L0008fe)
  347. DOS _CHMOD
  348. addq.l #6,sp
  349. tst.l d0
  350. bmi.s L0003c4
  351. and.w #$00f8,d0
  352. move.w d0,-(sp)
  353. pea.l (L0008fe)
  354. DOS _CHMOD
  355. addq.l #6,sp
  356. L0003c4:
  357. rts
  358. L0003c6:
  359. bsr.s L0003f6
  360. lea.l (L0008a2),a0
  361. bsr.w L000516
  362. move.b #$5c,(a0)+ ;'\'
  363. move.b #$2a,(a0)+ ;'*'
  364. move.b #$2e,(a0)+ ;'.'
  365. move.b #$2a,(a0)+ ;'*'
  366. clr.b (a0)
  367. lea.l (L0008fe),a0
  368. bsr.w L000516
  369. move.b #$5c,(a0)+ ;'\'
  370. clr.b (a0)
  371. rts
  372. L0003f6:
  373. lea.l (L0008a2),a0
  374. lea.l ($0036,a6),a1
  375. bsr.w L00051e
  376. lea.l ($001e,a6),a1
  377. bsr.w L00051e
  378. lea.l (L0008fe),a0
  379. lea.l ($0092,a6),a1
  380. bsr.w L00051e
  381. lea.l ($001e,a6),a1
  382. bsr.w L00051e
  383. lea.l (L0008fe),a0
  384. L000428:
  385. tst.b (L000899)
  386. beq.s L000456
  387. L000430:
  388. move.b (a0)+,d0
  389. beq.s L000456
  390. cmp.b #$61,d0 ;'a'
  391. bcs.s L000430
  392. cmp.b #$7b,d0 ;'{'
  393. bcs.s L000458
  394. cmp.b #$81,d0
  395. bcs.s L000430
  396. cmp.b #$a0,d0
  397. bcs.s L000452
  398. cmp.b #$e0,d0
  399. bcs.s L000430
  400. L000452:
  401. move.b (a0)+,d0
  402. bne.s L000430
  403. L000456:
  404. rts
  405. L000458:
  406. sub.b #$20,d0 ;' '
  407. move.b d0,(-$0001,a0)
  408. bra.s L000430
  409. L000462:
  410. move.w ($001e,a6),d0
  411. cmp.w #$2e00,d0
  412. beq.s L00048e
  413. cmp.w #$2e2e,d0 ;'..'
  414. beq.s L00048e
  415. move.b ($0015,a6),d0
  416. btst.l #$03,d0
  417. bne.s L00048e
  418. tst.b (L00089b)
  419. beq.s L00048a
  420. btst.l #$02,d0
  421. bne.s L00048e
  422. L00048a:
  423. tst.w d0
  424. rts
  425. L00048e:
  426. clr.l d0
  427. rts
  428. L000492:
  429. pea.l ($0036,a6)
  430. pea.l (L0008a2)
  431. DOS _NAMECK
  432. addq.l #8,sp
  433. tst.l d0
  434. bmi.s L000506
  435. pea.l ($0092,a6)
  436. pea.l (L0008fe)
  437. DOS _NAMECK
  438. addq.l #8,sp
  439. tst.l d0
  440. bmi.s L000506
  441. cmp.l #$000000ff,d0
  442. beq.s L0004e2
  443. tst.l d0
  444. bne.s L000504
  445. lea.l ($0092,a6),a0
  446. bsr.s L000516
  447. lea.l ($00d5,a6),a1
  448. bsr.s L00051e
  449. lea.l ($00e8,a6),a1
  450. bsr.s L00051e
  451. move.b #$5c,(a0)+ ;'\'
  452. clr.b (a0)+
  453. clr.b ($00d5,a6)
  454. clr.b ($00e8,a6)
  455. L0004e2:
  456. move.b ($0036,a6),d0
  457. cmp.b ($0092,a6),d0
  458. beq.s L000504
  459. move.w #$00ff,-(sp)
  460. pea.l (L0008a2)
  461. pea.l ($0000.w,a6)
  462. DOS _FILES
  463. lea.l ($000a,sp),sp
  464. tst.l d0
  465. rts
  466. L000504:
  467. moveq.l #$ff,d0
  468. L000506:
  469. rts
  470. L000508:
  471. pea.l ($0000.w,a6)
  472. DOS _NFILES
  473. lea.l ($0004,sp),sp
  474. tst.l d0
  475. rts
  476. L000516:
  477. tst.b (a0)+
  478. bne.s L000516
  479. subq.l #1,a0
  480. rts
  481. L00051e:
  482. move.b (a1)+,(a0)+
  483. bne.s L00051e
  484. subq.l #1,a0
  485. rts
  486. L000526:
  487. move.b (a2)+,d0
  488. beq.s L00055c
  489. cmp.b #$20,d0 ;' '
  490. beq.s L000526
  491. cmp.b #$09,d0
  492. beq.s L000526
  493. cmp.b #$2d,d0 ;'-'
  494. beq.s L000542
  495. cmp.b #$2f,d0 ;'/'
  496. bne.s L00054a
  497. L000542:
  498. move.b (a2)+,d0
  499. beq.s L00055c
  500. bsr.s L00058a
  501. bra.s L000526
  502. L00054a:
  503. move.b d0,(a0)+
  504. move.b (a2)+,d0
  505. beq.s L00055c
  506. cmp.b #$20,d0 ;' '
  507. beq.s L00055c
  508. cmp.b #$09,d0
  509. bne.s L00054a
  510. L00055c:
  511. clr.b (a0)
  512. subq.l #1,a2
  513. rts
  514. L000562:
  515. move.b (a2)+,d0
  516. beq.s L000586
  517. cmp.b #$20,d0 ;' '
  518. beq.s L000562
  519. cmp.b #$09,d0
  520. beq.s L000562
  521. cmp.b #$2d,d0 ;'-'
  522. beq.s L00057e
  523. cmp.b #$2f,d0 ;'/'
  524. bne.s L000562
  525. L00057e:
  526. move.b (a2)+,d0
  527. beq.s L000586
  528. bsr.s L00058a
  529. bra.s L000562
  530. L000586:
  531. subq.l #1,a2
  532. rts
  533. L00058a:
  534. or.b #$20,d0
  535. cmp.b #$64,d0 ;'d'
  536. beq.s L0005c0
  537. cmp.b #$6e,d0 ;'n'
  538. beq.s L0005ca
  539. cmp.b #$74,d0 ;'t'
  540. beq.s L0005d4
  541. cmp.b #$76,d0 ;'v'
  542. beq.s L0005de
  543. cmp.b #$75,d0 ;'u'
  544. beq.s L0005e8
  545. cmp.b #$71,d0 ;'q'
  546. beq.s L0005f2
  547. cmp.b #$73,d0 ;'s'
  548. beq.s L0005fc
  549. cmp.b #$63,d0 ;'c'
  550. beq.s L000606
  551. rts
  552. L0005c0:
  553. move.b #$01,(L000895)
  554. rts
  555. L0005ca:
  556. move.b #$01,(L000896)
  557. rts
  558. L0005d4:
  559. move.b #$01,(L000897)
  560. rts
  561. L0005de:
  562. move.b #$01,(L000898)
  563. rts
  564. L0005e8:
  565. move.b #$01,(L000899)
  566. rts
  567. L0005f2:
  568. move.b #$01,(L00089a)
  569. rts
  570. L0005fc:
  571. move.b #$01,(L00089b)
  572. rts
  573. L000606:
  574. cmpi.w #$020e,(L00089e)
  575. bcc.s L00061a
  576. pea.l (L0007d0,pc)
  577. DOS _PRINT
  578. addq.l #4,sp
  579. rts
  580. L00061a:
  581. move.b #$01,(L00089c)
  582. rts
  583. .data
  584. L000624:
  585. .dc.b 'X68k Copyall v1.20 Copyright 1989-93 SHARP/Hudson',$0d,$0a,$00
  586. L000658:
  587. .dc.b '使用法:copyall [スイッチ] 転送元ファイル名 転送先パス名',$0d,$0a
  588. .dc.b $09,'/d',$09,'サブディレクトリはコピーしない (copy)',$0d,$0a
  589. .dc.b $09,'/t',$09,'転送元が新しい場合のみコピーする(tar)',$0d,$0a
  590. .dc.b $09,'/n',$09,'転送先が古い場合のみコピーする(tar/n)',$0d,$0a
  591. .dc.b $09,'/u',$09,'ファイル名を大文字にしてコピーします',$0d,$0a
  592. .dc.b $09,'/v',$09,'チェックのみで実際は転送しない',$0d,$0a
  593. .dc.b $09,'/s',$09,'システムファイルはコピーしない',$0d,$0a,$00
  594. L000786:
  595. .dc.b '/c',$09,'転送先のファイルの存在をチェックをしない',$0d,$0a
  596. .dc.b $09,'/q',$09,'起動後、実行確認をする',$0d,$0a,$00
  597. L0007d0:
  598. .dc.b 'このOSでは、/cオプションは無効です。',$0d,$0a
  599. L0007f8:
  600. .dc.b 'copy ',$00
  601. L0007fe:
  602. .dc.b $20,$00
  603. L000800:
  604. .dc.b $0d,$0a,$00
  605. L000803:
  606. .dc.b 'mkdir ',$00
  607. L00080a:
  608. .dc.b 'ディスクがいっぱいです、入れ替えてください(CTRL-Cで中止)',$00
  609. L000843:
  610. .dc.b 'コピーできませんでした',$0d,$0a,$00
  611. L00085c:
  612. .dc.b 'ディスクをセットして何かキーを押して下さい(CTRL-Cで中止)',$00
  613. L000895:
  614. .dc.b $00
  615. L000896:
  616. .dc.b $00
  617. L000897:
  618. .dc.b $00
  619. L000898:
  620. .dc.b $00
  621. L000899:
  622. .dc.b $00
  623. L00089a:
  624. .dc.b $00
  625. L00089b:
  626. .dc.b $00
  627. L00089c:
  628. .dc.b $00,$00
  629. .bss
  630. L00089e:
  631. .ds.w 1
  632. L0008a0:
  633. .ds.w 1
  634. L0008a2:
  635. .ds.b 92
  636. L0008fe:
  637. .ds.b 92
  638. L00095a:
  639. .ds.b 22
  640. L000970:
  641. .ds.b 32
  642. End:
  643. .end Start