.import         popa, _gotoxy, cputdirect, setcursor
         .importzp       tmp1
 
+.ifndef __ATARI5200__
+CHRCODE =       $12+64
+.else
+CHRCODE =       14
+.endif
+
 _chlinexy:
         pha                     ; Save the length
         jsr     popa            ; Get y
         cmp     #0              ; Is the length zero?
         beq     L9              ; Jump if done
         sta     tmp1
-L1:     lda     #$12+64         ; Horizontal line, screen code
+L1:     lda     #CHRCODE        ; Horizontal line, screen code
         jsr     cputdirect      ; Direct output
         dec     tmp1
         bne     L1
 L9:     jmp     setcursor
-
-
-
-
 
         .import         popa, _gotoxy, putchar, setcursor
         .importzp       tmp1
 
+.ifndef __ATARI5200__
+CHRCODE =       $7C             ; Vertical bar
+.else
+CHRCODE =       1               ; exclamation mark
+.endif
+
 _cvlinexy:
         pha                     ; Save the length
         jsr     popa            ; Get y
         sta     tmp1
 L1:     lda     COLCRS
         pha
-        lda     #$7C            ; Vertical bar
+        lda     #CHRCODE        ; Vertical bar
         jsr     putchar         ; Write, no cursor advance
         pla
         sta     COLCRS
         dec     tmp1
         bne     L1
 L9:     jmp     setcursor
-
-
-
 
--- /dev/null
+.include "../atari/cclear.s"
 
--- /dev/null
+.include "../atari/chline.s"
 
--- /dev/null
+;
+; from Atari computer version by Christian Groessler, 2014
+;
+; clock_t clock (void);
+; unsigned _clocks_per_sec (void);
+;
+
+        .export         _clock, __clocks_per_sec
+        .importzp       sreg
+
+        .include        "atari5200.inc"
+
+
+.proc   _clock
+
+        ldx     #5              ; Synchronize with Antic, so the interrupt won't change RTCLOK
+        stx     WSYNC           ; while we're reading it. The synchronization is done same as
+@L1:    dex                     ; in SETVBLV function in Atari OS.
+        bne     @L1
+        stx     sreg+1          ; Byte 3 is always zero
+        stx     sreg            ; Byte 2 is always zero, too
+        lda     RTCLOK+1
+        ldx     RTCLOK
+        rts
+
+.endproc
+
+
+.proc   __clocks_per_sec
+
+        ldx     #$00            ; Clear high byte of return value
+        lda     #60
+        rts
+
+.endproc
 
--- /dev/null
+.include "../atari/cvline.s"
 
--- /dev/null
+;
+; Ullrich von Bassewitz, 2003-08-12
+;
+; unsigned char __fastcall__ _sysuname (struct utsname* buf);
+;
+
+        .export         __sysuname, utsdata
+
+        .import         utscopy
+
+        __sysuname = utscopy
+
+;--------------------------------------------------------------------------
+; Data. We define a fixed utsname struct here and just copy it.
+
+.rodata
+
+utsdata:
+        ; sysname
+        .asciiz         "cc65"
+
+        ; nodename
+        .asciiz         ""
+
+        ; release
+        .byte           ((.VERSION >> 8) & $0F) + '0'
+        .byte           '.'
+        .byte           ((.VERSION >> 4) & $0F) + '0'
+        .byte           $00
+
+        ; version
+        .byte           (.VERSION & $0F) + '0'
+        .byte           $00
+
+        ; machine
+        .asciiz         "Atari5200"
+
+
+