33; TODO : move MALLOC macro after arg test : it avoid a malloc if there is no parameter on command line
44
55.proc _man
6- MAN_SAVE_MALLOC_PTR:=userzp
7- MAN_SAVE_MALLOC_FP :=userzp+2
6+ MAN_SAVE_MALLOC_PTR :=userzp
7+ MAN_FP :=userzp+2
8+ man_xmainargs_ptr :=userzp+4
9+
10+ BRK_KERNEL XMAINARGS
11+ sta man_xmainargs_ptr
12+ sty man_xmainargs_ptr+1
13+ cpx #$01 ; No args ?
14+ bne start_man
15+ jmp error
16+ start_man:
817 ;
918 MALLOC (.strlen("/usr/share/man/" )+FNAME_LEN+1 +4 ) ; length of /usr/share/man/ + 8 + .hlp + \0
1019 ; FIXME test OOM
1120 TEST_OOM
1221
13- start_man:
22+
1423 sta MAN_SAVE_MALLOC_PTR
1524 sta RESB
1625 sty MAN_SAVE_MALLOC_PTR+1
@@ -22,17 +31,13 @@ start_man:
2231 sta RES+1
2332 jsr _strcpy ; MAN_SAVE_MALLOC_PTR contains adress of a new string
2433
25- ; get the first parameter
26- ldx #$01
27- jsr _orix_get_opt
28- bcc error ; there is not parameter, jumps and displays str_man_error
29- STRCPY ORIX_ARGV,BUFNOM
30-
31- ; strcat(ptr,ORIX_ARGV)
32- lda #<ORIX_ARGV
34+ ldx #$01 ; get arg
35+ lda man_xmainargs_ptr
36+ ldy man_xmainargs_ptr+1
37+ BRK_KERNEL XGETARGV
38+
3339 sta RESB
34- lda #>ORIX_ARGV
35- sta RESB+1
40+ sty RESB+1
3641
3742 lda MAN_SAVE_MALLOC_PTR
3843 sta RES
@@ -59,52 +64,56 @@ start_man:
5964 cmp #$FF
6065 bne next
6166
62-
63-
6467 ; Not found
6568 ; Free memory for path
6669 lda MAN_SAVE_MALLOC_PTR
6770 ldy MAN_SAVE_MALLOC_PTR+1
6871 BRK_KERNEL XFREE
6972
70- PRINT txt_file_not_found
71- ldx #$01
72- jsr _orix_get_opt
73- PRINT BUFNOM
73+ print txt_file_not_found
74+
75+ ldx #$01 ; get arg
76+ lda man_xmainargs_ptr
77+ ldy man_xmainargs_ptr+1
78+ BRK_KERNEL XGETARGV
79+ BRK_KERNEL XWSTR0
80+
7481 RETURN_LINE
7582
7683 rts
7784error:
7885 ; Free memory for path
7986 lda MAN_SAVE_MALLOC_PTR
8087 ldy MAN_SAVE_MALLOC_PTR+1
81- BRK_ORIX XFREE
82- PRINT str_man_error
88+ BRK_KERNEL XFREE
89+ print str_man_error
8390 rts
8491
8592next:
86- sta MAN_SAVE_MALLOC_FP
87- stx MAN_SAVE_MALLOC_FP +1
93+ sta MAN_FP
94+ stx MAN_FP +1
8895 CLS
8996 SWITCH_OFF_CURSOR
9097 ; We read 1080 bytes
91- FREAD SCREEN, 1080 , 1 , 0
98+ fread SCREEN, 1080 , 1 , MAN_FP
99+ ; FREAD SCREEN, 1080, 1, 0
92100
93101cget_loop:
94- BRK_ORIX XRDW0
102+ BRK_KERNEL XRDW0
95103 bmi cget_loop
96104 ; A bit crap to flush screen ...
105+ ; read again ?
97106out:
98- BRK_ORIX XHIRES
99- BRK_ORIX XTEXT
107+ BRK_KERNEL XHIRES
108+ BRK_KERNEL XTEXT
100109
101110 SWITCH_ON_CURSOR
102111
103112 lda MAN_SAVE_MALLOC_PTR
104113 ldy MAN_SAVE_MALLOC_PTR+1
105- BRK_ORIX XFREE
114+ BRK_KERNEL XFREE
106115
107- fclose(MAN_SAVE_MALLOC_FP )
116+ fclose(MAN_FP )
108117
109118 rts
110119
0 commit comments